Configurar DKIM con Exim en Centos 7

Vamos a configurar DKIM con Exim en CentOS 7.
Primero vamos a generar las claves privada y pública con openssl, sin utilizar opendkim ni nada parecido. Conectamos vía SSH al servidor en cuestión y ejecutamos:
openssl genrsa -out private.key 2048 openssl rsa -in private.key -pubout -out public.key
Éstos comandos generan la clave pública y privada (keys). La clave privada la utiliza dkim para verificar que la clave pública (configurada en los DNS) que está en el mail enviado se correspondan. En caso de que estén bien se valida dkim sino falla.
Segundo creamos la carpeta /etc/exim/dkim, copiamos la clave private a la carpeta /etc/exim/dkim/ y luego asignamos el grupo "exim" a la carpeta dkim y a la clave private.key.
mkdir /etc/exim/dkim/ cp private.key /etc/exim/dkim/private.key chown root:exim -R /etc/exim/dkim/
Tercero, hay que poner la clave pública en los DNS. Con el comando "cat public.key" vemos en la consola la clave. Copiamos el texto que está dentro de "-----BEGIN PUBLIC KEY-----" y "-----END PUBLIC KEY-----". Si por ejemplo la clave es la siguiente:
-----BEGIN PUBLIC KEY---- asdfasdfasdfasdfasdfasdfasJQ asdfasdfasdfasdfasdfaRJ qweqwewq -----END PUBLIC KEY-----
Copiamos solo lo de adentro y lo ponemos en un solo renglon, borrando los saltos de linea, quedando así:
asdfasdfasdfasdfasdfasdfasJQasdfasdfasdfasdfasdfaRJqweqwewq
Éste valor lo remplazamos en lo siguiente: "v=DKIM1; g=*; k=rsa; p=MI_CLAVE_PUBLICA". Quedando así:
v=DKIM1; g=*; k=rsa; p=asdfasdfasdfasdfasdfasdfasJQasdfasdfasdfasdfasdfaRJqweqwewq
Todo este valor hay que configurar en un DNS del dominio. Vamos a CPanel, Ferozo o el gestor de DNS que tengamos. Creamos el DNS con el nombre: "mail._domainkey.midominio.com" de tipo "TXT" con el valor "v=DKIM1; g=*; k=rsa; p=asdfasdfasdfasdfasdfasdfasJQasdfasdfasdfasdfasdfaRJqweqwewq". La duración podemos dejar la que seteé el gestor de DNS, si lo llega a pedir con 14400 (4 horas) esta bien.
Por último vamos a configrar la clave privada en "exim". Para esto vamos al archivo de configuración en /etc/exim/configure, hacemos un backup del archivo por las dudas, luego buscamos la sección "remote_smtp:" y agregamos la configuración para que funcione dkim:
cp /etc/exim/configure /etc/exim/configure.bak nano /etc/exim/configure # Buscamos con ctrl + w la palabra "remote_smtp:" y vamos a encontra algo así: remote_smtp: driver = smtp # Agregamos debajo de "driver = smtp" lo siguiente: dkim_domain = $sender_address_domain dkim_selector = mail dkim_private_key = /etc/exim/dkim/private.key dkim_canon = relaxed
El valor de dkim_selector se corresponde con el DNS mail._domainkey.midomio.com. El valor de dkim_private_key con la ruta de la clave privada.
Reiniciamos "exim":
service exim restart
Listo, ya tenemos dkim funcionando con exim en CentOs7. Cómo verificar que funciona? Enviamos un mail desde un mail del dominio en cuestión a un mail de Gmail. Cuando llega a Gmail ingresamos al mail, vamos a los 3 puntitos en vertical para ver más opciones y hacemos click en "Mostrar original". Buscamos la sección DKIM y debería decir 'PASS' con el dominio midominio.com".
