Procedimiento para activar firmado DKIM con amavisd-new

Introducción

DKIM (DomainKeys Identified Mail) es un conjunto de protocolos y especificaciones (IETF) de autentificación de correo electrónico que permite asociar un nombre de dominio a un mensaje de email, dificultando así la falsificación de cabeceras y mensajes de correo por parte de los spammers. amavisd-new es capaz de manejar y firmar los mensajes con DKIM, de forma transparente para el remitente, añadiendo un nuevo campo (DKIM-Signature) con la firma digital en la cabecera del mensaje. El servidor de destino podrá comprobar la autenticidad del mensaje, verificando la firma de la cabecera del mensaje contra la clave pública obtenida mediante una query a un servidor DNS.

Los pasos siguientes explican cómo configurar amavisd-new para firmar los mensajes para un dominio llamado “example.com” con DKIM.

Procedimiento

Generamos la clave asociada al dominio:

# mkdir /var/amavisd/dkim/
# amavisd genrsa /var/amavisd/dkim/example.com.pem

Editamos /etc/amavisd.conf:

$enable_dkim_verification = 1;
$enable_dkim_signing = 1;
dkim_key('example.com', 'dkim', '/var/amavisd/dkim/example.com.key.pem');
@dkim_signature_options_bysender_maps = (
{ '.' => { ttl => 21*24*3600, c => 'relaxed/simple' } } );
@mynetworks = qw(0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16);  # list your internal networks

Reiniciamos amavisd:

# /etc/rc.d/amavisd restart
amavisd(ok)
amavisd(ok)

Mostramos la clave pública, que añadiremos literalmente a un registro de tipo TXT en nuestro servidor DNS:

# amavisd showkeys  
; key#2, domain example.com, /var/amavisd/dkim/example.com.pem
dkim._domainkey.flossystems.com.        3600 TXT (
  "v=DKIM1; p="
  "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2wbPh+0cFwUHIN+K5m1RtTePD"
  "m1/E4SqZzeVPFXhRiqlBTSVTvxCtGxBQnl8cUXVC4jFeBGq8/Z0mONDodpSQ1gOO"
  "KzrNM5ZhYKhx3Y7FSKmh86iWa8sTF+Lzi/xn7BZttBy+rg4pYzOVeUGU9puwfzHr"
  "FfRAoEsJwKbKufeTVwIDAQAB")

Una vez copiada la clave pública en nuestro registro de zona, cambiado el número de serie y recargada la zona ('rndc reload') comprobamos:

# amavisd testkeys
TESTING#1: dkim._domainkey.example.com    => pass

Nota: si obtenemos el siguiente error, es probable que el cambio en el DNS aún no se haya propagado:

# /var/amavisd/dkim# amavisd testkeys
TESTING#1: dkim._domainkey.example.com   => invalid (public key: not available)

También podemos comprobarlo directamente con la utilidad “host” de los Unices:

# host -t txt dkim._domainkey.example.com
dkim._domainkey.example.com descriptive text "v=DKIM1\; p=" "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2wbPh+0cFwUHIN+K5m1RtTePD" "m1/E4SqZzeVPFXhRiqlBTSVTvxCtGxBQnl8cUXVC4jFeBGq8/Z0mONDodpSQ1gOO" "KzrNM5ZhYKhx3Y7FSKmh86iWa8sTF+Lzi/xn7BZttBy+rg4pYzOVeUGU9puwfzHr" "FfRAoEsJwKbKufeTVwIDAQAB"

O con dig:

# dig -t txt dkim._domainkey.example.com
[...]
;; ANSWER SECTION:
dkim._domainkey.example.com. 3600 IN TXT    "v=DKIM1\; p=" "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2wbPh+0cFwUHIN+K5m1RtTePD" "m1/E4SqZzeVPFXhRiqlBTSVTvxCtGxBQnl8cUXVC4jFeBGq8/Z0mONDodpSQ1gOO" "KzrNM5ZhYKhx3Y7FSKmh86iWa8sTF+Lzi/xn7BZttBy+rg4pYzOVeUGU9puwfzHr" "FfRAoEsJwKbKufeTVwIDAQAB"
[...]

Referencias

es/security/mta/dkim.txt · Last modified: 2012/08/22 13:27 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