Instalar y configurar DKIM para correo en Ubuntu 20.04

Básicamente es una firma que sale del servidor donde originalmente se envía un mensaje, para notificar al servidor destinatario que quien lo envía, es quien dice ser.

La definición de DKIM:

DomainKeys Identified Mail es un mecanismo de autenticación de correo electrónico que permite a una organización responsabilizarse del envío de un mensaje, de manera que éste pueda ser validado por un destinatario. Dicha organización puede ser una fuente directa del mensaje, como el autor, el servidor encargado de gestionar el correo de ese dominio, o un servidor intermedio situado en el tránsito que recorre dicho correo, como por ejemplo un servicio independiente que provee recursos de correo al servidor que gestiona el dominio principal

¿Por qué debería tenerlo configurado? 

Básicamente porque sin el, los servidores de correo te bajan muchos puntos y es probable que tus mensajes lleguen a SPAM o simplemente no sean entregados. Dejaremos aquí las notas para su configuración en una instalación de Ubuntu 20.04.

Configuramos DKIM

sudo apt install opendkim opendkim-tools
sudo gpasswd -a postfix opendkim

Editamos el archivo /etc/opendkim.conf, nos aseguramos de hacer una copia antes (cp /etc/opendkim.conf /etc/opendki.conf.orig)

# descomentamos estas líneas y que queden así:
Canonicalization   simple
Mode               sv
SubDomains         no

Añadimos las líenas debajo de Subdomains No

AutoRestart         yes
AutoRestartRate     10/1M
Background          yes
DNSTimeout          5
SignatureAlgorithm  rsa-sha256

Añadir estas líneas al final del archivo, debajo de UserID                opendkim

KeyTable           refile:/etc/opendkim/key.table
SigningTable       refile:/etc/opendkim/signing.table
ExternalIgnoreList  /etc/opendkim/trusted.hosts
InternalHosts       /etc/opendkim/trusted.hosts

Añadimos el dominio

Almacenamos el archivo con esos cambios. Ahora haremos los archivos de configuración, digamos que será para nuestro dominio tar.mx.

sudo mkdir -p /etc/opendkim/keys
sudo chown -R opendkim:opendkim /etc/opendkim
sudo chmod go-rw /etc/opendkim/keys
# añadimos el dominio tar.mx
sudo echo "*@tar.mx   default._domainkey.tar.mx" >> /etc/opendkim/signing.table
# indicamos donde estará la llave privada
sudo echo "default._domainkey.tar.mx   tar.mx:default:/etc/opendkim/keys/tar.mx/default.private" >> /etc/opendkim/key.table
# ahora lo añadimos a trusted.hosts
sudo echo "*.tar.mx" >> /etc/opendkim/trusted.hosts

Generamos las llaves

sudo mkdir /etc/opendkim/keys/tar.mx
sudo opendkim-genkey -b 2048 -d tar.mx -D /etc/opendkim/keys/tar.mx -s default -v
sudo chown opendkim:opendkim /etc/opendkim/keys/tar.mx/default.private

Listo, en el archivo default.txt tendremos la llave DKIM, digamos algo como lo que sigue:

cat /etc/opendkim/keys/tar.mx/default.txt 
# contenido de la llave
default._domainkey	IN	TXT	( "v=DKIM1; h=sha256; k=rsa; "
    "p=MIIBIjANBgkqhkiG9w0BA5VDq+OOVamKOLdGND"	  
    "DVjw7fgzoN7MzVX3+q1TPzW1hPTDzpc3DxkGiIc7gDi3OkFMYQIDAQAB" )  ; ----- DKIM key default for tar.mx

Ahora lo que tenemos que hacer es en el administrador de nuestro DNS, añadir el registro TXT para el host llamado default._domainkey y pegar el contenido que está entre los paréntesis, quitando las comillas y po rejemplo en la cadena p= se puede pegar el contenido (pueden ser dos o mas líneas) dejando solo una.

Probando

opendkim-testkey -d tar.mx -s default -vvv
opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: checking key 'default._domainkey.tar.mx'
opendkim-testkey: key not secure
opendkim-testkey: key OK
# le preguntamos al DNS
dig default._domainkey.tar.mx TXT
# lo anterior nos debería dar una respuesta TXT con el contenido de nuestra llave.

Si nos indica lo de key OK entonces ya está. Ahora si tenemos postfix instalado, será conectarlo

sudo mkdir /var/spool/postfix/opendkim
sudo chown opendkim:postfix /var/spool/postfix/opendkim

Volvemos a editar /etc/opendkim.conf

# cambiamos la línea
Socket    local:/run/opendkim/opendkim.sock
# por 
Socket    local:/var/spool/postfix/opendkim/opendkim.sock

Ahora editamos /etc/postfix/main.cf y al final de todo añadimos las líneas:

# DKIM a través de milter
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters

Almacenamos y reiniciamos los servicios de opedkim y postfix.

Eso debería ser todo, ahora podemos probar en algún sitio como  mail-tester.com para hacer algunas validaciones reales. 

+ fotos / videos

Almacenado en Servidor de Correo, DKIM, Ubuntu, Linux

por Jorge Martínez Mauricio :)

blog / fotos / archivo

Instalar y configurar DKIM para correo en Ubuntu 20.04

tar.mx es un blog sobre fotografía, tecnología y otras chunches

modificado jueves 8 de julio de 2021, 11:20