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.