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

  1. Crear un directorio para las claves:
sudo mkdir -p /etc/opendkim/keys
  1. Generar el par de claves (sustituye example.com por tu dominio real y mail por 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 publicar
  • mail.private — la clave privada (mantenla en secreto)
  1. 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

  1. 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.)

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

HostingFunciona en discos NVMe ultrarrápidos. Apto para sitios web de cualquier complejidad.
Pedir
VPSParámetros ajustables y configuración flexible del SO. Administración gratuita incluida.
Pedir
Servidores dedicadosDisponibles diversas configuraciones Supermicro con procesadores Intel y AMD.
Pedir

Iniciar y verificar

  1. Reiniciar los servicios:
sudo systemctl restart opendkim
sudo systemctl restart postfix
  1. Comprobar que ambos están en ejecución:
sudo systemctl status opendkim
sudo systemctl status postfix
  1. Enviar un correo de prueba desde el servidor:
echo "DKIM test message" | mail -s "DKIM Test" your@gmail.com
  1. 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.log o /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!

¿Necesitas ayuda?Nuestros ingenieros te ayudarán gratuitamente con cualquier pregunta en minutosContáctanos