Skip to main content

Configurar DKIM con Exim en Centos 7

Alejo Sotelo - Developer
Alejo A. Sotelo - @alejoasotelo
Publicado el 13 Febrero 2019

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".

Configurar DKIM con Exim en Centos 7

Más artículos de Alejo A Sotelo - Desarrollo Web

20 Noviembre 2024

Problemas al guardar Configuración en Joomla

Introducción: Cuando cambiamos de servidor un sitio web con Joomla, es común encontrarnos con pequeños problemas técnicos que, aunque frustrantes, pueden resolverse con algo de paciencia y conocimiento. En este artículo, quier...
16 Agosto 2024

Cómo Resolver la Lentitud de phpMyAdmin en un VPS de Donweb con Ferozo

Te pasó alguna vez que intentaste explorar con phpMyAdmin una base de datos con tablas InnoDB y te andaba extremadamente lento? Si es así, abajo te paso una posible solución. Introducción: Hace poco me encontré con un problem...
19 Julio 2024

Cómo detuve un ataque de Bots en un Formulario de Contacto sin reCAPTCHA

Hoy quiero compartir una experiencia reciente que tuve con un ataque de bots a un formulario de contacto en uno de mis proyectos. Este incidente me llevó a profundizar en los logs de acceso y a implementar una solución rápida p...
20 Diciembre 2022

Liberar memoria ram en servidor CentOS

Cómo liberar memoria RAM en un servidor CentOS En este tutorial, te explicaré cómo liberar memoria RAM en un servidor CentOS utilizando comandos simples desde una sesión SSH. Sigue estos pasos para optimizar el rendimiento de ...