DomainKeys Identified Mail (DKIM) permite firmar digitalmente las cabeceras de los correos enviados por un servidor de correo. La principal ventaja que ofrece el firmado de los correos electrónicos con DKIM es que el receptor se asegura que quien el envía el correo electrónico es quien dice ser. Para realizar este proceso se utilizan una serie de claves criptograficas que permiten disminuir el fraude electrónico y mantener la reputación de un dominio de Internet.
Este sistema ha sido desarrollado y llevado a ser un estandard por Alt-N Technologies, AOL, Brandenburg InternetWorking, Cisco, EarthLink, IBM, Microsoft, PGP Corporation, Sendmail, StrongMail Systems, Tumbleweed, VeriSign y Yahoo! entre otros.
Este tutorial se va a centrar en la instalación y configuración de DKIM en el sistema operativo CentOS 6.3.
Tutorial
RPMfind es un repositorio alternativo a los oficiales de CentOS que tiene multitud de software adicional. Actualmente la ultima versión que existe es dkim-milter-2.8.3-8
wget ftp://fr2.rpmfind.net/linux/epel/6/x86_64/dkim-milter-2.8.3-8.el6.x86_64.rpm rpm -ivh dkim-milter-2.8.3-8.el6.x86_64.rpm
Una vez instalado el paquete, debemos generar las claves para el dominio que necesitamos. Reemplazar linux4dummies.es para el dominio que queramos generar las claves.
dkim-genkey -r -d linux4dummies.es
La salida de este comando nos va a generar dos ficheros.
default.txt -> Este fichero contiene la clave publica que tenemos que publicar en la zona dns de nuestro dominio.
default.private -> Este fichero contiene la clave privada que es la que utiliza el servidor de correo (Postfix) para firmar los mensajes salientes.
Hay que renombrar los ficheros y moverlos a los directorios de claves.
mv default.private linux4dummies.es_private mkdir /etc/mail/dkim/keys/linux4dummies.es mv linux4dummies.es_private /etc/mail/dkim/keys/linux4dummies.es chmod 600 /etc/mail/dkim/keys/linux4dummies.es/linux4dummies.es_pr ivate chown dkim-milt.dkim-milt /etc/mail/dkim/keys/linux4dummies.es/lin ux4dummies.es_private
Lo siguiente que tenemos que hacer es publicar la clave publica en la zona dns de nuestro dominio para que los servidores de correo puedan verificar los correos electrónicos firmados. Debemos copiar el contenido del fichero default.txt al fichero de zona.
dkim._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQE BAQUAA4GNADCBiQKBgQDB48aQVPDbjmDdwlKw/DdfIis9XZD7sHjzB2HUDMpSGCSil cA0qFSRyhermfticOAjizIwyhaxfsSt9Hikv4YH2Fw79VrYywIRv150kdHyYqN1TT2 nGUx0pysQOTtG/z/SClxeIInH4j/AWAXTSrh6eZ/pfqGqvQZeidSEHd0iXQIDAQAB" ; ----- DKIM default for linux4dummies.es
También hay que añadir en la siguiente linea este código.
_ssp._domainkey IN TXT "t=y; dkim=unknown"
Ahora tenemos que configurar el servicio que va a comprobar y firmar los correos.
vim /etc/dkim-filter.conf
La configuración final debería quedar muy similar a lo siguiente:
ADSPDiscard yes ADSPNoSuchDomain yes AllowSHA1Only no AlwaysAddARHeader no AutoRestart yes AutoRestartRate 10/1h BaseDirectory /var/run/dkim-milter Canonicalization simple/simple Domain linux4dummies.es #add all your domains here and seperate th em with comma ExternalIgnoreList /etc/mail/dkim/trusted-hosts InternalHosts /etc/mail/dkim/trusted-hosts KeyList /etc/mail/dkim/keylist LocalADSP /etc/mail/dkim/local-adsp-rules Mode sv MTA MSA On-Default reject On-BadSignature reject On-DNSError tempfail On-InternalError accept On-NoSignature accept On-Security discard PidFile /var/run/dkim-milter/dkim-milter.pid QueryCache yes RemoveOldSignatures yes ReportAddress [email protected] Selector default SignatureAlgorithm rsa-sha256 Socket inet:20209@localhost StrictTestMode no Syslog yes SyslogSuccess yes TemporaryDirectory /var/tmp UMask 022 UserID dkim-milt:dkim-milt X-Header yes
Ahora debemos editar el fichero de claves para referenciar la que hemos creado previamente.
vim /etc/mail/dkim/keylist
Debe quedar así.
*@linux4dummies.es:linux4dummies.es:/etc/mail/dkim/keys/linux4dumm ies.es/linux4dummies.es_private
En este punto hemos terminado de configurar el servicio de DKIM y hemos generado las claves publicas y privadas del dominio, si quisiéramos añadir mas dominios, debemos repetir todos los pasos hasta ahora escritos para todos los dominios que necesitemos.
Configurar el Servidor de Correo
Necesitamos añadir el milter a la configuración de Postfix para que pueda capturar los correos entrantes y salientes.
vim /etc/postfix/main.cf
smtpd_milters = inet:localhost:20209 non_smtpd_milters = inet:localhost:20209 milter_protocol = 2 milter_default_action = accept
Si tuviéramos mas demonios debemos añadirlo en la linea correspondiente.
smtpd_recipient_restrictions = .... check_policy_service inet:localhost:20209 .... permit
Para finalizar comprobamos que los servicios que hemos configurado arrancan automáticamente y los arrancamos
chkconfig dkim-milter on chkconfig postfix on
service dkim-milter start service postfix start
Comentarios