17 octubre 2009

¿Llegan bien nuestros correos al destino?

Debido a las, cada vez más, innovadoras técnicas para determinar si un correo es fraudulento o no, los sistemas antispam generan cada vez más falsos negativos y positivos (correos que quedan en la carpeta de spam siendo lícitos y correos basura que llegan a destino).

Aquellos que disponemos de un servidor de correo con gestión propia del dominio, en muchas ocasiones pensamos si los correos (completamente lícitos) que salen desde nuestro servidor llegan correctamente a destino, o por algún motivo meramente "de servidor" (y no por el contenido del mensaje en sí) son catalogados como basura o directamente rechazados por el servidor final.

He tenido la experiencia al enviar desde mi servidor de correo, mensajes a cuentas de Hotmail, con que los destinatarios han de moverlos manualmente de la carpeta "correo no deseado" a Inbox.

En ocasiones la dirección IP en la que está el servidor, ha sido banneada (generalmente una subred completa de un ISP) por los servicios de listas negras como Spamhaus y te toca solicitar que al menos tu IP la pongan en una lista blanca, siguiendo un procedimiento para demostrarlo, claro está.

En general, cada servidor accede a un servicio de listas negras de direcciones IP. Al haber tantos diferentes, podemos consultar el estado de nuestra(s) IPs de envío de correo para ver si estamos en alguna en Whatsmyipaddress.com

Hotmail por ejemplo, verifica si el servidor de correo que envía, tiene un registro DNS llamado SPF (o TXT), una cadena del tipo "v=spf1 mx ptr ~all" que hay que configurar en el servidor DNS del gestor de dominios.

No obstante, muchas veces no sabes por qué motivo te clasifican como Spam. Para darnos una orientación de qué puede estar pasando, existe un servicio gratuito por parte de Port25, mediante el cual hay que mandar desde una cuenta del dominio, un correo a check-auth@verifier.port25.com.

En respuesta nos llega un correo con un informe detallado de la situación de nuestro dominio/sistema/servidor que nos permita intentar mejorar la calidad de los envíos.

Un ejemplo de este tipo de informes:

==========================================================
Summary of Results
==========================================================
SPF check: pass
DomainKeys check: neutral
DKIM check: neutral
Sender-ID check: pass
SpamAssassin check: ham

==========================================================
Details:
==========================================================

HELO hostname: XXXXXXXXX
Source IP: 213.XXX.YYY.ZZZ
mail-from: XX@YYYYYYYYY.es

----------------------------------------------------------
SPF check details:
----------------------------------------------------------
Result: pass
ID(s) verified: smtp.mail=XX@YYYYYYYY.es
DNS record(s):
YYYYYYYYY.es. 4500 IN TXT "v=spf1 mx ptr ~all"
YYYYYYYYY.es. 4500 IN MX 10 YYYYYYYYY.es.
YYYYYYYYY.es. 4500 IN A 213.XXX.YYY.ZZZ

----------------------------------------------------------
DomainKeys check details:
----------------------------------------------------------
Result: neutral (message not signed)
ID(s) verified: header.From= XX@YYYYYYYYY.es
DNS record(s):

----------------------------------------------------------
DKIM check details:
----------------------------------------------------------
Result: neutral (message not signed)
ID(s) verified:

NOTE: DKIM checking has been performed based on the latest DKIM specs
(RFC 4871 or draft-ietf-dkim-base-10) and verification may fail for
older versions. If you are using Port25's PowerMTA, you need to use
version 3.2r11 or later to get a compatible version of DKIM.

----------------------------------------------------------
Sender-ID check details:
----------------------------------------------------------
Result: pass
ID(s) verified: header.From= XX@YYYYYYYYY.es
DNS record(s):
YYYYYYYYY.es. 4500 IN TXT "v=spf1 mx ptr ~all"
YYYYYYYYY.es. 4500 IN MX 10 YYYYYYYYY.es.
YYYYYYYYY.es. 4500 IN A 213.XXX.YYY.ZZZ

----------------------------------------------------------
SpamAssassin check details:
----------------------------------------------------------
SpamAssassin v3.2.5 (2008-06-10)

Result: ham (2.7 points, 5.0 required)

pts rule name description
---- ---------------------- --------------------------------------------------
-0.0 SPF_HELO_PASS SPF: HELO matches SPF record
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 BAYES_50 BODY: Bayesian spam probability is 40 to 60%
[score: 0.4477]
2.7 AWL AWL: From: address is in the auto white-list

==========================================================
Explanation of the possible results (adapted from
draft-kucherawy-sender-auth-header-04.txt):
==========================================================

"pass"
the message passed the authentication test.

"fail"
the message failed the authentication test.

"softfail"
the message failed the authentication test, and the authentication
method has either an explicit or implicit policy which doesn't require
successful authentication of all messages from that domain.

"neutral"
the authentication method completed without errors, but was unable
to reach either a positive or a negative result about the message.

"temperror"
a temporary (recoverable) error occurred attempting to authenticate
the sender; either the process couldn't be completed locally, or
there was a temporary failure retrieving data required for the
authentication. A later retry may produce a more final result.

"permerror"
a permanent (unrecoverable) error occurred attempting to
authenticate the sender; either the process couldn't be completed
locally, or there was a permanent failure retrieving data required
for the authentication.


7 comments :

Antonio Sánchez dijo...

Comentas que en hotmail a veces ha tocado moverlos a mano...bueno, algo es algo!!

Yo haciendo pruebas, eso es lo que me ocurría en gmail, pero es que en hotmail ni siquiera llegaban!!

salu2, y enhorabuena por el blog

Manuel M. dijo...

Muchas gracias por tu post. Acabo de enviar el correo para ver si estoy "en la lista negra".

Si no es molestia, te planteo una duda: Tengo un dominio, con varias cuentas asociadas, y ya me han indicado varias veces que los correos no llegan o me avisan de que me han enviado correos, pero éstos no llegan. ¿ Cómo puedo comprobar que no estoy rechazando correos ?

Domingo dijo...

Conocía y había usado otros servicios similares, pero sólo analizaban la puntuación del SpamAssassin.

Este es más completo y tranquiliza el saber que tienes bien configurado el SPF.

Pj dijo...

Hola,

El tema de las black/white lists ha quedado ya un poco atrás. Ahora lo que se lleva es la reputación. No es mala idea ya que es hilar mucho más fino que decir malo o bueno y además permite al administrador decidir a partir de qué puntuación quiere tomar medidas (marcar correos, rechazar conexión tras primer paquete TCP, poner en cuarentena...)

Si tenéis ocasión echadle un ojo a los cacharros de Ironport para ver cómo trabajan.

Lorenzo Martínez dijo...

Gracias a todos por vuestros comentarios...

@Antonio Sanchez -> En Gmail alguna vez también tuve problemas, pero en general llegan bien los que envío.

@Manuel M. -> Principalmente, empieza por conocer el estado de la IP de tu servidor de correo en las diferentes "listas negras". También te recomiendo que hagas pruebas desde cuentas como hotmail/gmail/yahoo enviándote correos a tu propio servidor y echa un vistazo en los logs del mismo (así como la configuración de las medidas a tener en cuenta en la recepción de correos). Los logs del servidor te dicen si los correos se rechazan o si se aceptan.

@Domingo -> Tranqui que mis correos te llegan :D

@Pj -> Conozco Ironport y los sistemas basados en reputación (creo que fueron los primeros en implementarlo). Sin embargo, no he tenido buenas experiencias con ellos. Por ejemplo "terra.cl" lo implementó como mecanismo antispam y al enviar algún correo a un buzón de allí, Ironport rechazaba mi servidor por "reputación" (sin haber tenido ningún contacto con ellos) -> en este caso es por una mala configuración por defecto en sus equipos.

Fortimail implementa este tipo de mecanismos de reputación, así como otros basados en graylisting (ellos lo implementan como un funcionamiento que consiste en cortar la comunicación de un servidor de correo varias veces, confiando en que si el servidor que envía el correo es lícito, lo intentará enviar varias veces, en cambio un spammer no reintentará)

fernando dijo...

@Manuel M: Mirando los logs de salida del sistema de correos que estes usando podras saber si el envio fue o no realizado y en el caso que fuera rechazado, conocer el motivo. Hay veces que debido a tu ip (que este en una lista negra o que este haciendo muchos envios) los servidores de correos como hotmail, gmail o yahoo te "procesan" por un smtp mas "lento" y esto hace que el email tarde mas en llegar.

Yo tuve que configurar muchos servidores de correos para un sistema que realiza mas de 300 mil envios semanales, configure los servidores para que salieran firmados con DK, DKIM y SPF, pero siempre tenia problemas, ya sea con Yahoo, Gmail o con Hotmail. Esto, debido a que uno validaba dkim, otro solo dk, otro dkim y spf, otro solo spf, etc.

Actualmente, tengo configurados los servidores de correos para que los envios salgan firmados con DomainKey y con SPF, hasta el momento no hay problemas para llegar al inbox de los usuarios, salvo algunos casos.

Manuel M. dijo...

Gracias a ambos por los comentarios. Haré alguna prueba casera de pedir a todo el que conozca que me envíe correos.