Configurar OpenDKIM + Postfix en Ubuntu
Configurar la firma DKIM para mejorar la entregabilidad del correo.
DKIM (DomainKeys Identified Mail) es un método de autenticación de correo electrónico que permite a los servidores destinatarios verificar que los mensajes provienen realmente de tu dominio y no han sido manipulados en tránsito. Contar con una firma DKIM válida mejora considerablemente las posibilidades de que tus correos lleguen a la bandeja de entrada en lugar de a la carpeta de spam en Gmail, Yandex, Outlook, Mail.ru y otros proveedores.
Esta guía muestra cómo configurar OpenDKIM con Postfix en Ubuntu — la forma estándar y más fiable de firmar el correo saliente desde un VPS o un servidor dedicado.
Instalar OpenDKIM
sudo apt update
sudo apt install opendkim opendkim-tools -y
Generar las claves DKIM
- Crear un directorio para las claves:
sudo mkdir -p /etc/opendkim/keys
- Generar el par de claves (sustituye
example.compor tu dominio real ymailpor el selector que prefieras —dkim,2025,selector1, etc.):
sudo opendkim-genkey -D /etc/opendkim/keys/ -d example.com -s mail
Tras ejecutar el comando, encontrarás dos archivos en /etc/opendkim/keys/:
mail.txt— el registro DNS TXT que debes publicarmail.private— la clave privada (mantenla en secreto)
- Establecer los permisos correctos:
sudo chown opendkim:opendkim /etc/opendkim/keys/*
sudo chmod 600 /etc/opendkim/keys/*
Publicar el registro DNS TXT
Mostrar el registro TXT:
cat /etc/opendkim/keys/mail.txt
Ejemplo de salida:
mail._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDM+aKFwMV4FHLhghuhQs4vEIIIigO0KzRwQojURHI8QV0m/aHt6AqO2JDhXpl54d3uXJj7QWE9653McQZxPQZa6Hu34RY70ap9OZQ664fWeVuyUAZ+VeQ7gGXQBCxPF6nAlnBIsYak+KV/s1HtaUuySVMiwIDAQAB" )
Ve al panel de control de tu proveedor DNS y añade un nuevo registro TXT:
- Nombre / Host: mail._domainkey
- Tipo: TXT
- Valor: todo lo que hay dentro de los paréntesis (elimina las comillas y los saltos de línea)
La propagación DNS suele tardar entre 5 y 60 minutos.
Configurar OpenDKIM
- Editar el archivo de configuración principal:
sudo nano /etc/opendkim.conf
Asegúrate de que contiene (o añade) estas líneas:
AutoRestart Yes
AutoRestartRate 10/1h
Umask 002
Syslog Yes
SyslogSuccess Yes
LogWhy Yes
Canonicalization relaxed/simple
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
Mode sv
PidFile /var/run/opendkim/opendkim.pid
SignatureAlgorithm rsa-sha256
UserID opendkim:opendkim
Socket inet:8891@localhost
(El puerto 8891 es arbitrario — puedes cambiarlo siempre que coincida con la configuración de Postfix.)
- Crear el archivo TrustedHosts (hosts autorizados a enviar correo a través de OpenDKIM):
sudo nano /etc/opendkim/TrustedHosts
Contenido:
127.0.0.1
localhost
example.com
*.example.com
- Crear el KeyTable (asocia dominio/selector con la clave privada):
sudo nano /etc/opendkim/KeyTable
Contenido:
mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/mail.private
- Crear el SigningTable (indica qué selector usar para cada dirección):
sudo nano /etc/opendkim/SigningTable
Contenido:
*@example.com mail._domainkey.example.com
Conectar OpenDKIM con Postfix
Editar la configuración principal de Postfix:
sudo nano /etc/postfix/main.cf
Añadir (o agregar a las líneas milter existentes):
# OpenDKIM integration
milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
Nuestros servicios y productos
Iniciar y verificar
- Reiniciar los servicios:
sudo systemctl restart opendkim
sudo systemctl restart postfix
- Comprobar que ambos están en ejecución:
sudo systemctl status opendkim
sudo systemctl status postfix
- Enviar un correo de prueba desde el servidor:
echo "DKIM test message" | mail -s "DKIM Test" your@gmail.com
- Abrir el correo recibido → «Mostrar original» (en Gmail) y buscar:
Authentication-Results: ... dkim=pass header.d=example.com ...
Si ves dkim=pass, todo está funcionando correctamente.
Notas útiles
- Para varios dominios, añade simplemente más líneas en KeyTable y SigningTable siguiendo el mismo patrón.
- Para mejorar la entregabilidad, configura también los registros SPF y DMARC.
- Logs para depuración:
/var/log/mail.logo/var/log/syslog(busca las entradas de opendkim).
Ayuda
¿Tienes dudas o necesitas ayuda? Escríbenos a través del sistema de tickets — siempre estamos aquí para ayudarte!