Seguridad de correo con SPF, DKIM y DMARC
Aprende cómo proteger tu dominio contra la suplantación de correo usando registros SPF, DKIM y DMARC. Guía paso a paso para configuración desde el panel de control y la API de DNScale.
La suplantación de correo permite a los atacantes enviar mensajes que parecen provenir de tu dominio. Sin una autenticación adecuada, cualquiera puede enviar un correo afirmando ser de ceo@tudominio.com. SPF, DKIM y DMARC son estándares basados en DNS que ayudan a los servidores de correo receptores a verificar los correos legítimos.
Lo que aprenderás
- Cómo SPF declara los servidores de correo autorizados
- Cómo DKIM firma criptográficamente los correos
- Cómo DMARC define políticas para autenticación fallida
- Configuración de los tres mediante el panel de control y la API de DNScale
- Pruebas y validación de tu configuración
SPF (Sender Policy Framework)
Qué hace SPF
SPF te permite especificar qué direcciones IP y servidores de correo pueden enviar correo en nombre de tu dominio. Los servidores receptores verifican tu registro SPF para confirmar que el remitente está autorizado.
Sintaxis del registro SPF
Un registro SPF es un registro TXT en el apex de tu dominio:
v=spf1 [mecanismos] [calificador]all| Componente | Descripción |
|---|---|
v=spf1 | Identificador de versión (obligatorio) |
include:dominio | Permitir servidores autorizados por el SPF de otro dominio |
a | Permitir la IP del registro A del dominio |
mx | Permitir los servidores MX del dominio |
ip4:x.x.x.x | Permitir una dirección o rango IPv4 específico |
ip6:x::x | Permitir una dirección o rango IPv6 específico |
~all | Fallo suave para remitentes no autorizados |
-all | Fallo duro para remitentes no autorizados |
Ejemplos comunes de SPF
Google Workspace:
v=spf1 include:_spf.google.com ~allMicrosoft 365:
v=spf1 include:spf.protection.outlook.com ~allMúltiples proveedores:
v=spf1 include:_spf.google.com include:spf.protection.outlook.com ~allServidor de correo propio:
v=spf1 ip4:203.0.113.5 mx ~allMejores prácticas de SPF
- Comienza con
~all(fallo suave), cambia a-alldespués de las pruebas - Mantén menos de 10 búsquedas DNS (límite de SPF)
- Incluye todas las fuentes de envío: correo transaccional, plataformas de marketing, etc.
DKIM (DomainKeys Identified Mail)
Qué hace DKIM
DKIM agrega una firma digital a los correos salientes. Tu servidor de correo firma cada correo con una clave privada, y publicas la clave pública correspondiente en DNS. Los servidores receptores usan esta clave pública para verificar la firma, demostrando que el correo no fue alterado y provino de un remitente autorizado.
Cómo funciona DKIM
- Tu servidor de correo genera una firma criptográfica usando una clave privada
- La firma se agrega a los encabezados del correo
- Los servidores receptores buscan tu clave pública DKIM en DNS
- Verifican que la firma coincida con el contenido del correo
- Si es válida, el correo pasa la autenticación DKIM
Sintaxis del registro DKIM
Un registro DKIM es un registro TXT en selector._domainkey.tudominio.com:
selector._domainkey.tudominio.com. TXT "v=DKIM1; k=rsa; p=MIGfMA0GCS..."| Etiqueta | Descripción |
|---|---|
v=DKIM1 | Identificador de versión |
k=rsa | Tipo de clave (generalmente RSA) |
p=... | Clave pública (codificada en base64) |
t=s | (Opcional) Modo estricto - coincidencia exacta de dominio requerida |
t=y | (Opcional) Modo de prueba |
Selectores DKIM
El selector es un nombre que identifica qué clave usar. Esto permite:
- Rotación de claves sin tiempo de inactividad
- Diferentes claves para diferentes servicios de correo
- Múltiples claves activas simultáneamente
Patrones comunes de selectores:
googlepara Google Workspaceselector1,selector2para Microsoft 365k1,k2,k3para configuraciones personalizadasmailjet,sendgridpara servicios de terceros
Obtener tus claves DKIM
Las claves DKIM son generadas por tu proveedor de correo. Aquí es donde encontrarlas:
Google Workspace:
- Consola de Administración → Apps → Google Workspace → Gmail
- Autenticar correo → Generar nuevo registro
- Copia el valor del registro TXT
Microsoft 365:
- Microsoft 365 Defender → Email & collaboration → Policies
- DKIM → Seleccionar dominio → Crear claves DKIM
- Copia ambos registros selector1 y selector2
Servicios de terceros (SendGrid, Mailjet, etc.):
- Revisa el panel de tu proveedor para la configuración DNS
- Te proporcionarán el nombre del selector y la clave pública
Ejemplos de registros DKIM
Google Workspace:
google._domainkey.tudominio.com. TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."Microsoft 365:
selector1._domainkey.tudominio.com. TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNA..."
selector2._domainkey.tudominio.com. TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNA..."Personalizado/Terceros:
mail._domainkey.tudominio.com. TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3..."Mejores prácticas de DKIM
- Usa claves de 2048 bits - Las claves de 1024 bits son cada vez más vulnerables
- Rota las claves periódicamente - Al menos anualmente por seguridad
- Mantén las claves privadas seguras - Nunca las expongas en DNS o logs
- Usa selectores únicos - Diferentes selectores para cada servicio
- Prueba antes de aplicar DMARC - Asegúrate de que DKIM pase antes de
p=reject
DMARC (Domain-based Message Authentication)
Qué hace DMARC
DMARC se construye sobre SPF (y DKIM) para proporcionar:
- Una política que indica a los receptores qué hacer con los correos que fallan
- Reportes para que puedas monitorear los resultados de autenticación
Sintaxis del registro DMARC
Un registro DMARC es un registro TXT en _dmarc.tudominio.com:
v=DMARC1; p=politica; [etiquetas opcionales]Etiquetas obligatorias:
| Etiqueta | Descripción |
|---|---|
v=DMARC1 | Identificador de versión |
p=none|quarantine|reject | Política para correos que fallan |
Etiquetas opcionales:
| Etiqueta | Descripción |
|---|---|
rua=mailto:dirección | Destino de reportes agregados |
ruf=mailto:dirección | Destino de reportes forenses |
pct=100 | Porcentaje al que aplicar la política (predeterminado 100) |
sp=politica | Política para subdominios |
Opciones de política DMARC
| Política | Acción | Cuándo usar |
|---|---|---|
p=none | Solo monitoreo | Configuración inicial |
p=quarantine | Enviar a spam | Intermedio |
p=reject | Bloquear completamente | Protección total |
Ejemplos de DMARC
Modo monitoreo:
v=DMARC1; p=none; rua=mailto:dmarc-reports@tudominio.comModo cuarentena:
v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@tudominio.com; pct=100Modo rechazo:
v=DMARC1; p=reject; rua=mailto:dmarc-reports@tudominio.comImplementación recomendada
- Semana 1-2:
p=nonepara monitorear - Semana 3-4: Revisar reportes, corregir problemas
- Semana 5-6:
p=quarantineconpct=25 - Semana 7-8: Aumentar a
pct=100 - Semana 9+: Cambiar a
p=reject
Configuración desde el panel de DNScale
Crear registro SPF
- Inicia sesión en dnscale.eu
- Selecciona tu dominio
- Haz clic en Add Record
- Configura:
- Name: Dejar vacío (apex)
- Type: TXT
- Content:
v=spf1 include:_spf.google.com ~all - TTL: 3600
- Haz clic en Create Record
Crear registro DKIM
- Obtén tu clave pública DKIM de tu proveedor de correo (ver "Obtener tus claves DKIM" arriba)
- Haz clic en Add Record
- Configura:
- Name:
google._domainkey(o el selector de tu proveedor) - Type: TXT
- Content:
v=DKIM1; k=rsa; p=MIIBIjANBgkq...(tu clave pública) - TTL: 3600
- Name:
- Haz clic en Create Record
Nota: Para Microsoft 365, necesitarás crear dos registros (selector1 y selector2).
Crear registro DMARC
- Haz clic en Add Record
- Configura:
- Name:
_dmarc - Type: TXT
- Content:
v=DMARC1; p=none; rua=mailto:dmarc@tudominio.com - TTL: 3600
- Name:
- Haz clic en Create Record
Configuración desde la API de DNScale
Autenticación
export DNSCALE_API_KEY="your-api-key"Obtener ID de zona
curl -s "https://api.dnscale.eu/v1/zones" \
-H "Authorization: Bearer $DNSCALE_API_KEY" | jq '.data.zones[] | {id, name}'Crear registro SPF
curl -X POST "https://api.dnscale.eu/v1/zones/{zone_id}/records" \
-H "Authorization: Bearer $DNSCALE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "@",
"type": "TXT",
"content": "v=spf1 include:_spf.google.com ~all",
"ttl": 3600
}'Crear registro DKIM
curl -X POST "https://api.dnscale.eu/v1/zones/{zone_id}/records" \
-H "Authorization: Bearer $DNSCALE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "google._domainkey",
"type": "TXT",
"content": "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...",
"ttl": 3600
}'Reemplaza google._domainkey con tu selector y la clave pública con tu clave DKIM real.
Crear registro DMARC
curl -X POST "https://api.dnscale.eu/v1/zones/{zone_id}/records" \
-H "Authorization: Bearer $DNSCALE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "_dmarc",
"type": "TXT",
"content": "v=DMARC1; p=none; rua=mailto:dmarc@tudominio.com",
"ttl": 3600
}'Verificar registros
curl -s "https://api.dnscale.eu/v1/zones/{zone_id}/records" \
-H "Authorization: Bearer $DNSCALE_API_KEY" | jq '.data.records[] | select(.type == "TXT")'Pruebas y validación
Herramientas en línea
- MXToolbox SPF Check
- MXToolbox DKIM Check
- MXToolbox DMARC Check
- DMARC Analyzer
- Mail Tester - Envía un correo de prueba para verificar toda la autenticación
Línea de comandos
# Verificar SPF
dig TXT tudominio.com +short
# Verificar DKIM (reemplaza 'google' con tu selector)
dig TXT google._domainkey.tudominio.com +short
# Verificar DMARC
dig TXT _dmarc.tudominio.com +shortEnviar un correo de prueba
La mejor manera de verificar que todo funciona es enviar un correo de prueba y revisar los encabezados:
- Envía un correo a una cuenta de Gmail
- Abre el correo → Haz clic en los tres puntos → "Mostrar original"
- Busca:
spf=passdkim=passdmarc=pass
Resumen
| Registro | Nombre | Tipo | Ejemplo |
|---|---|---|---|
| SPF | @ | TXT | v=spf1 include:_spf.google.com ~all |
| DKIM | selector._domainkey | TXT | v=DKIM1; k=rsa; p=MIIBIjAN... |
| DMARC | _dmarc | TXT | v=DMARC1; p=none; rua=mailto:dmarc@example.com |
Cómo funcionan juntos:
- SPF verifica que el servidor de envío está autorizado
- DKIM verifica que el contenido del correo no fue modificado
- DMARC indica a los receptores qué hacer cuando SPF o DKIM fallan
Orden de implementación recomendado:
- Configura SPF primero (el más fácil)
- Configura DKIM con tu proveedor de correo
- Agrega DMARC en modo monitoreo (
p=none) - Revisa reportes, corrige problemas
- Aumenta gradualmente la aplicación de DMARC (
p=quarantine→p=reject)