Guía rápida de la sintaxis de SPF, DKIM y DMARC

Sintaxis de los registros: mecanismos y calificadores de SPF, etiquetas de firma y de clave de DKIM (RFC 6376) y etiquetas de DMARC (RFC 7489 y RFC 9989), con ejemplos.

Última revisión:

AdSense Placeholder
Slot: header_reference_page
En esta página

Los tres viven en el DNS como registros TXT. SPF enumera los servidores autorizados a enviar correo de un dominio, DKIM publica la clave pública que verifica las firmas de los mensajes y DMARC indica a los receptores qué hacer cuando ninguno de los dos se cumple con alineación respecto al dominio visible de From:. El contexto está en Cómo funciona la autenticación de correo: SPF, DKIM y DMARC; las tablas siguientes siguen la RFC 7208 (SPF), la RFC 6376 (DKIM) y la RFC 7489 junto con su sucesora de mayo de 2026, la RFC 9989 (DMARC). Los ejemplos usan example.com y direcciones de documentación.

Dónde vive cada registro

Registro Nombre DNS Valor de ejemplo
SPF el propio dominio: example.com v=spf1 mx include:_spf.example.net -all
Clave DKIM <selector>._domainkey.example.com v=DKIM1; k=rsa; p=MIIBIjANBgkq...
DMARC _dmarc.example.com v=DMARC1; p=quarantine; rua=mailto:[email protected]

Mecanismos de SPF (RFC 7208)

Mecanismo Coincide cuando la IP emisora... ¿Consulta DNS? Ejemplo
ip4 está en la dirección o el rango IPv4 No ip4:192.0.2.0/24
ip6 está en la dirección o el rango IPv6 No ip6:2001:db8::/32
a es una dirección A/AAAA del dominio (o del indicado) Sí a, a:mail.example.com
mx es una dirección de alguno de los hosts MX del dominio Sí mx, mx:example.net
include supera el registro SPF de otro dominio Sí include:_spf.example.net
exists hace que el nombre indicado (con macros expandidas) se resuelva a cualquier registro A Sí exists:%{i}._spf.example.com
ptr se resuelve de forma inversa al dominio (lento; la RFC dice que no se use) Sí ptr
all siempre coincide; va al final No -all
Modificador Significado Ejemplo
redirect= Usa el registro SPF de otro dominio cuando nada más coincidió redirect=_spf.example.com
exp= Nombre de un registro TXT con la explicación del rechazo exp=explain._spf.example.com

Calificadores y resultados de SPF

Calificador Resultado Significado
+ (por defecto) pass Emisor autorizado
- fail No autorizado: rechazar
~ softfail Probablemente no autorizado: aceptar pero marcar
? neutral Sin pronunciamiento

Otros resultados: none (sin registro SPF), temperror (tiempo de espera del DNS agotado; reintentar más tarde) y permerror (registro defectuoso, por ejemplo dos registros v=spf1 o demasiadas consultas).

Límites: como máximo 10 mecanismos y modificadores que provoquen consultas DNS (include, a, mx, ptr, exists, redirect) por comprobación, contando los include anidados; ip4, ip6 y all no cuentan. Como máximo 2 consultas pueden no devolver nada («consultas vacías»). El generador de registros SPF cuenta las consultas por usted.

Macros (usadas en exists y exp): %{s} remitente, %{l} parte local, %{o} dominio del remitente, %{d} dominio actual, %{i} IP del cliente, %{h} nombre HELO, %{v} in-addr o ip6, %{p} nombre validado de la IP (no la use).

Etiquetas de la cabecera DKIM-Signature (RFC 6376)

Etiqueta ¿Obligatoria? Significado Ejemplo
v Obligatoria Versión v=1
a Obligatoria Algoritmo a=rsa-sha256 (también ed25519-sha256, RFC 8463)
d Obligatoria Dominio firmante (SDID) d=example.com
s Obligatoria Selector; la clave está en s._domainkey.d s=mail2026
h Obligatoria Campos de cabecera firmados, separados por dos puntos h=from:to:subject:date
bh Obligatoria Hash del cuerpo canonizado (base64) bh=47DEQpj8HBSa+/...
b Obligatoria La firma en sí (base64) b=dzdVyOfAKCdLXdJO...
c Opcional Canonización cabecera/cuerpo; por defecto simple/simple c=relaxed/relaxed
i Opcional Identificador de agente o usuario (AUID); por defecto @d [email protected]
l Opcional Longitud del cuerpo firmada (arriesgada: permite añadir contenido) l=1024
q Opcional Método de consulta de la clave; por defecto dns/txt q=dns/txt
t Recomendada Hora de la firma, en segundos Unix t=1791600000
x Recomendada Hora de caducidad, en segundos Unix; debe ser posterior a t x=1792204800
z Opcional Campos de cabecera copiados, para diagnóstico z=From:...

La RFC 8301 retiró rsa-sha1: los firmantes no deben usarlo y las claves RSA deben tener al menos 1024 bits (se recomiendan 2048).

Etiquetas del registro de clave DKIM (RFC 6376)

Etiqueta ¿Obligatoria? Significado Ejemplo
v Recomendada Versión; debe ir la primera si está presente v=DKIM1
k Opcional Tipo de clave; por defecto rsa k=ed25519
p Obligatoria Clave pública (base64); vacía significa que la clave está revocada p=MIIBIjANBgkq...
h Opcional Algoritmos de hash aceptados; por defecto todos h=sha256
s Opcional Tipo de servicio; por defecto * s=email
t Opcional Indicadores: y pruebas, s estricto (el dominio de i= debe ser igual a d=) t=s
n Opcional Notas para personas n=rotated 2026-10

Una cadena TXT admite como máximo 255 caracteres, así que una clave de 2048 bits se publica como varias cadenas entrecomilladas dentro de un mismo registro, que los resolutores unen. Genere las claves y el registro con el generador de registros DKIM.

Etiquetas de DMARC

Etiqueta Significado Valores y valor por defecto RFC 7489 RFC 9989
v Versión, debe ir la primera DMARC1 Obligatoria Obligatoria
p Política del dominio none, quarantine, reject Obligatoria Recomendada (si falta = none)
sp Política de los subdominios mismos valores; por defecto p Sí Sí
np Política de los subdominios inexistentes mismos valores; por defecto sp y, si no, p (RFC 9091) Sí
adkim Alineación de DKIM r relajada (por defecto), s estricta Sí Sí
aspf Alineación de SPF r relajada (por defecto), s estricta Sí Sí
rua Direcciones de informes agregados URI mailto:, separados por comas Sí Sí
ruf Direcciones de informes de fallos URI mailto: Sí Sí
fo Cuándo enviar informes de fallos 0 (por defecto), 1, d, s, separados por dos puntos Sí Sí
pct Porcentaje del correo fallido al que se aplica la política 0 a 100, por defecto 100 Sí Eliminada
t Modo de prueba: aplicar un nivel por debajo de p y, n (por defecto) No Sí
psd Marca un dominio de sufijo público y, n, u (por defecto) No Sí
rf Formato de los informes de fallos afrf (por defecto) Sí Eliminada
ri Intervalo de los informes agregados en segundos 86400 (por defecto) Sí Eliminada

Los receptores todavía se encuentran con ambas generaciones; pct=100 y t=n son el comportamiento por defecto, así que un registro sin ninguna de las dos se interpreta igual en todas partes.

Registros de ejemplo

Objetivo Registro
Dominio que no envía correo SPF v=spf1 -all, DMARC v=DMARC1; p=reject; sp=reject
Servidores propios más un proveedor v=spf1 mx ip4:192.0.2.25 include:_spf.example.net -all
Primer paso de DMARC: supervisar v=DMARC1; p=none; rua=mailto:[email protected]
Aplicar de forma estricta, informe diario v=DMARC1; p=reject; adkim=s; aspf=s; rua=mailto:[email protected]
Clave DKIM Ed25519 v=DKIM1; k=ed25519; p=<32-byte key in base64>

Compruebe lo que publica un dominio con la consulta de registros DNS o con el comprobador de entregabilidad del correo, y vea cómo le fue a un mensaje recibido en su cabecera Authentication-Results con el analizador de cabeceras de correo.

Pruebe estas herramientas

Véase también

  • Guía Cómo funciona la autenticación de correo: SPF, DKIM y DMARC
    Qué comprueba cada uno de SPF, DKIM y DMARC, cómo son sus registros DNS.
  • Glosario SPF
    SPF (Sender Policy Framework) es un registro DNS que enumera qué servidores pueden enviar correo en nombre de un dominio.
  • Glosario DKIM
    DKIM (DomainKeys Identified Mail) añade una firma digital al correo saliente que los receptores verifican con una clave pública publicada.
  • Glosario DMARC
    DMARC es una política DNS que indica a los receptores qué hacer con el correo que no supera la alineación de SPF y DKIM.
  • Hoja de referencia Guía rápida de tipos de registro DNS
    Tipos de registro DNS con su número, finalidad y ejemplos de archivo de zona, desde A, AAAA, MX y TXT hasta SRV, CAA.

Preguntas frecuentes

No. Dos registros TXT v=spf1 en el mismo nombre dan como resultado permerror. Únalos en un solo registro, usando include: para cada servicio de envío.

AdSense Placeholder
Slot: footer_leaderboard