¿Por qué validar la sintaxis DMARC antes de publicar?
Un registro DMARC mal formateado es ignorado silenciosamente por Gmail, Outlook, Yahoo y todos los servidores destinatarios. No se emite ninguna alerta. Tus correos quedan sin protección contra suplantación y phishing.
El validador lee tu registro antes de la publicación DNS, comprueba cada etiqueta y verifica los URIs de informe. Corriges los errores de inmediato, sin esperar 24 a 48 horas de propagación para descubrir que un detalle impide aplicar la política.
Etiquetas DMARC según la RFC 9989
La RFC 9989 define cada etiqueta autorizada en un registro DMARC. El validador comprueba el nombre, la posición y el valor de cada etiqueta.
| Etiqueta | Rol | Ejemplo |
|---|---|---|
| v | Versión del protocolo, siempre en primera posición | v=DMARC1 |
| p | Política aplicada al dominio raíz | p=quarantine |
| sp | Política aplicada a los subdominios | sp=reject |
| np | Política para subdominios inexistentes | none / quarantine / reject |
| t | Modo de prueba RFC 9989 | y / n |
| adkim | Modo de alineación DKIM, r (relajado) o s (estricto) | adkim=s |
| aspf | Modo de alineación SPF, r o s | aspf=r |
| pct | Etiqueta histórica / obsoleta, intervalo 0-100 | Omitir |
| rua | Destinos de los informes agregados (URI mailto) | rua=mailto:dmarc@captaindns.com |
| ruf | Destinos de los informes forenses (URI mailto) | ruf=mailto:forensic@captaindns.com |
| fo | Opciones de generación de informes forenses | fo=1 |
Las etiquetas v y p son obligatorias. Si se omiten, adkim y aspf toman el valor r. Se recomienda omitir pct, que ahora es una etiqueta histórica.
Ejemplos de corrección antes y después
El validador señala cada error de sintaxis con su posición. A continuación, tres casos frecuentes observados en registros publicados.
URI rua mal formado:
- v=DMARC1; p=reject; rua=reports@captaindns.com
+ v=DMARC1; p=reject; rua=mailto:reports@captaindns.com
El prefijo mailto: es obligatorio según la RFC 9989.
Política p inválida:
- v=DMARC1; p=monitor; rua=mailto:dmarc@captaindns.com
+ v=DMARC1; p=none; rua=mailto:dmarc@captaindns.com
Solo se aceptan los valores none, quarantine y reject.
pct fuera de rango:
- v=DMARC1; p=quarantine; pct=150; rua=mailto:dmarc@captaindns.com
+ v=DMARC1; p=quarantine; rua=mailto:dmarc@captaindns.com
El valor pct está fuera del rango 0-100; la corrección consiste en omitir pct.
Diagnósticos comunes del validador
El validador devuelve un código corto por cada anomalía detectada. Los códigos siguientes son los más frecuentes.
| Código | Causa | Acción |
|---|---|---|
| missing_version_tag | Etiqueta v=DMARC1 ausente | Añadir v=DMARC1 en primera posición |
| unsupported_version | Valor de v= distinto de DMARC1 | Reemplazar por v=DMARC1 |
| missing_policy | Etiqueta p= ausente | Añadir p=none, p=quarantine o p=reject |
| invalid_policy | Valor de p= fuera de none/quarantine/reject | Corregir el valor |
| invalid_subdomain_policy | Valor de sp= inválido | Usar none, quarantine o reject |
| invalid_alignment | Valor de adkim= o aspf= distinto de r/s | Ajustar a r o s |
| invalid_percent | pct= fuera del rango 0-100 | Usar un entero entre 0 y 100 |
| invalid_rua_uri | URI rua mal formado | Usar mailto:direccion@dominio |
| invalid_ruf_uri | URI ruf mal formado | Usar mailto:direccion@dominio |
| invalid_failure_option | Valor fo= no reconocido | Usar 0, 1, d o s |
| duplicate_tag | Etiqueta declarada dos veces | Conservar una sola aparición |
| unknown_tag | Nombre de etiqueta no reconocido | Verificar la ortografía con la RFC 9989 |
| np_absent | Falta np | Comprobar la herencia desde sp o p |
| deprecated_pct | pct histórico presente | Eliminar pct |
| testing_mode_active | t=y activo | La puntuación refleja la aplicación efectiva de la política |
| migrate_to_dmarcbis | Etiquetas históricas detectadas | Usar la herramienta de migración para sanear el registro |
| record_trailing_quote | Cadena TXT terminada en comilla | Eliminar la comilla final |
Los códigos de advertencia (policy_none, pct_less_than_100, subdomain_policy_none) indican una configuración válida que debe revisarse. pct_less_than_100 afecta a una etiqueta histórica: según la RFC 9989, hay que omitir pct, no definir pct=100.
FAQ - Preguntas frecuentes
¿Qué progresión adoptar para la política p=?
Empieza siempre con p=none para observar el tráfico mediante informes agregados (rua). Una vez que SPF y DKIM están alineados en todas tus fuentes legítimas, pasa a p=quarantine y después a p=reject. Evita saltar directamente a p=reject: los informes rua de la fase de observación casi siempre revelan flujos legítimos olvidados.
¿Debo configurar ruf además de rua?
No al principio. Los informes rua (agregados, diarios) son esenciales para dirigir tu despliegue. Los informes ruf (forenses, por mensaje fallido) generan un volumen importante y pueden contener datos personales. Actívalos solo si dispones de un pipeline de análisis y de un dictamen jurídico sobre la recolección de estos datos.
¿Debo configurar la etiqueta sp= en los subdominios?
Por defecto, los subdominios heredan la política p. Configura sp= únicamente si la política de los subdominios debe diferir del dominio raíz. Verifica que SPF y DKIM estén alineados en cada subdominio emisor antes de endurecer sp=.
¿El validador aplica las reglas DMARCbis?
DMARCbis se publicó en mayo de 2026 como RFC 9989, RFC 9990 y RFC 9991. La RFC 9989 deja obsoleta la RFC 7489; v=DMARC1 no cambia. DMARCbis Checker explica el tree walk DNS y la herramienta de migración retira etiquetas históricas.
Herramientas complementarias
| Herramienta | Utilidad |
|---|---|
| DMARC Checker | Verificar la publicación y resolver el registro DMARC desde el DNS |
| Generador DMARC | Crear un registro DMARC conforme a la especificación |
| Validador SPF | Validar la sintaxis SPF de tu dominio |
| Validador DKIM | Validar la sintaxis de una clave DKIM |
| Migración DMARCbis | Migrar un registro DMARC al nuevo estándar |
| Monitoring DMARC | Recibe y analiza automáticamente tus informes DMARC agregados |