Configurar registro DNS para soporte de SPF

Sender Policy Framework (SPF, Infraestructura de Políticas de Envío) es un sistema de validación de correo electrónico diseñado para detectar el spoofing mediante la verificación de la dirección IP del servidor remitente.

Añadiendo un nuevo registro en el DNS, SPF permite al titular de un dominio de Internet especificar en sus registros DNS qué equipos están autorizados a enviar correo con direcciones de ese dominio. Los MTA receptores que usen SPF podrán así verificar, consultando el registro DNS, si un determinado servidor de correo está autorizado como servidor de correo para ese dominio, rechazándolo si no es así, dificultando de ese modo la suplantación y el phishing y haciéndolo por tanto menos atractivo para los spammers. También puede evitar que los spammers usen un falso Return-Path.

En el registro de zona de nuestro dominio añadimos la siguiente línea:

example.com.       3600   IN      TXT     "v=spf1 mx ip4:1.2.3.4 -all"

Y recargamos el servidor DNS:

# rndc reload  

Ahora otros MTA podrán verificar si el correo que reciben con nuestro dominio procede realmente de nuestro servidor de correo.

¿Cómo implementar SPF en nuestro servidor de correo?

Para soportar la comprobación del registro SPF en los mensajes que recibe nuestro MTA, debemos realizar algunos cambios en el MTA (Postfix):

1. Instalamos un plugin externo para que Postfix pueda chequear el registro SPF (hay varios paquetes disponibles, en función de la distribución, este ejemplo usa OpenBSD):

# pkg_add -v py-policyd-spf

2. Añadimos las siguientes líneas a /etc/postfix/master.cf:

    /etc/postfix/master.cf:
        policyd-spf  unix  -       n       n       -       0       spawn
            user=nobody argv=/usr/local/bin/python /usr/local/bin/policyd-spf

3. Y en la sección smtpd_recipient_restrictions de /etc/postfix/main.cf añadimos:

  
  smtpd_recipient_restrictions =  permit_mynetworks,
                                  [...]             
                                  reject_unauth_destination,
                                  check_policy_service unix:private/policyd-spf

Importa el orden, y que la directiva de chequeo de SPF no anteceda a reject_unauth_destination.

4. Reiniciamos Postfix:

postfix reload

Ahora tendremos un soporte básico de SPF, no adoptaremos ninguna medida, simplemente chequearemos si existe registro SPF y si cumple el requisito. Nos aparecerá una nueva línea en la cabecera de los mensajes recibidos:

Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=209.85.214.54; helo=mail-bk0-f54.google.com; envelope-from=foo@gmail.com; receiver=bar@example.com 

Cuando estemos seguros de que todo funciona, podremos realizar una configuración de Postfix y SPF más compleja, estableciendo políticas permisivas o restrictivas de cada mensaje, en función de si obtiene o no el SPF Pass.

Referencias

es/security/mta/spf.txt · Last modified: 2013/02/22 11:51 by mvidal
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC0 1.0 Universal
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki