Asegura la legitimidad de tu email con los registros SPF

22/09/2014 7 Comments

Los que nos dedicamos a la mensajería y la colaboración tenemos bien presente que el SPAM y el phishing son dos de los grandes enemigos a los que debemos enfrentarnos, dos tipos de amenzadas que tienen el denominador común de la legitimidad del email, entendiendo por email legítimo aquél que se ha generado por parte de una persona al cargo de un buzón que se encuentra en el dominio del remitente que indica.

Desde hace ya más de una década hay esfuerzos más o menos coordinados para luchar contra el correo basura a través de múltiples estrategias entre las que podemos comentar:

  • Crear listas negras que incluyan servidores SMTP que se encuentren configurados como open relay,una configuración que permite que un tercero pueda utilizar esa máquina para enviar correo usando a su vez identidades falsas.
  • Establecer una regulación de las listas de distribución y correos masivos por parte de organizaciones e individuales que garantice que la recepción de dichos mensajes es autorizada por parte de sus correspondientes destinatarios, que a su vez pueden anular su suscripción en cualquier momento.

Sin embargo, las distintas estrategias planteadas con anterioridad no han sido suficientemente prácticas para erradicar completamente estas malas prácticas. Es por ello que en este artículo os vamos a hablar del Sender Policy Framework (SPF), que es una solución eficaz a estos problemas a medida que se va implementando cada vez más en los servidores SMTP de todo el mundo.

El SPF es un sistema de validación de email extremadamente sencillo que se apoya en la infraestructura DNS de las distintas organizaciones. El concepto es bien sencillo: a través de nuestro DNS vamos a declarar qué servidores están autorizados a enviar email a nombre de los dominios que tenemos en nuestra propiedadComo la información de los DNS es pública, cualquier sistema SMTP puede consultarla para cotejar si el servidor desde el que el correo electrónico ha sido enviado figura como autorizado por el listado.

La sintaxis y la forma de operar con el registro es bien sencilla. Veamos un ejemplo real con el SPF de Plain Concepts:

Sin ser demasiado expertos podemos ver una serie de IPs declaradas. En efecto, todas ellas constituyen direcciones que potencialmente pueden tener la capacidad de enviar correos electrónicos a nombre de plainconcepts.com y que nosotros estamos declarando como legítimas.

¿Cómo construimos un buen SPF para nuestro dominio?

La sintaxis es tremendamente sencilla. El concepto clave es: si el mensaje no está gestionado o enviado por cualquiera de las cosas que declaremos, entonces especificamos una política por defecto. Para ello, seguimos los siguientes pasos para… imaginemos el dominio cantoso.com:

  1. Creamos un nuevo registro TXT en cantoso.com. Si quisiéramos declarar SPF en subdominios, deberemos crear una entrada por cada uno de ellos.
  2. El valor del registro debe comenzar por v=spf1 donde especificamos que vamos a declarar un SPF y su versión.
  3. Lista de máquina autorizadas a enviar correo en nombre de nuestro dominio. Para ello podemos usar las siguientes palabras clave:
    • A: si vamos a declarar un nombre declarado como registro A ó AAAA. Ejemplo: a:mail.plainconcepts.com
    • IP4: si vamos a declarar una dirección IPv4 o un rango. Ejemplo: ip4:2.212.170.67 ó ip4:192.168.0.0/24
    • IP6: similar al anterior, pero usando direcciones o rangos IPv6.
    • MX: si vamos a usar una resolución de registro MX. Ejemplo: mx:plainconcepts.com.
    • INCLUDE:  que utilizaremos si vamos a usar las políticas SPF declaradas en otro dominio, muy usada en entornos cloud. Ejemplo: include:spf.protection.outlook.com.
    • ALL: esta palabra clave hace match con todo.
    • La palabras clave A, MX, e INCLUDE implican resolución de nombres DNS. SPF limita a 10 consultas DNS, por lo que debemos tener cuidado de no abusar de los registros que hacen uso de ellas.
  4. Cerramos nuestra cadena con -all. Usando -all especifica que todo lo que no haya cumplido con los elementos anteriores, fallará la validación SPF. Una alternativa común es usar ~all que nos indica que los mensajes serán aceptados pero etiquetados.

Así, volvamos a echar un vistazo a la cadena de plainconcepts.com y el significado de cada elemento:

Examinemos los elementos:

  • v=spf1 es la declaración del registro SPF.
  • include:spf.protection.outlook.com deriva de nuestro uso de Office 365, por lo que incluimos sus servidores SMTP como autorizados para nuestro dominio.
  • include:sendgrid.net es similar al anterior, pero relativo a los servicios de SendGrid.
  • ip4: todas estas entradas están autorizadas a enviar correo en nuestro nombre.
  • -all: si la dirección IP del remitente no entra dentro de ninguna de las reglas anteriores, especificamos que la validación falla.

¿Sólo con establecer este registro estamos protegidos?

Lamentablemente no, aunque hemos hecho la parte que nos toca en relación a la declaración del SPF. El registro como tal sólo proporciona información a los MTA y es decisión de cada uno hacer validación mediante este mecanismo o no.

Si un servidor SMTP usa SPF, su flujo sería parecido al siguiente:

  1. mail.plainconcepts.com recibe un email de jorge@cantoso.com desde la IP 193.153.214.55.
  2. mail.plainconcepts.com coteja la IP 193.153.214.55 con el SPF declarado por cantoso.com, que resulta ser «v=spf1 ip4:2.213.33.45 -all».
  3. La IP no coincide con ninguna de las declaradas y la validación falla.
  4. mail.plainconcepts.com considera el correo ilegítimo y lo marca como tal.

Si jorge@cantoso.com envía un email a paco@fabrikam.comFabrikam no implementa validación SPF, de poco sirve a cantoso.com tener publicada esa información en el DNS para ese caso concreto.

¿Cómo activo el SPF en Office 365?

Por defecto Office 365 tiene DESACTIVADA la validación SPF. Sin embargo, activarlo es un proceso realmente sencillo:

  1. Iniciamos la sesión como administrador de Exchange Online.
  2. Vamos a Protección -> Filtro de contenido.
    spf1
  3. Seleccionamos la política por defecto y la editamos.
  4. Nos dirigimos a Opciones avanzadas -> Registro SPF: error
    spf2
  5. A partir de este momento Office 365 empieza a realizar validaciones SPF.

Espero que este artículo os haya servido para aprender una forma sencilla y eficaz de proteger y legitimar tanto la identidad de vuestro correo electrónico saliente, como de aquellos mensajes entrantes que pasan por vuestras estafetas SMTP.

Happy mailing!

Enlace relacionado: RFC 7208 – Sender Policy Framework
Enlace relacionado: SPF – Wikipedia

7 thoughts on “Asegura la legitimidad de tu email con los registros SPF”

  1. Muy buen articulo
    SPF sigue siendo la mejor opción a día de hoy para poder luchar contra el SPAM y especialmente el phising. Cada dominio que lo implemente es un pequeño paso hacia adelante

  2. Es interesante el concepto de SPF e incluso podría adaptarse para evitar phising de bancos u otras organizaciones vía html con el mismo patrón (recibo datos de ip, cotejo con su dirección y resuelvo).

    Lo que no resuelve son los correos que se envían con un ataque desde dentro de los servidores de la organización o secuestro de máquinas para ataques zombi, eso es más complejo a no ser que se detecten al momento y se paren con alguna lista negra o desde la propia organización, pero como decís, es un buen comienzo.

  3. Muy interesante.

    En cuanto a desarrollo, imaginemos tenemos este escenario:

    Enviar un promedio de 7000 correos diarios.
    Realizar una traza del envio de cada uno de estos correos.
    Garantizar que el correo llego a su destinatario.

    7000 correos diarios lo más seguro es que acabe metiendo al dominio emisor en la blacklist de todos los servidores por donde pase semejante volumen de tráfico. Lo más eficiente es buscar compañías que ofrecen ese servicio, pero porque tienen acuerdos con los grandes carriers (y no estoy seguro de ello).

    Posibles soluciones por lo que he podido ver:

    Soporte para dkim (lo más avanzado para no caer en spam por los envíos) . Ahora con lo comentado SPF es lo más avanzado, no?
    http://aws.typepad.com/aws/2012/07/simple-email-service-easy-domainkeys-identified-mail-support.html.

    Conversacion sobre el tema de emails transaccionales.
    http://www.bonillaware.com/emails-transaccionales

    Alternativas:
    servicio de Amazón (http://aws.amazon.com/ses/) y lee específicamente lo que dice bajo el título “Deliverability”.
    Otra alternativa: http://www.windowsazure.com/en-us/develop/net/how-to-guides/sendgrid-email-service/

    https://groups.google.com/forum/#!searchin/altnet-hispano/correo$20masivo$20certificado/altnet-hispano/8NXyx9eUr2M/ttYlutwM6tcJ

    saludos.

  4. Me alegro de leerte Preguntón 🙂 Desde mi punto de vista, SPF y DKIM son complementarios, ya que son formas distintas de cumplir con un mismo propósito: legitimar el correo electrónico que se envía desde una determinada máquina. SPF es mucho más simple de utilizar y poner a punto, como enseño en este artículo. DKIM por su parte, se basa también en los DNS, publicando claves criptográficas que permiten al SMTP destinatario validad el origen del email si este se envió firmado usando este sistema.

    Si no queremos calentarnos mucho la cabeza, con SPF vamos bien, pero ideal es disponer de ambos sistemas.

    Ahora bien, remarco que la función de estos sistemas es legitimar el email; pero… ¿que ocurre si el spam tiene como origen un usuario o servidor SMTP legítimo en nuestra organización? Pues se envía igualmente. Por tanto, para mi son dos medidas obligatorias pero que tampoco nos protegen al 100%.

    En el caso de los 7.000 email que expones, estos sistemas ayudarían a legitimarlo, pero no nos garantizaría quedar libres de ser blacklisted.

  5. Hola, me ha ayudado mucho el post, aunque tengo una duda que agradecería que me ayudaras si puedes.

    Te explico:

    Tengo dos dominios con 3 includes cada uno, uno de ello de office365 y otros dos de otros proveedores, aun así me sigue dando el error SPF Fail: too may DNS Lookups.

    En la cabecera del correo no consigo ver que ponga SPF= OK, siempre pone SPF= temperror

    No entiendo que puede estar fallando.

     

    Gracias de antemano.

Responder a Preguntón Cojonero Cabrón Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *