Mejorar la Reputacion de tu Servidor de Correo

Trucos para evitar que tu Servidor de correo no caiga en filtros Anti-SPAM.

Todos Sabemos que el correo SPAM es un problema.
Y desde hace unos años se analizan todos los correos y su procedencia para determinar si son o no spam.

Uno mecanismos mas utilizados ultimamente es analizar la procendencia del correo es lo que se conoce como la reputacion del servidor del que sale el correo.

Por lo cual si en nuestro servidor no esta todo en regla.
Nuestros correos nunca se entregaran al destinatario.

PEOR… Ya no solo basta con configurar correctamente el servidor.
Si no que tambien hay que configurar:

  • La resolución DNS inversa (rDNS)
  • Crear una Firma DKIM valida
  • Verificacion DMARC
  • Certificados ssl validados por una autoridad de certificacion.
  • Comprobar que no estamos en una Lista RBL/Negra. (si es asi hay que solicitar el desbloqueo)
  • Superar SPF (Sender Policy Framework)

Por suerte ya hay servicios analizadores de la reputacion de correo.
Uno de los mas sencillos es: - http://www.mail-tester.com/ (gracias R. por la info) portada mail-tester.com
Aunque la pagina de portada parece un poco infantil. (parece la portada de un cuento)

Esta web destaca por su sencillez / potencia.
como se ve en la portada tan solo hay que enviar un correo a xxxx@mail-tester.com y recargar la pagina.

Una vez enviado el correo pulsamos el enlace de comprueba tu puntuacion.
y accedemos al informe.


Basicamente se comprueba:

  • Que la ip del servidor de correo esta correctamente registrada en los DNS del dominio del correo
    esto se puede comprobar con el siguiente comando dig +short TXT @8.8.8.8 dominioacomprobar.es

    em50l@jejo.es$ dig +short TXT @8.8.8.8 dominioacomprobar.es
    
    "v=spf1 a mx ip4:11.22.33.44 ~all"
    
    Segun esto la ip 11.22.33.44 esta registrada en el dominio dominioacomprobar.es
    O mas especificamente con spfquery -sender=direccion@correo.es --ip 11.22.33.44
    em50l@jejo.es$ spfquery -sender=usuario@dominioacomprobar.es –ip 11.22.33.44
    pass
    
    spfquery: domain of dominioacomprobar.es designates 11.22.33.44 as permitted sender
    Received-SPF: pass
    

  • Que la firma DKIM del mensaje coincide con el hash DKIM almacenado en el DNS Basicamente al hacer una consulta dkim a tu dominio debaria aparecer una clave(key). dicha clave se compara con la clave DKIM que se envia en las cabeceras de correo.

    em50l@jejo.es$ dig +short TXT dkim._domainkey.dominioacomprobar.es
    "v=DKIM1; p=MCSqGSIb3D….(KEY RSA)….b87bPMQIDAQAB"
    em50l@jejo.es$ 
    
    Podras generar un par de claves RSA para que los correos queden validados con esta tecnica aqui:
    https://dkimcore.org/tools/keys.html
    Aunque recomiendo generar un juego de claves a partir del certificado https del servidor web (si es un certificado valido claro esta)

  • Que el registro rDNS de la ip del emisor de correo coincide con el dominio.

    em50l@jejo.es$ nslookup dominioacomprobar.es
    Server:     127.0.0.53
    Address:    127.0.0.53#53
    
    Non-authoritative answer:
    Name:   dominioacomprobar.es
    Address: 11.22.33.44
    
    em50l@jejo.es$ nslookup 11.22.33.44
    44.33.22.11.in-addr.arpa    name = dominioacomprobar.es.
    
    Authoritative answers can be found from:
    
    em50l@jejo.es$ 
    

  • Que el dominio tiene registro mx

    em50l@jejo.es$ nslookup -query=mx dominioacomprobar.es
    Server:     127.0.0.53
    Address:    127.0.0.53#53
    
    Non-authoritative answer:
    aruba.jejo.es   mail exchanger = 10 dominioacomprobar.es.
    
    Authoritative answers can be found from:
    
    em50l@jejo.es$ 

  • En el caso de que la respuesta anterior no sea una ip Tambien se comprueba Que el registro A(DNS) de la consulta anterior apunte a la ip adecuada

    em50l@jejo.es$ nslookup -query=A dominioacomprobar.es
    Server:     127.0.0.53
    Address:    127.0.0.53#53
    
    Non-authoritative answer:
    Name:   dominioacomprobar.es
    Address: 11.22.33.44
    
    em50l@jejo.es$ 

  • Y por ultimo comprobar que nuestro servidor no haya caido en una lista negra. esto sucede por ejemplo cuando nos han infectado con algun virus spammer. Si se mandan demasiados correos desde el mismo servidor este entra en lo que se llama una lista negra y a partir de ese momento todos los correos enviados por nuestro servidore seran rechazados hasta que solucionemos el problema y pidamos que nos saquen de dicha lista.
    O peor si tenemos un hosting o un servidor de correo compartido y qualquiera de los usuarios pilla un virus spammer o se dedica a mandar spam.
    Nosotros tambien caeremos en esa lista negra. y nuestros emails seran ignorados.
    hay muchas paginas para comprobar listas negras asi que simplemente busca en google.
    otra cosa es que quieras un servicio automatico si caes en una. (esto ya es mas complicado y da para otro articulo)


POC Prueba de concepto con un correo que vendria del dominio example.com

em50l@jejo.es$ ping -c 4 example.com
PING example.com (93.184.216.34) 56(84) bytes of data.
64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=1 ttl=56 time=252 ms
64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=2 ttl=56 time=174 ms
64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=3 ttl=56 time=195 ms
64 bytes from 93.184.216.34 (93.184.216.34): icmp_seq=4 ttl=56 time=217 ms

--- example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 174.075/209.926/252.695/29.137 ms
em50l@jejo.es$ 
em50l@jejo.es$ dig +short TXT @8.8.8.8 example.com
"v=spf1 -all"
em50l@jejo.es$ spfquery -sender=test@example.com --ip 93.184.216.34
fail
Please see http://www.openspf.org/Why?id=test%40example.com&ip=93.184.216.34&receiver=spfquery : Reason: mechanism
spfquery: domain of example.com does not designate 93.184.216.34 as permitted sender
Received-SPF: fail (spfquery: domain of example.com does not designate 93.184.216.34 as permitted sender) client-ip=93.184.216.34; envelope-from=test@example.com;
em50l@jejo.es$ dig +short TXT dkim._domainkey.example.com
em50l@jejo.es$ nslookup example.com
Server:     127.0.0.53
Address:    127.0.0.53#53

Non-authoritative answer:
Name:   example.com
Address: 93.184.216.34
Name:   example.com
Address: 2606:2800:220:1:248:1893:25c8:1946

em50l@jejo.es$ nslookup 93.184.216.34
** server can't find 34.216.184.93.in-addr.arpa: NXDOMAIN

em50l@jejo.es$ nslookup -query=mx example.com
Server:     127.0.0.53
Address:    127.0.0.53#53

Non-authoritative answer:
*** Can't find example.com: No answer

Authoritative answers can be found from:

em50l@jejo.es$ 

Como se puede ver falla casi todo

  • La ip del no esta registrada en el campo spf
  • falla spfquery
  • no hay registro rdns
  • no hay registro mx

Luego un correo proveniente de example.com deberia ser rechazado por la mayoria de los sistemas.

Posiblemente ni aparezca en la carpeta de spam.