Con DKIM podemos autenticar correos electrónicos para que nuestros correos no sean marcados como spam. La configuración de Exim es send-only (sólo para enviar correos).
Primero reconfiguramos exim4 para poder enviar y recibir correos electrónicos usando SMTP: dpkg-reconfigure exim4-config
En las opciones seleccionamos lo siguiente:
internet site; mail is sent and received directly using SMTP
dominio.com
<blanco>
host.dominio.com;host;localhost.localdomain;localhost
<blanco>
<blanco>
No
mbox format in /var/mail/
Yes
Ahora creamos las claves para firmar los correos:
mkdir -p /etc/exim4/dkim
chown Debian-exim /etc/exim4/dkim/
chmod u=rx,go= /etc/exim4/dkim/
openssl genrsa -out /etc/exim4/dkim/dominio.com.private.key 2048
openssl rsa -in /etc/exim4/dkim/dominio.com.private.key -pubout
El último comando nos dará la clave pública que hay que usar en la configuración DNS de nuestro dominio. Deberemos crear una entrada TXT en nuestro servidor de la siguiente forma:
exim._domainkey TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqG(...recortado...)0N7BNi4CZVkylsqnYuRuuot/N0XQIDAQAB"
No es necesario añadir una entrada MX porque eso sólo es para recibir correos.
El último paso es configurar exim para que use esta configuración: vi /etc/exim4/conf.d/transport/10_exim4-config_transport-macros
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_FILE = /etc/exim4/dkim/dominio.com.private.key
DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}
DKIM_SELECTOR = exim
Ojo al DKIM_SELECTOR, que debe ser el mismo que hay en la línea de DNS exim._domainkey. Después de esto, reiniciamos el exim: /etc/init.d/exim4 restart
Para comprobar si funciona, mandar un correo a check-auth@verifier.port25.com
Otras formas de comprobar:
http://www.myiptest.com/staticpages/index.php/DomainKeys-DKIM-SPF-Validator-test
http://www.brandonchecketts.com/emailtest.php