By | 18 enero, 2013

Sabiendo que cada vez más los servicios de correo electrónico están ajustando las medidas de seguridad para detectar el correo fraudulento, configuré DKIM en varios servidores desde los que se envía correo, como medida adicional al SPF que ya mantengo sistemáticamente desde hace varios años.

DomainKeys Identified Mail (DKIM) es un método por el cual los correos son verificados con la firma digital del servidor de origen; esto permite validar el dominio del remitente, evitar la suplantación de identidad, asegurar el remitente y la integridad, evitando la modificación de los correos.

La instalación que se presenta permite disponer de Postfix en Debian/GNU validando correo recibido con DKIM y firmando los mensajes salientes para todos los dominios, en un servidor multi-dominio.

Instalación

Si tenemos Postfix correctamente funcionando, solo debemos instalar dkim-filter que se encargará de firmar y verificar los correos.

# aptitude install dkim-filter

Llave digital

# dkim-genkey -b 1024 -d dominio.com -s cartero

Donde:

  • -d dominio.com – es el dominio del servidor de correo (MX)
  • -s cartero – es la forma de identificar la llave y es el nombre del host (MX)

El resultado de la ejecución son dos archivos: cartero.private y cartero.txt

# cp cartero.private /etc/mail/dkim.key
# chown dkim-filter /etc/mail/dkim.key

y cartero.txt se usa para el DNS, como se ve más adelante.

Filtro

Habilitarlo para que escuche en un puerto de localhost, editando el archivo /etc/default/dkim-filter y dejando esta línea:

SOCKET=»inet:1025@localhost»

Luego configurar el archivo /etc/dkim-filter.conf:

Syslog yes
UMask 002

Domain *
KeyFile /etc/mail/dkim.key
Selector cartero

AutoRestart no
Background yes
Canonicalization simple
DNSTimeout 5
Mode sv
SignatureAlgorithm rsa-sha256
SubDomains no
X-Header yes

Aquí son importante estas líneas (y por supuesto que las demás también):

  • Syslog yes – Dejará un registro del funcionamiento de dkim-filter en el /var/log/mail.log
  • Domain * – Hace que la firma de los correos salientes sea para todos los dominios
  • Selector cartero – es el identificador que le pusimos a la llave cuando la creamos y que coincide con el nombre del host

y podemos iniciar el daemon dkim-filter y verificar que efectivamente ha quedado escuchando en el puerto que configuramos (en este caso 1025)

Postfix

Resta decirle a Postfix que se vincule con dkim-filter para los correos entrantes y salientes, agregando estas líneas al /etc/postfix/main.cf:

milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:127.0.0.1:1025
non_smtpd_milters = inet:127.0.0.1:1025

DNS

La configuración indicada previamente hace que todos los dominios de origen sean firmados por el servidor de correo, lo que puede no ser una escenario común.

Así, en cada dominio se debe agregar el registro TXT que contiene la llave pública con que será verificada la firma.

Para esto editar el archivo de zona DNS del dominio y colocar la información que ha queado en el archivo cartero.txt, así:

cartero._domainkey.dominio.com. IN TXT «v=DKIM1; g=*; k=rsa; p=MIGfM…wIDAQAB»

Verificación

Para verificar que todo anda como uno espera (hola Murhpy!), se pueden observar las líneas en el /var/log/mail.log de dkim-filter, semejantes a esta:

Jan 18 01:23:12 cartero dkim-filter[6484]: Sendmail DKIM Filter v2.8.2 starting (args: -x /etc/dkim-filter.conf -u dkim-filter -P /var/run/dkim-filter/dkim-filter.pid -p inet:1025@localhost)

y se puede enviar correo a una cuenta de yahoo.com (creadores de DKIM) y verificar que el correo no sea colocado en spam y que su cabezal tenga una línea semejante a esta:

Authentication-Results: mta1052.mail.ac4.yahoo.com from=dominio.com; domainkeys=neutral (no sig); from=dominio.com; dkim=pass (ok)

Basado en los artículos de:

2 Replies to “DomainKeys Identified Mail (DKIM) para Postfix Debian/GNU con multiple dominio”

  1. Pingback: Bitacoras.com

  2. Demian

    Gracias por la info, pero unos 30 minutos luego de instalar todo, y buscando algunos mensajes de error, veo que dkim-filter no está actualizado desde hace bastante tiempo, y aconsejan utilizar opendkim.

    Solo para que a otro no le pase lo mismo.

    Saludos

Responder a Demian

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