¿Qué es DKIM?
DKIM (Correo Identificado por Claves de Dominio) es un método de autenticación de correo que permite al servidor de envío firmar digitalmente los mensajes salientes. El servidor receptor puede entonces verificar esta firma usando una clave pública publicada en DNS, confirmando que el correo no ha sido modificado en tránsito y que realmente se originó del dominio indicado.
Cómo funciona DKIM
1. Generación de clave: El propietario del dominio genera un par de claves pública/privada
2. Publicación en DNS: La clave pública se publica como un registro TXT
3. Firma de mensaje: Los correos salientes se firman con la clave privada
4. Verificación de firma: El servidor receptor recupera la clave pública y verifica la firma
El proceso de firma
Cuando se envía un correo:
1. El servidor de correo calcula un hash de los encabezados y cuerpo del mensaje
2. El hash se encripta con la clave privada (creando la firma)
3. La firma se añade como un encabezado DKIM-Signature
4. El correo se transmite
El proceso de verificación
Cuando se recibe un correo:
1. El servidor extrae el encabezado DKIM-Signature
2. Encuentra el selector y dominio (s=selector; d=dominio.com)
3. Consulta DNS por el registro TXT selector._domainkey.dominio.com
4. Usa la clave pública para descifrar la firma
5. Calcula su propio hash del mensaje
6. Compara: coincidencia = pass, no coincidencia = fail
Formato del registro DKIM
Los registros DKIM son registros TXT en un subdominio específico:
selector._domainkey.ejemplo.com. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0..."
Componentes del registro
| Etiqueta | Descripción | Ejemplo |
|---|---|---|
| v | Versión | v=DKIM1 |
| k | Tipo de clave | k=rsa |
| p | Clave pública (base64) | p=MIGfMA0GCSqG... |
| t | Banderas (opcional) | t=y (modo de prueba) |
| h | Algoritmos de hash | h=sha256 |
Selectores
Los selectores permiten múltiples claves DKIM por dominio:
google._domainkey.ejemplo.com # Google Workspace
s1._domainkey.ejemplo.com # Sendgrid
mailchimp._domainkey.ejemplo.com # Mailchimp
Cada servicio de correo proporciona su propio selector y clave.
Encabezado de firma DKIM
Una firma DKIM se ve así:
DKIM-Signature: v=1; a=rsa-sha256; d=ejemplo.com; s=google;
c=relaxed/relaxed; q=dns/txt;
h=from:to:subject:date:message-id;
bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
b=AuUoFEfDxTDkHlLXSZEpZj79...
Campos clave:
- d=: Dominio de firma
- s=: Selector (usado para encontrar el registro DNS)
- h=: Encabezados incluidos en la firma
- b=: La firma real
- bh=: Hash del cuerpo
Configuración de DKIM
Para Google Workspace
1. Ve a Consola de administración → Aplicaciones → Gmail → Autenticar correo
2. Genera clave DKIM (2048 bits recomendado)
3. Añade el registro TXT proporcionado por Google
4. Activa la firma DKIM
Para servicios de terceros
La mayoría de servicios de correo (SendGrid, Mailchimp, etc.) proporcionan:
1. Un registro CNAME a añadir (para su clave gestionada)
2. O un registro TXT con la clave pública
Ejemplo (SendGrid):
s1._domainkey.ejemplo.com CNAME s1.domainkey.sendgrid.net
Verificación de DKIM
Envía un correo de prueba a un servicio que muestre encabezados (Gmail muestra resultados de autenticación). Usando línea de comandos:dig google._domainkey.ejemplo.com TXT
Usando DomScan:
curl "https://domscan.net/v1/health?domain=ejemplo.com"
# Reporta el estado DKIM basado en selectores comunes
Mejores prácticas de DKIM
Usa claves de 2048 bits
Las claves antiguas de 1024 bits son cada vez más vulnerables. La mayoría de proveedores ahora usan por defecto 2048 bits.
Rota las claves periódicamente
Rota las claves DKIM anualmente o después de incidentes de seguridad. Publica la nueva clave con nuevo selector antes de cambiar.
Firma encabezados importantes
Asegúrate de que From, To, Subject, Date y Message-ID se incluyan en las firmas.
No modifiques mensajes firmados
Los servidores de listas de correo o servicios de reenvío que modifican contenido romperán DKIM. Usa ARC (Cadena de Recepción Autenticada) para correo reenviado.
Limitaciones de DKIM
DKIM por sí solo no previene la suplantación—solo demuestra que un mensaje no fue alterado. Un dominio puede tener DKIM válido mientras los atacantes envían correo sin firmar suplantado. DMARC aborda esto especificando qué hacer con mensajes sin firmar.