Como ya vimos en el anterior post de esta serie, Creando un sistema de correo profesional con Zimbra, ya tenemos nuestro Zimbra funcionando, pero con la instalación básica no conseguimos que sea tan profesional como nuestro título pretende que sea :p
Por lo tanto, vamos a realizar una serie de configuraciones, no solo a nivel de Zimbra, que nos ayudarán para conseguir éste propósito, así que vamos a por ello.
Comprobaciones DNS
Los sistemas de correo electrónico basan mucha de su seguridad en cómo está la configuración DNS, como por ejemplo la utilización de listas negras (RBL), la resolución FQDN, si se cuenta con configuración SPF … Por lo tanto, vamos a hacer que nuestro Zimbra realice estas comprobaciones.
Listas negras (RBL)
Las listas negras es un intento de parar el spam en la jungla que es hoy día internet. Básicamente su funcionamiento es el de realizar un listado de IPs que son marcadas como spammers debido a distintos criterios. Para la configuración iremos a la consola de administración de nuestro servidor Zimbra, yendo a través del navegador web a la dirección https://[SERVER]:7071 , donde SERVER es la IP o la resolución DNS de nuestro servidor
En nuestro apartado de administración de Zimbra iremos a Configurar → Configuración General →MTA y aquí bajaremos a la sección Comprobaciones DNS, donde añadiremos las siguientes listas negras por cada una de las secciones que vemos.
- Lista RBL:
- zen.spamhaus.org
- bl.spamcop.net
- psbl.surriel.com
- Lista de RHSBL del cliente:
- dbl.spamhaus.org
- multi.surbl.org
- Lista de RHSBL del remitente:
- multi.surbl.org
Con esto ya tenemos varias listas configuradas para que la detección de emisores de spam sea mejor y haya mails que sean rechazados automáticamente.
Modificación DNS primario de Zimbra
Como os acordaréis, en el primer post utilizamos un servidor temporal de DNS para la instalación. Dado que es temporal, tenemos que quitarlo de la configuración de Zimbra y añadir un DNS primario real. Para comprobar el DNS primario que usa:
zimbra@mail:~$ zmprov gs `zmhostname` zimbraDNSMasterIP # name mail.irontec.com zimbraDNSMasterIP: 192.168.90.1
Por lo tanto, tenemos que modificarlo para que use un servidor real y en producción. Vamos utilizar el de Google:
zimbra@mail:~$ zmprov ms `zmhostname` -zimbraDNSMasterIP 192.168.90.1 zimbra@mail:~$ zmprov ms `zmhostname` +zimbraDNSMasterIP 8.8.8.8 zimbra@mail:~$ zmprov gs `zmhostname` zimbraDNSMasterIP # name mail.irontec.com zimbraDNSMasterIP: 8.8.8.8
SPF
Para la comunicación entre servidores de correo es muy habitual la utilización de SPF. Este sistema lo que hace es tener en cuenta los registros DNS de nuestro dominio para asegurar que el emisor de un correo electrónico está autorizado para ello.
Es decir, si alguien intenta mandar un mail utilizando nuestro dominio irontec.com el servidor de correo receptor debería realizar una comprobación de si el emisor está permitido para poder mandar mails en nuestro nombre. En caso de que el emisor no esté autorizado, el servidor receptor debería rechazar el mail ya que no está autorizado para poder mandar mails en nuestro nombre.
Para realizar esta configuración deberemos crear un registro nuevo de tipo TXT en nuestro servidor DNS. Normalmente tendremos el servidor DNS en un proveedor que nos facilitará esta tarea mediante un panel de control.
El formato del registro TXT debe ser: v=spf1 a mx a:www2.irontec.com ip4:123.4.5.6 -all
La explicación del formato es sencilla, primero indicamos v=spf1 para indicar que se trata de un registro SPF, y posteriormente quiénes están autorizados a poder mandar mails en el que está configurado. En el caso de este ejemplo:
- v=spf1 : Indica que el registro TXT es para la comprobación SPF
- a : indica que el servidor con registro A está autorizado
- mx : indica que el servidor con registro MX de nuestro dominio irontec.com también está autorizado
- a:www2.irontec.com : El servidor cuya IP coincide con el registro A del dominio www2.irontec.com está autorizado
- ip4:123.4.5.6 : El servidor con IP 123.4.5.6 está autorizado
- -all : Tal como veis en la siguiente tabla, con esto indicamos que el resto de servidores no están autorizados salvo que coincidan con las reglas anteriores
Parámetro | Resultado | Significado |
---|---|---|
+all | pass | Permite todo los mails, como si no hubiese nada configurado (No recomendable) |
-all | fail | Todos los servidores que no coincidan con las reglas anteriores no están permitidos para mandar mails. |
~all | softfail | Permite mandar mails, pero si algo va mal será marcado como «softfail». |
DKIM
El método DKIM (DomainKeys Identified Mail) sirve para asociar el nombre del dominio y el email, permitiendo a una persona asumir la responsabilidad de un email.
Básicamente el sistema DKIM lo que hace es que el servidor emisor firma los mails de salida, y el servidor receptor del correo realiza una comprobación DNS para asegurar que el mail firmado es válido contra la clave pública añadida como registro DNS.
Para ello, desde la consola de nuestro servidor Zimbra ejecutaremos, como usuario zimbra, el siguiente comando:
root@mail:~# su - zimbra zimbra@mail:~$ /opt/zimbra/libexec/zmdkimkeyutil -a -d irontec.com DKIM Data added to LDAP for domain irontec.com with selector 0F12345-C5DB-35E1-134A-7EEE12C2BA47 Public signature to enter into DNS: 0F12345-C5DB-35E1-134A-7EEE12C2BA47._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=M1234567890GC123456789Ib3DQEBAQU123456789BiQKBgQCyyhoer123456789ts4/oj064WpCi+wPo0gvWwhS12345678927yAbHy9+V3gt123456789jOBz123456789m0DE1jheVY3KqB4u/OGU123456789d4tid123456789YeJKQhSbLFjZe/IZq123456789XDNLLEQIDAQAB" ) ; ----- DKIM key 0F12345-C5DB-35E1-134A-7EEE12C2BA47 for irontec.com
Ya hemos generado la clave, y lo que nos ha sacado como resultado del comando es la clave pública que ahora tendremos que añadir en nuestro DNS. Si os fijáis en la salida del comando, nos pone «Public signature to enter into DNS«, es decir, tenemos que crear un registro de tipo TXT como, como dominio que sea 0F12345-C5DB-35E1-134A-7EEE12C2BA47._domainkey.irontec.com y que el valor que contenga sea lo que nos ha sacado el comando:
v=DKIM1; k=rsa; p=M1234567890GC123456789Ib3DQEBAQU123456789BiQKBgQCyyhoer123456789ts4/oj064WpCi+wPo0gvWwhS12345678927yAbHy9+V3gt123456789jOBz123456789m0DE1jheVY3KqB4u/OGU123456789d4tid123456789YeJKQhSbLFjZe/IZq123456789XDNLLEQIDAQAB
Limitar tamaño del LDAP interno
Zimbra hace uso de un servidor LDAP interno para el almacenamiento de información, pero que por defecto está configurado para que su almacenamiento llegue hasta los 80GB. Vamos a limitarlo para que no sea tanto, parando primero zimbra:
root@mail:# su - zimbra zimbra@mail:~$ zmcontrol stop Host mail.irontec.com Stopping vmware-ha...skipped. [...] zimbra@mail:~$ zmlocalconfig -e ldap_db_maxsize=67108864 zimbra@mail:~$ zmlocalconfig -e ldap_accesslog_maxsize=536870912 zimbra@mail:~$ zmcontrol start Host mail.irontec.com Starting ldap...Done. [...]
Certificado SSL
No voy a profundizar en este apartado, ya que en este blog ya hemos hablado de qué son los certificados SSL realmente seguros (SHA-2) y cómo crearlos para Zimbra. Por lo tanto utilizo éste apartado a modo de recordatorio para que no os olvidéis de generar vuestro certificado e instalarlo en Zimbra.
Aparte de la generación del certificado, para que nuestra instalación tenga la mayor puntuación de securización en el SSL Labs test tenemos que hacer una pequeña modificación en nuestra instalación de Zimbra. Ejecutaremos:
root@mail:~# cd /opt/zimbra/conf root@mail:/opt/zimbra/conf# openssl dhparam -out dhparams.pem 2048 Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time [...] root@mail:/opt/zimbra/conf# chown zimbra:zimbra dhparams.pem
Ahora tenemos que editar los ficheros /opt/zimbra/conf/nginx/templates/nginx.conf.web.https.default.template y /opt/zimbra/conf/nginx/templates/nginx.conf.web.https.template (tendremos que modificar los permisos de escritura), y nos aseguramos que aparezcan las siguientes 4 nuevas líneas:
server { [...] ssl_dhparam /opt/zimbra/conf/dhparams.pem; add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;"; ssl_session_cache shared:SSL:50m; ssl_session_timeout 5m; include ${core.includes}/${core.cprefix}.web.https.mode-${web.mailmode}; [...]
Y por último, realizaremos la modificación de los tipos de cifrado que nuestro servidor utilizará para comunicarse a través del navegador web:
zimbra@mail:~$ zmprov mcf zimbraReverseProxySSLCiphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4' zimbra@mail:~$ zmproxyctl restart Stopping nginx...done. Starting nginx...done.
Si ahora comprobamos nuestro dominio, ya tendremos la máxima puntuación:
Configuraciones extra
En este apartado vamos a explicar ciertas configuraciones extra, que aunque no son necesarias, probablemente en algún momento lleguemos a realizarlas, y que siempre viene bien tenerlas en cuenta.
Tamaño de adjuntos
Zimbra por defecto limita el tamaño de los adjuntos a 10000KB, que en algunos casos puede ser un poco limitado. Si queremos modificar este tamaño deberemos ir a Configurar → Configuración General →MTA y modificar el apartado «Tamaño máximo del mensaje«. Al modificar este tamaño, también deberemos modificar el de «Tamaño máximo de un archivo cargado desde el escritorio» cuya directiva se encuentra en Configurar → Configuración General → Información General
Clase de servicio
Las clase de servicio, o COS a partir de ahora, es una manera sencilla de realizar la configuración de características a las cuentas de forma sencilla. Como ejemplo, si queremos limitar a varias cuentas para que el tamaño de su buzón sea de 1GB (en lugar de ilimitado), podemos crear un COS nuevo llamado limitado y en el apartado avanzado modificar la opción «espacio de almacenamiento disponible para la cuenta (MB)» y limitarlo a 1024.
Podremos editar las cuentas y modificar su «Configuración de cuenta» y lo dejaríamos así:
Por supuesto, la limitación del tamaño del buzón sólo es una muestra de todo lo que se puede realizar. Podemos limitar para que no haya acceso POP, que la cuenta no pueda tener maletín, el acceso a ciertos zimlets…
Conclusión
Tras estos pasos ya podemos decir que tenemos un sistema de correo profesional utilizando Zimbra, que puede ser puesto en producción y utilizado por nuestros usuarios. Hay que tener en cuenta que existen muchas más posibilidades de configuración, y que éstas deberían ser las mínimas a tener en cuenta. Iremos actualizando este post con configuraciones y mejoras extra cada cierto tiempo.
¡Dejadnos un comentario con las configuraciones imprescindibles que hacéis vosotros para mejorar este post!
1 Comentario
¿Por qué no comentas tú también?
Enhorabuena por el post! Fantástico!
Community Manager Girona Hace 9 años
[…] Zimbra como servidor de correo (Creando un sistema de correo profesional con Zimbra 1 y Creando un sistema de correo profesional con Zimbra 2), ya que vamos a centrar la instalación en un servidor con Zimbra 8.6 Open Source Edition. Tened […]
Mejorando nuestro servidor de correo Zimbra (1/2): Mailscanner | Blog Irontec Hace 9 años
Excelente el post, me sirvió de mucho. He instalado zimbra 8.6 en una instancia ec2, y después de seguir sus instrucciones he podido hacer que funcione en cuanto al envío de correos, pero no puedo recibir correos de otros dominios. Esto pasaría si el puerto 25 está cerrado? He leído que debe estar abierto para poder recibir correos (y toda mi vida pensé que sólo era para enviar). En todo caso, si lo abro, como hacer que mi servidor no se convierta en un open relay? Se puede abrir sólo para tráfico de entrada y no de salida (en amazon)?. Y por otro lado, donde configuro el puerto de salida de correos en Zimbra? No se cual está usando en este momento. Pienso instalar también mailscanner siguiendo su tutorial, pues lo utilizo a diario en la empresa y me parece excelente. Muchas gracias!
Italo tejada Hace 9 años
Hola Rubén, excelente artículo, es un gran aporte a la comunidad! Quería además pedirte que me saques de una duda: Si tengo varios dominios configurados en un mismo servidor Zimbra, supongo que debo crear un registro SPF y generar las claves públicas DKIM y registros de TXT en el DNS para cada uno de los diferentes dominios, cierto? Te agradezco tu voluntad y tiempo, éxitos!
Enrique Arenas Hace 8 años
[…] capítulo en nuestra travesía por Zimbra. Tras instalar, configurar, securizar contra el spam y facilitar la administración de nuestro Zimbra, hoy vamos a ver cómo […]
Sincronizar Exchange ActiveSync con Z-Push y Zimbra | Blog Irontec Hace 8 años
Geniales post para la instalación, seguirán con la serie de Correo Profesional??
Sebastian Hace 8 años
[…] actores, parece que me empiezo a encasillar hablando de Zimbra (donde ya hicimos la instalación y configuración), con la creación de un sistema antispam basado en Mailscanner, al que añadimos una aplicación […]
Novedades en las nuevas versiones de Zimbra y Mailscanner Hace 8 años
[…] tener un sistema de correo electrónico seguro y profesional, ya vimos cómo instalar Zimbra 8.6, cómo configurarlo, y por último cómo instalar MailScanner. Hoy toca mejorar el post anterior para poder hacerlo […]
Mejorando nuestro servidor Zimbra (2/2): MailWatch Hace 7 años
Excelente tutorial estimado, te consulto si tienes algun manual para instalar Zimbra en centos version 4
Domingo Hace 7 años
Hola Domingo,
No te recomiendo hacer la instalación en un CentOS v4, ya que su ciclo de vida terminó en el 2012. Aparte, la última versión de Zimbra sólo está disponible para CentOS 6 o 7, y yo iría a la última versión del sistema operativo.
@Enrique , si, tendrías que generar un registro DKIM para cada dominio y su correspondiente registro SPF
@Italo , por defecto, Zimbra no hace de relay, sólo para la LAN en la que está configurado, pero se puede cambiar para que sólo acepte mails a su «/32».
Perdonad no haber respondido antes
Rubén Gómez Olivencia Hace 7 años
Queremos tu opinión :)