30 marzo 2016


Que levante la mano quien gestione uno o más servidores de correo electrónico. Y que sigan con la mano levantada los que tengan esos servidores de forma dedicada. 

A la hora de configurar un servidor de correo, hay varios puntos a tener en cuenta: que si no sea open relay, que requieran autenticación antes de envío, que los algoritmos de autenticación y firma no sean débiles, que los certificados utilizados tengan una longitud de clave adecuada, etc, etc,...   

Sin embargo, el post de hoy tiene una mezcla entre seguridad y sistemas, y está pensado en verificar varios puntos que hacen que otros servidores de correo verifiquen que el servidor es correcto y que no marque como spam, o no le asigne puntos al menos por las cabeceras o por el servidor de donde viene. Si el contenido del correo contiene viagra, Rolex, invoice, archivos con doble extensión, etc,... pues ya no se puede garantizar, pero al menos que el servidor esté lo más correcto posible.

Para ello vamos a utilizar un servicio online gratuito, llamado www.mail-tester.com. Se nos muestra una dirección de correo aleatoria de mail-tester.com.


La forma de hacer la prueba es tan fácil como enviar un correo electrónico desde un cliente que salga desde el servidor de correo electrónico que queremos comprobar a la dirección propuesta por mail-tester.

Una vez enviado, se pulsa en "Then Check Your Score" y se puede ver el análisis realizado por el servicio. Inicialmente se ve un resumen:


¿Qué puntos de control se verifican?
  • Análisis con Spamassassin
  • Comprobaciones de SPF, DKIM, DMARC, Resolución inversa 
  • Verificación del contenido del correo
  • Verificación en listas negras o blacklists
Viéndolo en detalle, la primera verificación la hacen con spamassassin. Es decir, qué diría este software sobre el correo que enviaste. Hay ciertas comprobaciones que spamassassin ya hace, que serán repetidas con las que hace mail-tester posteriormente, pero es una métrica tan válida como otra cualquiera.



Las más importantes, para mi gusto, son las siguientes: 

  • Se comprueban registros SPF, que como se puede ver en el enlace, son registros DNS de tipo TXT que autoriza a qué máquinas (por dirección IP, redes en formato CIDR o por nombre DNS) pueden enviar correos electrónicos. El servidor que recibe el email, comprueba que la dirección IP de donde viene la comunicación de envío de correo está dentro de los hosts autorizados.
  • Se comprueba la firma DKIM que se envía en las cabeceras del correo electrónico. No es el objetivo explicar cómo se configura DKIM, pero en esencia, el servidor de correo emite una firma que va en la propia cabecera. Dicha firma se puede verificar con la clave pública, complementaria a la privada que emitió la firma, que se puede rescatar de un registro DNS de tipo TXT. Dicho registro viene notificado en la propia cabecera DKIM. Si la firma es correcta, es otra forma de verificar que el servidor de correo está autorizado para enviar el mensaje analizado. Hay una buena saga de posts de Chema Alonso que explican en detalle los internals de DKIM



  • Se comprueba la existencia y validez de un registro de tipo DMARC. No conocía bien este tipo de registro (de hecho la primera vez que hice la prueba me dio que tenía fallo por este item). Su funcionamiento está muy bien documentado en https://dmarc.org/overview/. Si sólo queremos su existencia (con esto ya no nos penaliza la comprobación), pero sin aplicar ninguna política, tendrá que tener un formato como este: _dmarc.securizame.com TXT "v=DMARC1\; p=none".
  • Comprobación de equivalencia de resolución inversa de DNS de la IP origen, con el dominio que envía el correo electrónico. Puede que esto no sea idéntico siempre, si se piensa en que un servidor de correo puede albergar cientos de dominios, y la resolución inversa de la IP, corresponde a uno de ellos (o incluso a ninguno, si se piensa en un ISP). 


La última de las comprobaciones se hacen relativas a la dirección IP, que no se encuentre en ninguna lista negra (de las muchas que hay). Es lo que hacía la herramienta AmISpammer, uno de mis proyectos de abandonware.



Respecto a la configuración de DKIM, SPF y DMARC, tenéis una excelente guía para entender el funcionamiento y afinamiento en la wiki de Zimbra.

Como he dicho al principio, no garantizamos la seguridad del servidor de correo por pasar correctamente esta checklist, pero por lo menos, os aseguráis (o en una muy buena medida) que la mayoría de los correos electrónicos que envíe vuestro servidor, no irán a parar a la carpeta Spam, si van dirigidos a servidores que aplican políticas de antispam estrictas como Gmail, Outlook, etc,...