Cómo encuentra un correo tu servidor de correo
Remitente
you@gmail.com
Consulta MX
¿quién recibe el correo?
Servidor de correo
prioridad 10 primero
Bandeja de entrada
entregado
Gana el número de prioridad más bajo; los más altos son de respaldo
Límite de 10 consultas de SPF: qué cuenta y cómo no superarlo
Un servidor de correo receptor comprueba SPF evaluando tu registro, y evaluarlo cuesta consultas DNS. Para mantener acotado ese coste, la RFC 7208 limita cuántos términos que provocan consultas puede evaluar una sola comprobación. Si se supera el límite, el resultado es permerror, un error permanente que no es un pass. Los verificadores suelen informar de ello como «demasiadas consultas DNS», y normalmente aparece justo después de añadir otro servicio de envío al registro.
Qué cuenta la especificación
La sección 4.6.4 de la RFC 7208 enumera los términos que provocan consultas DNS: los mecanismos include, a, mx, ptr y exists y el modificador redirect. Las implementaciones deben limitar el total de esos términos a 10 durante una evaluación y deben devolver permerror si se supera el límite. Los mecanismos all, ip4 y ip6 no necesitan ninguna consulta y no se cuentan, y tampoco el modificador exp, que solo se obtiene más tarde, tras un fallo.
| Término | ¿Cuenta para el límite de 10? | Notas |
|---|---|---|
include | Sí | Más cada término contado dentro del registro al que apunta |
a | Sí | Una consulta por el nombre |
mx | Sí | Limitado aparte a 10 consultas de direcciones; más de eso da permerror |
ptr | Sí | Desaconsejado: la RFC dice que no debería publicarse |
exists | Sí | Una consulta |
redirect | Sí | Cuenta cuando se llega a él (solo si ningún mecanismo coincidió, y nunca cuando el registro contiene all); el destino se evalúa entonces con el mismo cupo |
ip4, ip6 | No | La dirección está en el propio registro |
all | No | Por convención es el último mecanismo; lo que venga después se ignora |
exp | No | Solo se obtiene tras un fallo, para la cadena de explicación |
Importan dos detalles. Primero, include no copia otro registro dentro del tuyo: solo se usa su resultado, y la RFC admite que el nombre se eligió mal. Un -all dentro de un registro incluido no pone fin a la evaluación global. Segundo, los mecanismos se evalúan de izquierda a derecha y el procesamiento se detiene en el primero que coincide. El límite se aplica a los términos que realmente se evalúan durante una comprobación, no al tamaño del registro sobre el papel.
Contar un registro a mano
Considera un registro hipotético de una empresa que usa dos plataformas de correo, un CRM, un servicio de asistencia y su propio servidor de correo:
v=spf1 include:mailer-a.example include:mailer-b.example include:crm.example include:helpdesk.example mx a ~allSupón que los registros incluidos contienen los términos siguientes. Están inventados a modo de ilustración, y los registros de los proveedores reales son distintos y cambian con el tiempo.
| Término evaluado | Consultas usadas hasta ahora |
|---|---|
include:mailer-a.example | 1 |
dentro de él: include:_nets.mailer-a.example | 2 |
include:mailer-b.example | 3 |
dentro de él: a | 4 |
dentro de él: mx | 5 |
include:crm.example | 6 |
dentro de él: include:spf1.crm.example | 7 |
dentro de él: include:spf2.crm.example | 8 |
include:helpdesk.example | 9 |
mx | 10 |
a | 11: supera el límite, permerror |
El correo enviado a través de la primera plataforma coincide pronto y pasa. El correo del servidor que solo autoriza la última a necesita una undécima consulta, así que la comprobación devuelve permerror en lugar de una coincidencia. Esa asimetría es la razón por la que este fallo parece intermitente: depende del remitente cuyo correo se esté comprobando.
Otros límites de la misma especificación
- Consultas vacías. Una consulta que no devuelve registros, o que devuelve un error de nombre, es una consulta vacía. La RFC 7208 recomienda limitarlas a dos, y superar el límite produce
permerror. Aparte de eso, uninclude:cuyo destino no tiene registro SPF, incluido un nombre que ya no existe, devuelvenone, y el mecanismo include lo convierte de inmediato enpermerror, de modo que un include obsoleto puede romper un registro por sí solo. - Ramificación. Un mecanismo
mxno puede desencadenar más de 10 consultas de direcciones. En el caso deptr, los nombres posteriores a los 10 primeros se ignoran. - Un solo registro. Si un dominio publica más de un registro cuya versión es exactamente
v=spf1, el resultado espermerror. - Tamaño. La RFC aconseja mantener el registro publicado lo bastante pequeño para que la respuesta quepa en 512 octetos, de modo que viaje en un único paquete UDP sin EDNS(0).
- Tipo de registro. SPF debe publicarse como registro TXT. El tipo de registro SPF específico que se usó durante el periodo experimental se ha retirado.
- Tiempo. Los receptores deberían limitar el tiempo dedicado a una evaluación, pero permitir al menos 20 segundos. Si se supera ese límite de tiempo, el resultado debería ser
temperror, un error temporal, y nopermerror.
Cómo volver a quedar por debajo del límite
- Elimina lo que ya no uses. Un servicio cancelado sigue costando una consulta siempre que la evaluación llega a su
include. Quitar los include muertos es la solución más barata. - Traslada remitentes a subdominios. Cada nombre tiene su propio registro y su propio cupo de 10. El correo cuyo remitente del sobre está en
news.example.comse comprueba con el registro de ese nombre, no con el del dominio raíz. Con la alineación relajada, DMARC sigue asociando el subdominio con el dominio organizativo. - Sustituye
aymxpor direcciones literales cuando los servidores son tuyos y rara vez cambian.ip4eip6no cuestan nada. - Aplana con cuidado. Aplanar sustituye un
includepor las direcciones a las que se resuelve actualmente. Hoy pasa y falla en silencio cuando el proveedor cambia sus rangos. - Elimina
ptr. La RFC dice que no debería publicarse. Cambiarredirectporincludeno ahorra nada, ya que ambos cuentan una consulta. - Ordena por volumen, pero no cuentes con ello. Como la evaluación se detiene en la primera coincidencia, poner primero los literales y tus remitentes de mayor volumen gasta menos consultas en la mayor parte del correo. Eso reduce la frecuencia con la que el límite causa problemas; no hace válido un registro que supera el límite, y puede ocultar el fallo hasta que envía un remitente de uso poco frecuente.
Un permerror importa más allá del propio SPF. DMARC (RFC 7489) pasa cuando SPF o DKIM pasan con un dominio alineado, y permerror no es un pass, así que SPF ya no puede aportar. Si DKIM también falta o no está alineado, el mensaje no supera DMARC. Para ver tu propio recuento, el comprobador SPF sigue cada include y cada redirect y cuenta las consultas de todo el árbol frente al límite de 10. Es un recuento del peor caso de términos, no solo de los que desencadenaría un mensaje concreto. Cuando cambies el registro, baja antes su TTL para poder revertir rápido un error; consulta TTL de DNS explicado. Para ver el panorama general, lee SPF, DKIM y DMARC explicados.
Idea clave
Cuenta términos, no caracteres: include, a, mx, ptr, exists y redirect cuestan una consulta cada uno, los anidados incluidos, y la undécima hace que la comprobación devuelva permerror.
Fuentes y lecturas complementarias
- RFC 7208: Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1 (Kitterman, 2014)
- RFC 7489: Domain-based Message Authentication, Reporting, and Conformance (DMARC) (Kucherawy and Zwicky, 2015)
¿Necesitas comprobar las direcciones DNS públicas de un dominio? Usa la herramienta Domain IP Lookup.
Herramientas gratuitas sobre este tema
Preguntas frecuentes
Lecturas relacionadas
Los registros que encontrarás en casi toda zona
Registros TXT explicados: SPF, DKIM y DMARC
Tres registros TXT separan tu correo de la carpeta de spam. Qué hace cada uno, cómo leer su sintaxis y el orden seguro para implantarlos.
Cómo encuentra un correo tu servidor de correo
Remitente
you@gmail.com
Consulta MX
¿quién recibe el correo?
Servidor de correo
prioridad 10 primero
Bandeja de entrada
entregado
Gana el número de prioridad más bajo; los más altos son de respaldo
Registros DNS de correo: MX, SPF, DKIM y DMARC
Guía práctica de los registros DNS de los que depende el correo, de cómo se combinan enrutamiento y autenticación y de qué verificar tras una migración.
Cómo encuentra un correo tu servidor de correo
Remitente
you@gmail.com
Consulta MX
¿quién recibe el correo?
Servidor de correo
prioridad 10 primero
Bandeja de entrada
entregado
Gana el número de prioridad más bajo; los más altos son de respaldo
Qué son los registros MX: así se enruta el correo
El registro que decide dónde llega tu correo: cómo funcionan los números de prioridad, qué es el MX nulo y los errores que pierden mensajes en silencio.