Configuración de DKIM para Autenticación de Correo Electrónico: Guía Completa

Introducción

DomainKeys Identified Mail (DKIM) es un método crítico de autenticación de correo electrónico que ayuda a demostrar que tus correos electrónicos se envían legítimamente desde tu dominio y no han sido alterados durante el tránsito. En una era donde el spoofing de correo electrónico y los ataques de phishing son rampantes, DKIM proporciona verificación criptográfica de que un correo electrónico se originó genuinamente desde el dominio del remitente declarado.

DKIM funciona agregando una firma digital a los encabezados del correo electrónico mediante criptografía de clave pública. Cuando tu servidor de correo envía un correo electrónico, lo firma con una clave privada. Los servidores de correo receptores pueden entonces verificar esta firma usando la clave pública publicada en tus registros DNS. Si la firma es válida y el mensaje no ha sido alterado, el correo electrónico pasa la verificación DKIM, mejorando significativamente la capacidad de entrega y reduciendo la probabilidad de que tus correos electrónicos sean marcados como spam.

Los principales proveedores de correo electrónico como Gmail, Yahoo, Microsoft Outlook y otros dependen en gran medida de la autenticación DKIM al determinar la legitimidad del correo electrónico. Sin DKIM, es más probable que tus correos electrónicos sean rechazados, marcados como spam o señalados con advertencias de seguridad. Implementar DKIM ya no es opcional para operaciones de correo electrónico serias—es esencial.

Esta guía completa te lleva paso a paso por la instalación y configuración de DKIM para tu servidor de correo usando OpenDKIM con Postfix. Aprenderás cómo generar claves criptográficas, configurar OpenDKIM, integrarlo con Postfix, publicar registros DNS y verificar que todo funcione correctamente.

Requisitos Previos

Antes de configurar DKIM, asegúrate de tener:

Requisitos del Sistema

  • Un servidor de correo funcionando con Postfix instalado y configurado
  • Acceso root o sudo al servidor
  • Ubuntu 20.04/22.04, Debian 10/11, CentOS 8/Rocky Linux 8, o similar
  • Al menos 512MB de RAM disponible
  • Configuración básica de Postfix ya implementada

Requisitos del Dominio

  • Un nombre de dominio registrado (ej., example.com)
  • Acceso al panel de gestión DNS de tu dominio
  • Tiempo de propagación DNS disponible (hasta 48 horas, usualmente mucho más rápido)
  • Comprensión de registros TXT DNS

Requisitos del Servidor de Correo

  • Postfix enviando y recibiendo correo electrónico correctamente
  • Hostname válido configurado (mail.example.com)
  • Registros SPF recomendados (pero no requeridos)
  • Conocimiento práctico de tu configuración actual de correo

Requisitos de Conocimiento

  • Competencia en línea de comandos de Linux
  • Comprensión básica de criptografía de clave pública
  • Familiaridad con la gestión de registros DNS
  • Experiencia editando archivos de configuración

Entendiendo DKIM

Cómo Funciona DKIM

  1. Generación de Claves: Generas un par de claves criptográficas (privada y pública)
  2. Almacenamiento de Clave Privada: La clave privada permanece segura en tu servidor de correo
  3. Publicación de Clave Pública: La clave pública se publica en tu DNS como un registro TXT
  4. Firma de Correo Electrónico: Al enviar correo, tu servidor firma el mensaje con la clave privada
  5. Verificación de Firma: Los servidores receptores recuperan tu clave pública desde DNS y verifican la firma
  6. Resultado de Autenticación: Si la verificación tiene éxito, el correo electrónico está autenticado

Ejemplo de Encabezado DKIM

Una firma DKIM en un encabezado de correo electrónico se ve así:

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com;
    s=default; t=1642080000;
    bh=4KJds9FH3jk2lksjdflk3jF=;
    h=From:To:Subject:Date;
    b=AbCdEf123...very long signature string...

Componentes clave:

  • v=1: Versión DKIM
  • a=rsa-sha256: Algoritmo usado
  • d=example.com: Dominio firmante
  • s=default: Selector (identifica qué clave usar)
  • h=: Encabezados incluidos en la firma
  • b=: La firma real

Beneficios de DKIM

  1. Mejora en la Capacidad de Entrega: Los correos electrónicos pasan las verificaciones de autenticación
  2. Reducción del Marcado de Spam: Correos electrónicos legítimos menos propensos a ser marcados como spam
  3. Protección de Marca: Previene el spoofing de dominio y phishing
  4. Construcción de Confianza: Los destinatarios pueden verificar la autenticidad del correo electrónico
  5. Cumplimiento: Requerido por muchas organizaciones y proveedores de correo electrónico
  6. Mejor Reputación: Contribuye a una reputación positiva del remitente

Paso 1: Instalar OpenDKIM

OpenDKIM es la implementación DKIM de código abierto más ampliamente utilizada para servidores de correo Linux.

Instalación Ubuntu/Debian

# Update package lists
sudo apt update

# Install OpenDKIM and tools
sudo apt install opendkim opendkim-tools -y

Instalación CentOS/Rocky Linux

# Install EPEL repository (if not already installed)
sudo dnf install epel-release -y

# Install OpenDKIM
sudo dnf install opendkim -y

Verificar Instalación

# Check OpenDKIM version
opendkim -V

# Check if service exists
systemctl list-unit-files | grep opendkim

Paso 2: Generar Claves DKIM

Crea una estructura de directorios para las claves DKIM:

# Create directory for keys
sudo mkdir -p /etc/opendkim/keys/example.com

# Set ownership
sudo chown -R opendkim:opendkim /etc/opendkim

# Set permissions
sudo chmod 750 /etc/opendkim
sudo chmod 750 /etc/opendkim/keys

Genera el par de claves DKIM:

# Navigate to domain key directory
cd /etc/opendkim/keys/example.com

# Generate keys (2048-bit RSA recommended)
sudo opendkim-genkey -b 2048 -d example.com -D /etc/opendkim/keys/example.com -s default -v

# Set proper ownership
sudo chown opendkim:opendkim /etc/opendkim/keys/example.com/*

# Set restrictive permissions on private key
sudo chmod 600 /etc/opendkim/keys/example.com/default.private
sudo chmod 644 /etc/opendkim/keys/example.com/default.txt

Esto crea dos archivos:

  • default.private: Clave privada (mantenida en secreto en el servidor)
  • default.txt: Clave pública (a ser publicada en DNS)

Ver las Claves Generadas

# View private key
sudo cat /etc/opendkim/keys/example.com/default.private

# View public key (DNS record)
sudo cat /etc/opendkim/keys/example.com/default.txt

El archivo default.txt contiene algo como:

default._domainkey.example.com. IN TXT ( "v=DKIM1; h=sha256; k=rsa; "
    "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..." )

Consideraciones sobre el Tamaño de la Clave

  • 1024-bit: Mínimo, menos seguro, registro DNS más pequeño
  • 2048-bit: Estándar recomendado, buena seguridad, tamaño razonable
  • 4096-bit: Seguridad máxima, puede causar problemas DNS, registro más grande

Recomendación: Usa 2048-bit para el mejor balance entre seguridad y compatibilidad.

Paso 3: Configurar las Opciones Principales de OpenDKIM

Edita el archivo de configuración principal de OpenDKIM:

sudo nano /etc/opendkim.conf

Agrega o modifica estas configuraciones:

# Logging
Syslog                  yes
SyslogSuccess          yes
LogWhy                 yes

# Basic settings
Canonicalization       relaxed/simple
Mode                   sv
SubDomains             no

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

# Keys and domains
KeyTable               refile:/etc/opendkim/key.table
SigningTable           refile:/etc/opendkim/signing.table
ExternalIgnoreList     refile:/etc/opendkim/trusted.hosts
InternalHosts          refile:/etc/opendkim/trusted.hosts

# Socket configuration
Socket                 local:/var/spool/postfix/opendkim/opendkim.sock
PidFile                /var/run/opendkim/opendkim.pid
UMask                  002
UserID                 opendkim:postfix

# Header settings
OversignHeaders        From

Configuración Explicada

  • Canonicalization: Cómo tratar espacios en blanco y encabezados (relaxed/simple es estándar)
  • Mode: sv = firmar y verificar
  • SubDomains: Si firmar correo desde subdominios
  • SignatureAlgorithm: rsa-sha256 es el estándar actual
  • KeyTable: Mapea nombres de clave a archivos de clave
  • SigningTable: Mapea direcciones de correo electrónico/dominios a claves
  • InternalHosts: Hosts/redes confiables para firmar
  • Socket: Socket UNIX para comunicación con Postfix
  • OversignHeaders: Encabezados a firmar múltiples veces (previene adición)

Paso 4: Crear Archivos de Configuración de OpenDKIM

Crear Tabla de Claves

sudo nano /etc/opendkim/key.table

Agrega:

default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default.private

Formato: selector._domainkey.domain domain:selector:keyfile

Crear Tabla de Firmas

sudo nano /etc/opendkim/signing.table

Agrega:

*@example.com default._domainkey.example.com

Esto le dice a OpenDKIM que firme todos los correos electrónicos de @example.com con la clave especificada.

Para múltiples dominios:

*@example.com default._domainkey.example.com
*@example.net default._domainkey.example.net
*@example.org default._domainkey.example.org

Crear Hosts de Confianza

sudo nano /etc/opendkim/trusted.hosts

Agrega:

127.0.0.1
localhost
::1
203.0.113.10

*.example.com
example.com
mail.example.com

Incluye:

  • Direcciones localhost
  • La IP de tu servidor
  • Tu dominio y subdominios
  • Cualquier otro servidor que deba ser confiable

Establecer Permisos

sudo chown opendkim:opendkim /etc/opendkim/key.table
sudo chown opendkim:opendkim /etc/opendkim/signing.table
sudo chown opendkim:opendkim /etc/opendkim/trusted.hosts

sudo chmod 644 /etc/opendkim/key.table
sudo chmod 644 /etc/opendkim/signing.table
sudo chmod 644 /etc/opendkim/trusted.hosts

Paso 5: Crear Directorio de Socket de OpenDKIM

Crea el directorio de socket para la comunicación con Postfix:

# Create socket directory
sudo mkdir -p /var/spool/postfix/opendkim

# Set ownership
sudo chown opendkim:postfix /var/spool/postfix/opendkim

# Set permissions
sudo chmod 750 /var/spool/postfix/opendkim

Alternativa: Usar Socket TCP

Si los sockets UNIX causan problemas, usa TCP en su lugar:

En /etc/opendkim.conf:

Socket    inet:8891@localhost

En la configuración de Postfix (más adelante):

smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

Paso 6: Configurar Integración con Postfix

Edita la configuración principal de Postfix:

sudo nano /etc/postfix/main.cf

Agrega estas líneas al final:

# OpenDKIM milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:/opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters

Configuraciones de Milter de Postfix Explicadas

  • milter_default_action: Qué hacer si el milter falla (accept/reject/tempfail)
  • milter_protocol: Versión del protocolo milter (6 es la actual)
  • smtpd_milters: Milters para correo recibido vía SMTP
  • non_smtpd_milters: Milters para correo enviado localmente

La ruta del socket es relativa al chroot de Postfix (/var/spool/postfix/), así que:

  • Ruta completa: /var/spool/postfix/opendkim/opendkim.sock
  • Ruta de Postfix: local:/opendkim/opendkim.sock

Paso 7: Configurar Servicio de OpenDKIM

En algunos sistemas, necesitas configurar el inicio del servicio OpenDKIM:

Ubuntu/Debian

Edita la configuración del servicio:

sudo nano /etc/default/opendkim

Asegúrate de que contenga:

RUNDIR=/var/run/opendkim
SOCKET=local:/var/spool/postfix/opendkim/opendkim.sock
USER=opendkim
GROUP=opendkim
PIDFILE=$RUNDIR/opendkim.pid
EXTRAAFTER=

Configuración de Servicio SystemD

Para sistemas que usan systemd, crea una anulación:

sudo systemctl edit opendkim

Agrega:

[Service]
Group=postfix

Guarda y sal.

Paso 8: Iniciar y Habilitar Servicios

Inicia OpenDKIM y recarga Postfix:

# Enable OpenDKIM to start on boot
sudo systemctl enable opendkim

# Start OpenDKIM
sudo systemctl start opendkim

# Check OpenDKIM status
sudo systemctl status opendkim

# Reload Postfix configuration
sudo systemctl reload postfix

# Check Postfix status
sudo systemctl status postfix

Verifica que el socket fue creado:

# Check socket exists
ls -la /var/spool/postfix/opendkim/

# You should see opendkim.sock

Paso 9: Publicar Registro DNS de DKIM

Ver tu clave pública:

sudo cat /etc/opendkim/keys/example.com/default.txt

La salida se verá como:

default._domainkey.example.com. IN TXT ( "v=DKIM1; h=sha256; k=rsa; "
    "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1234567890abcdef..."
    "...more key data..."
    "...end of key" )

Extraer la Clave Pública

La clave está dividida en múltiples líneas con comillas. Necesitas combinarlas:

# Extract just the key value
sudo cat /etc/opendkim/keys/example.com/default.txt | grep -oP '(?<=p=).*' | tr -d '"\n\t '

Crear Registro TXT DNS

En tu panel de gestión DNS, crea un registro TXT:

Nombre/Host: default._domainkey o Nombre/Host: default._domainkey.example.com.

Tipo: TXT

Valor: v=DKIM1; h=sha256; k=rsa; p=YOUR_PUBLIC_KEY_HERE

Ejemplo:

Name: default._domainkey
Type: TXT
Value: v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef

Notas Importantes:

  • Elimina todos los saltos de línea y comillas del valor de la clave
  • Incluye solo: v=DKIM1; h=sha256; k=rsa; p=YOURKEY
  • Algunos proveedores DNS agregan automáticamente el dominio, así que usa solo default._domainkey
  • Otros requieren el nombre completo: default._domainkey.example.com
  • TTL: 3600 (1 hora) es típico

Formatos Comunes de Proveedores DNS

Cloudflare:

Name: default._domainkey
Type: TXT
Content: v=DKIM1; h=sha256; k=rsa; p=YOUR_KEY

GoDaddy:

Host: default._domainkey
TXT Value: v=DKIM1; h=sha256; k=rsa; p=YOUR_KEY

Namecheap:

Host: default._domainkey
Value: v=DKIM1; h=sha256; k=rsa; p=YOUR_KEY

Paso 10: Verificar Propagación DNS

Espera la propagación DNS (usualmente 5-30 minutos, puede tomar hasta 48 horas).

Verificar Registro DNS

# Query DNS for DKIM record
dig default._domainkey.example.com TXT +short

# Alternative with host command
host -t TXT default._domainkey.example.com

# Alternative with nslookup
nslookup -type=TXT default._domainkey.example.com

Salida esperada:

"v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG..."

Probar Registro DKIM

# Test DKIM record validity
opendkim-testkey -d example.com -s default -vvv

Salida exitosa:

opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: key OK

Si ves errores:

  • key not secure: Solo advertencia, la clave funciona pero DNSSEC no configurado
  • key not found: DNS no propagado aún o registro incorrecto
  • key syntax error: Problema con el formato del registro TXT DNS

Paso 11: Probar Firma DKIM

Envía un correo electrónico de prueba y verifica la firma DKIM:

Enviar Correo de Prueba

# Send test email
echo "This is a DKIM test email" | mail -s "DKIM Test" [email protected]

Verificar Registros de Correo

sudo tail -f /var/log/mail.log

Busca:

opendkim[12345]: DKIM-Signature field added

Verificar Encabezados de Correo Electrónico

  1. Envía correo electrónico a Gmail, Yahoo, u otro proveedor
  2. Abre el correo electrónico
  3. Ver encabezados completos (usualmente "Show original" o similar)
  4. Busca firma DKIM y resultados

Encabezados a buscar:

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=example.com;
    s=default; t=1642080000;

Y resultados de autenticación:

Authentication-Results: mx.google.com;
    dkim=pass [email protected] header.s=default header.b=AbCdEf...

Significados de estados:

  • dkim=pass: Verificación DKIM exitosa
  • dkim=fail: Verificación de firma falló
  • dkim=neutral: No se encontró firma DKIM o no se pudo verificar
  • dkim=temperror: Error temporal durante la verificación

Paso 12: Probar con Herramientas en Línea

Usa herramientas de verificación en línea para pruebas completas:

Mail-Tester.com

  1. Visita https://www.mail-tester.com/
  2. Obtén la dirección de correo electrónico única
  3. Envía correo electrónico desde tu servidor:
echo "DKIM Test via mail-tester" | mail -s "Test" [email protected]
  1. Ver resultados en el sitio web
  2. Verifica sección DKIM para estado pass/fail

DKIMValidator.com

  1. Visita https://dkimvalidator.com/
  2. Obtén la dirección de prueba única
  3. Envía correo electrónico de prueba a esa dirección
  4. Ver resultados detallados de validación DKIM

MXToolbox DKIM Lookup

https://mxtoolbox.com/dkim.aspx

Ingresa tu dominio y selector (default) para verificar el registro DNS.

Solución de Problemas Comunes

Problema 1: Firma DKIM No Agregada

Síntomas: No hay encabezado DKIM-Signature en correos electrónicos enviados

Diagnóstico:

# Check OpenDKIM is running
sudo systemctl status opendkim

# Check socket exists
ls -la /var/spool/postfix/opendkim/

# Check mail logs
sudo grep opendkim /var/log/mail.log

# Test OpenDKIM manually
sudo opendkim-testkey -d example.com -s default -vvv

Soluciones:

  • Reiniciar OpenDKIM: sudo systemctl restart opendkim
  • Verificar permisos del socket
  • Verificar que signing.table incluye tu dominio
  • Verificar que trusted.hosts incluye tu servidor

Problema 2: Verificación DKIM Falla (dkim=fail)

Síntomas: Correos electrónicos firmados pero servidores receptores reportan dkim=fail

Diagnóstico:

# Verify DNS record matches key
sudo cat /etc/opendkim/keys/example.com/default.txt
dig default._domainkey.example.com TXT +short

# Check for key mismatch
opendkim-testkey -d example.com -s default -vvv

Soluciones:

  • Asegúrate de que el registro DNS coincida exactamente con la clave pública
  • Elimina saltos de línea y comillas del registro DNS
  • Verifica que no haya espacios adicionales en el registro DNS
  • Espera la propagación DNS completa (hasta 48 horas)
  • Verifica sincronización del reloj: timedatectl status

Problema 3: OpenDKIM No Inicia

Síntomas: El servicio falla al iniciar

Diagnóstico:

# Check detailed status
sudo systemctl status opendkim -l

# Check configuration syntax
sudo opendkim -n

# Check journal for errors
sudo journalctl -u opendkim -n 50

Errores comunes y correcciones:

"Can't open key file"

# Fix permissions
sudo chown opendkim:opendkim /etc/opendkim/keys/example.com/default.private
sudo chmod 600 /etc/opendkim/keys/example.com/default.private

"Can't bind to socket"

# Remove old socket
sudo rm /var/spool/postfix/opendkim/opendkim.sock
sudo systemctl restart opendkim

"Can't create PID file"

# Create PID directory
sudo mkdir -p /var/run/opendkim
sudo chown opendkim:opendkim /var/run/opendkim

Problema 4: Registro DNS No Encontrado

Síntomas: opendkim-testkey reporta "key not found"

Diagnóstico:

# Query DNS directly
dig default._domainkey.example.com TXT +short

# Check from different DNS servers
dig @8.8.8.8 default._domainkey.example.com TXT +short
dig @1.1.1.1 default._domainkey.example.com TXT +short

Soluciones:

  • Verifica el nombre correcto del registro DNS (default._domainkey)
  • Verifica si tu proveedor DNS agrega el dominio automáticamente
  • Espera más tiempo para la propagación DNS
  • Limpia caché DNS: sudo systemd-resolve --flush-caches
  • Intenta FQDN completo: default._domainkey.example.com. (con punto final)

Problema 5: Errores de Permiso Denegado

Síntomas: Errores sobre acceso a archivos en los registros

Corregir todos los permisos:

# Fix OpenDKIM directory
sudo chown -R opendkim:opendkim /etc/opendkim
sudo chmod 750 /etc/opendkim
sudo chmod 750 /etc/opendkim/keys
sudo chmod 750 /etc/opendkim/keys/example.com

# Fix configuration files
sudo chmod 644 /etc/opendkim/key.table
sudo chmod 644 /etc/opendkim/signing.table
sudo chmod 644 /etc/opendkim/trusted.hosts

# Fix keys
sudo chmod 600 /etc/opendkim/keys/example.com/default.private
sudo chmod 644 /etc/opendkim/keys/example.com/default.txt

# Fix socket directory
sudo chown opendkim:postfix /var/spool/postfix/opendkim
sudo chmod 750 /var/spool/postfix/opendkim

# Restart service
sudo systemctl restart opendkim

Configuración Avanzada

Múltiples Dominios

Para múltiples dominios, genera claves separadas:

# For each domain:
sudo mkdir -p /etc/opendkim/keys/domain2.com
sudo opendkim-genkey -b 2048 -d domain2.com -D /etc/opendkim/keys/domain2.com -s default
sudo chown -R opendkim:opendkim /etc/opendkim/keys/domain2.com
sudo chmod 600 /etc/opendkim/keys/domain2.com/default.private

Actualiza key.table:

default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default.private
default._domainkey.domain2.com domain2.com:default:/etc/opendkim/keys/domain2.com/default.private

Actualiza signing.table:

*@example.com default._domainkey.example.com
*@domain2.com default._domainkey.domain2.com

Publica registros DNS separados para cada dominio.

Rotación de Claves

Rota las claves DKIM periódicamente para seguridad:

  1. Genera nueva clave con diferente selector:
sudo opendkim-genkey -b 2048 -d example.com -D /etc/opendkim/keys/example.com -s 202601
  1. Agrega a key.table:
202601._domainkey.example.com example.com:202601:/etc/opendkim/keys/example.com/202601.private
  1. Publica nuevo registro DNS
  2. Espera propagación
  3. Actualiza signing.table para usar nuevo selector
  4. Mantén la clave antigua activa por 30 días (para correos en tránsito)
  5. Elimina clave antigua y registro DNS

Subdominios

Para firmar correo desde subdominios:

Establece SubDomains en opendkim.conf:

SubDomains yes

Esto permite firmar correo desde subdomain.example.com con la clave de example.com.

Mejores Prácticas

1. Usar Claves Fuertes

  • Claves RSA mínimas de 2048-bit
  • Considera 4096-bit para requisitos de alta seguridad
  • Rota claves anualmente

2. Permisos Apropiados

  • Claves privadas: 600 (legible solo por opendkim)
  • Archivos de configuración: 644 (legible por todos, escribible por root)
  • Directorios: 750 (accesible por grupo opendkim)

3. Monitorear DKIM

# Check DKIM statistics
sudo grep "DKIM-Signature" /var/log/mail.log | wc -l

# Check for failures
sudo grep "dkim.*fail" /var/log/mail.log

4. Combinar con SPF y DMARC

DKIM solo no es suficiente. Implementa los tres:

  • SPF: Valida la IP del servidor remitente
  • DKIM: Valida integridad y autenticidad del mensaje
  • DMARC: Política para manejar fallas

5. Probar Regularmente

  • Envía correos electrónicos de prueba mensualmente
  • Monitorea resultados de autenticación
  • Verifica que los registros DNS no hayan cambiado
  • Verifica que las claves no hayan expirado o corrompido

6. Registro

Habilita registro completo durante la configuración:

LogWhy yes
SyslogSuccess yes

Después de la verificación, reduce el registro:

LogWhy no
SyslogSuccess no

Monitoreo y Mantenimiento

Crear Script de Monitoreo

sudo nano /usr/local/bin/check-dkim.sh

Agrega:

#!/bin/bash

echo "=== DKIM Status Check ==="
echo ""

echo "OpenDKIM Service:"
systemctl is-active opendkim

echo ""
echo "DNS Record Status:"
opendkim-testkey -d example.com -s default -vvv 2>&1 | grep "key"

echo ""
echo "Recent DKIM Signatures:"
grep "DKIM-Signature field added" /var/log/mail.log | tail -5

echo ""
echo "DKIM Failures (last 24h):"
grep "dkim.*fail" /var/log/mail.log | wc -l

Hacer ejecutable:

sudo chmod +x /usr/local/bin/check-dkim.sh

Programar Verificaciones Regulares

sudo crontab -e

Agrega:

0 9 * * * /usr/local/bin/check-dkim.sh | mail -s "Daily DKIM Report" [email protected]

Conclusión

Ahora tienes DKIM completamente configurado y operativo en tu servidor de correo. Tus correos electrónicos salientes están firmados criptográficamente, mejorando la capacidad de entrega y protegiendo la reputación de tu dominio.

Logros Clave

  1. OpenDKIM Instalado: Servicio ejecutándose e integrado con Postfix
  2. Claves Generadas: Par de claves RSA de 2048-bit seguro creado
  3. DNS Publicado: Clave pública disponible para verificación
  4. Firma Activa: Todo el correo saliente está firmado con DKIM
  5. Verificación Probada: Las firmas DKIM pasan la validación

Próximos Pasos

Para completar tu autenticación de correo electrónico:

  1. Configurar registros SPF para autorización de IP
  2. Implementar DMARC para aplicación de políticas
  3. Monitorear resultados de autenticación regularmente
  4. Configurar pruebas automatizadas para verificación continua
  5. Planificar calendario de rotación de claves para seguridad
  6. Combinar con filtrado de spam (SpamAssassin)

Recordatorios Importantes

  • Mantener las claves privadas seguras: Nunca expongas o compartas claves privadas
  • Monitorear registros DNS: Asegúrate de que no cambien inesperadamente
  • Probar después de cambios: Cualquier cambio de configuración debe ser probado
  • Rotar claves periódicamente: Rotación anual recomendada
  • Verificar registros regularmente: Monitorea fallas de firma

Con DKIM configurado correctamente, tus correos electrónicos tienen significativamente mejor capacidad de entrega y tu dominio está protegido contra spoofing. Combinado con SPF y DMARC, tendrás autenticación de correo electrónico estándar de la industria que maximiza la confianza y la confiabilidad.