Cómo instalar un servidor Exim en Debian con SPF y DKIM
En muchas ocasiones nos encontramos que nuestro servidor necesita enviarnos un mensaje, una notificación, algo… y pese a que no soy muy amigo de que un servidor envíe un email para ese tipo de notificación, es cierto que es uno de los sistemas más socorridos y fáciles de configurar. No obstante, cada día que pasa, la posibilidad de recibir un mensaje como spam, o que pongan al servidor en una lista negra por enviar mensajes «no legales», aumenta proporcionalmente por cada mensaje que el sistema envía, hasta que llega un momento que dejamos de recibir emails, momento seguro en el que el mensaje es de suma importancia y jamás llegaremos a ver.
Visto lo cual, hay dos posibilidades: o bien utilizamos una cuenta SMTP de un servidor externo, o bien configuramos un servidor con soporte SPF y DKIM para evitar que un servidor considere nuestros mensajes como que proceden de un servidor vulnerable y cueste más meterlo en una lista negra.
Siempre he trabajado con Postfix y con Exim, pero visto que Debian instala por defecto Exim, vamos a crear este tutorial utilizando dicha herramienta.
Instalamos los paquetes
Lo primero es utilizar apt-get para instalar los paquetes básicos. Exim4 tiene dos modos de funcionamiento: uno «ligero» y uno «heavy» con más opciones y posibilidades. Para lo que queremos, con el ligero nos sobra, así que:
apt-get install exim4 exim4-base exim4-config exim4-daemon-light
Para todos los ejemplos vamos a utilizar un dominio: sinologic.net y una dirección IP inventada del equipo que tendrá el servidor MTA: 88.33.84.32. Para nuestro equipo, tendremos que cambiar el dominio y la dirección IP por el que tengamos.
Acto seguido, debería aparecer una ventana con una serie de preguntas para configurar rápidamente el servicio exim. Si no lo hiciera, deberíamos solicitarlo con el comando: dpkg-reconfigure exim4-config
- Tipo de configuración general del correo: Internet site
- Nombre del sistema de correo: sinologic.net
- Direcciones IP en las que recibir conexiones SMTP entrantes: 127.0.0.1 ; ::1
- Otros destinos para los que se acepta el correo: sinologic.net
- Dominios para los que se reenvía correo: <dejar vacío>
- Máquinas para las cuales reenviar correo: <dejar vacío>
- Limitar el número de consultas de DNS (marcación bajo demanda) ?: No
- Mecanismo de entrega para el correo local: formato mbox en «/var/mail»
- Dividir la configuración en pequeños ficheros? No
- Destinatario del correo de «root» y «postmaster»: <dejar vacío>
Con estos parámetros tendremos una configuración estándar para enviar emails, aunque seguramente el servidor receptor compruebe
Creamos las claves DKIM
mkdir /etc/exim4/dkim cd /etc/exim4/dkim openssl genrsa -out sinologic.net.key 1024 openssl rsa -in sinologic.net.key -pubout > sinologic.net.pub chown -R Debian-exim:Debian-exim /etc/exim4/dkim/ chmod 640 /etc/exim4/dkim/*
Configuración del DNS
Esto seguramente sea la parte más complicada, ya que si no tenemos acceso a nuestro servidor DNS o si lo hacemos a través de alguna herramienta de gestión, puede que tengamos algún que otro problema, como que la clave pública no quepa entera o no permita registros TXT.
Vamos a suponer que la dirección del servidor SMTP de Sinologic se encuentra en la IP 80.33.84.32, entonces vamos a configurar las siguientes entradas en el registro DNS de nuestro servidor del dominio.
En el registro del DKIM, debemos poner toda la cadena que hay en el archivo ‘/etc/exim4/sinologic.net.pub’ (los 1024 bits uno detrás de otro). (MIGfMA0G…OOD6r5KoT4uQAQAB)
Hay que tener en cuenta que la «cadena» tiene retornos de carro (saltos de línea o enters) que hay que quitar, ya que de lo contrario, tendremos una cadena con unos espacios muy feos que hará que no coincida con la cadena que debería poner.
... sinologic.net IN TXT v=spf1 mx ip4:80.33.84.32 ~all mail._domainkey IN TXT v=DKIM1; k=rsa; p=MIGfMA0G...1OPavLnfDYKoT4uQAQAB ...
Gracias a estas dos líneas, la primera nos asegura que el sistema es compatible con SPF, mientras que la segunda lo hace compatible con DKIM. La cadena para el DKIM está formada por el selector DKIM: ‘mail‘ seguido de la cadena ‘_domainkey‘. Esto deberíamos dejarlo así, ya que vamos a configurar que el ‘selector DKIM’ sea ‘mail’.
Activamos el soporte de DKIM
Editamos el archivo /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp y añadimos al comienzo del archivo lo siguiente:
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_KEY_FILE = /etc/exim4/dkim/sinologic.net.key
DKIM_PRIVATE_KEY = ${if exists{DKIM_KEY_FILE}{DKIM_KEY_FILE}{0}}
DKIM_SELECTOR = mail
Recargamos la configuración
Por último, re-creamos el archivo de configuración con lo que hemos hecho y recargamos todo el servidor:
update-exim4.conf service exim4 restart
Refresco de los DNS
Si bien es cierto que nuestro servidor ya está operativo, deberíamos esperar entre 8 y 12 horas a que los DNS se actualicen con la información sobre el SPF y DKIM que hemos puesto, ya que será ya podemos probar a enviar un email:
echo "Prueba de mensaje" |mail -s "prueba" micuenta@gmail.com
Hecho esto, deberíamos recibir el email, y si vemos el código fuente debería incluir las cabeceras de haber comprobado que pasan los tests del SPF y el DKIM.