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
- Generación de Claves: Generas un par de claves criptográficas (privada y pública)
- Almacenamiento de Clave Privada: La clave privada permanece segura en tu servidor de correo
- Publicación de Clave Pública: La clave pública se publica en tu DNS como un registro TXT
- Firma de Correo Electrónico: Al enviar correo, tu servidor firma el mensaje con la clave privada
- Verificación de Firma: Los servidores receptores recuperan tu clave pública desde DNS y verifican la firma
- 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
- Mejora en la Capacidad de Entrega: Los correos electrónicos pasan las verificaciones de autenticación
- Reducción del Marcado de Spam: Correos electrónicos legítimos menos propensos a ser marcados como spam
- Protección de Marca: Previene el spoofing de dominio y phishing
- Construcción de Confianza: Los destinatarios pueden verificar la autenticidad del correo electrónico
- Cumplimiento: Requerido por muchas organizaciones y proveedores de correo electrónico
- 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 configuradokey not found: DNS no propagado aún o registro incorrectokey 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
- Envía correo electrónico a Gmail, Yahoo, u otro proveedor
- Abre el correo electrónico
- Ver encabezados completos (usualmente "Show original" o similar)
- 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 exitosadkim=fail: Verificación de firma fallódkim=neutral: No se encontró firma DKIM o no se pudo verificardkim=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
- Visita https://www.mail-tester.com/
- Obtén la dirección de correo electrónico única
- Envía correo electrónico desde tu servidor:
echo "DKIM Test via mail-tester" | mail -s "Test" [email protected]
- Ver resultados en el sitio web
- Verifica sección DKIM para estado pass/fail
DKIMValidator.com
- Visita https://dkimvalidator.com/
- Obtén la dirección de prueba única
- Envía correo electrónico de prueba a esa dirección
- 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:
- Genera nueva clave con diferente selector:
sudo opendkim-genkey -b 2048 -d example.com -D /etc/opendkim/keys/example.com -s 202601
- Agrega a key.table:
202601._domainkey.example.com example.com:202601:/etc/opendkim/keys/example.com/202601.private
- Publica nuevo registro DNS
- Espera propagación
- Actualiza signing.table para usar nuevo selector
- Mantén la clave antigua activa por 30 días (para correos en tránsito)
- 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
- OpenDKIM Instalado: Servicio ejecutándose e integrado con Postfix
- Claves Generadas: Par de claves RSA de 2048-bit seguro creado
- DNS Publicado: Clave pública disponible para verificación
- Firma Activa: Todo el correo saliente está firmado con DKIM
- Verificación Probada: Las firmas DKIM pasan la validación
Próximos Pasos
Para completar tu autenticación de correo electrónico:
- Configurar registros SPF para autorización de IP
- Implementar DMARC para aplicación de políticas
- Monitorear resultados de autenticación regularmente
- Configurar pruebas automatizadas para verificación continua
- Planificar calendario de rotación de claves para seguridad
- 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.


