← RFC Reference

Enrutamiento de DNS y Correo

Email Concepts Encyclopedia Published March 2026
ELI5: Imagina que quieres enviar una carta a alguien en una empresa. No conoces el edificio exacto, así que llamas a la centralita de la empresa (DNS) y preguntas "¿dónde debo enviar correo?" (consulta MX). Te dan una lista de salas de correo ordenadas por preferencia. Intentas la primera. Si está cerrada, intentas la siguiente. Si la empresa no tiene listado de centralita, intentas la dirección de la oficina principal (registro A). Si han puesto un cartel que dice "no se acepta correo" — ese es un MX Null.

Cómo DNS impulsa toda la ruta de entrega de correo electrónico — registros MX, prioridad y conmutación por error, respaldo A/AAAA, MX nulo, registros PTR y los registros DNS que cada dominio de envío necesita.

El Algoritmo de Enrutamiento de Correo

Cuando un servidor de envío necesita entregar un mensaje a user@example.com, sigue este algoritmo, definido en RFC 5321 Sección 5:

  1. Consultar registros MX para example.com
  2. Si existen registros MX, ordenar por prioridad (número más bajo = preferencia más alta)
  3. Para cada nombre de host MX, resolver sus registros A y/o AAAA para obtener direcciones IP
  4. Intentar conectarse al MX de mayor prioridad. Si falla, intentar el siguiente.
  5. Si no existen registros MX (respuesta NODATA), recurrir al registro A/AAAA del dominio e intentar la entrega allí
  6. Si el registro MX es un MX nulo (0 .), el dominio no acepta correo — generar una falla permanente
  7. Si el dominio no existe en absoluto (NXDOMAIN), generar una falla permanente

Registros MX

El registro MX (Intercambiador de Correo) es el tipo de registro DNS principal para enrutamiento de correo. Asigna un dominio a uno o más servidores de correo con prioridades:

$ dig +short MX example.com
10 mx1.example.com.
20 mx2.example.com.
30 mx-backup.example.com.

Cada registro tiene dos partes:

Prioridad y conmutación por error

En el ejemplo anterior, el remitente intenta mx1.example.com primero (prioridad 10). Si ese servidor es inaccesible, devuelve un error temporal 4xx, o la conexión agota el tiempo de espera, el remitente intenta mx2.example.com (prioridad 20), luego mx-backup.example.com (prioridad 30).

Si varios registros MX comparten la misma prioridad, el remitente debe aleatorizar entre ellos. Esto proporciona equilibrio de carga:

10 mx1.example.com.
10 mx2.example.com.
10 mx3.example.com.

Aquí, los tres servidores tienen la misma prioridad. El servidor de envío elige uno al azar para cada intento de entrega, distribuyendo la carga entre los tres.

MX debe apuntar a un nombre de host, no a una IP

El campo de intercambio de un registro MX debe ser un nombre de host. No puede ser una dirección IP (RFC 5321 es explícito al respecto). El nombre de host en sí debe resolver a un registro A y/o AAAA. No debe ser un CNAME — aunque algunos resolutores toleran objetivos de MX que son CNAME, esto está técnicamente prohibido y causa problemas de interoperabilidad.

MX no debe apuntar a un CNAME

Esta es una configuración errónea común. Si mx1.example.com es un CNAME que apunta a mail.provider.com, algunos servidores de envío fallarán en la entrega. Siempre use registros A/AAAA para objetivos de MX.

Respaldo A/AAAA

Si un dominio no tiene registros MX en absoluto (ni siquiera un MX nulo), el servidor de envío recurre al registro A o AAAA del dominio e intenta entrega SMTP allí. Esto se llama la regla "MX implícito".

; Sin registros MX para tiny-domain.com
tiny-domain.com. IN A 198.51.100.50

El servidor de envío intentará entregar a 198.51.100.50 en el puerto 25. Esto funciona, pero se considera mala práctica para cualquier dominio que envíe o reciba correo activamente. Siempre publique registros MX explícitos.

El respaldo solo se aplica cuando hay cero registros MX. Si existen registros MX pero todos los hosts MX son inaccesibles, el remitente no recurre al registro A — pone en cola el mensaje para reintentos.

MX Nulo: "Este Dominio No Acepta Correo"

RFC 7505 define el MX nulo — una forma de declarar explícitamente que un dominio no acepta correo electrónico:

no-mail.example.com. IN MX 0 .

Un punto único (.) como intercambio, con prioridad 0, significa "no intentar entrega". El servidor de envío debe generar inmediatamente una falla permanente (5.1.2 — sistema de destino incorrecto) en lugar de perder tiempo conectando.

Use MX nulo para:

Sin un MX nulo, los remitentes recurrirán al registro A y perderán tiempo intentando conexiones que nunca tendrán éxito.

Registros PTR: DNS Inverso

Un registro PTR asigna una dirección IP nuevamente a un nombre de host. Es lo opuesto a un registro A:

; Búsqueda directa
mail.example.com. IN A 198.51.100.42

; Búsqueda inversa
42.100.51.198.in-addr.arpa. IN PTR mail.example.com.

Los registros PTR no forman parte del algoritmo de enrutamiento de MX, pero son críticos para la entregabilidad. La mayoría de los proveedores de buzones importantes verifican el registro PTR de la dirección IP del servidor que se conecta:

Los registros PTR son administrados por el propietario del bloque de direcciones IP (generalmente su proveedor de alojamiento o ISP), no a través del DNS de su dominio. Es posible que deba comunicarse con su proveedor para establecer o cambiar registros PTR.

Registros DNS que Todo Dominio de Envío Necesita

Aquí está el conjunto completo de registros DNS para un dominio que envía correo a través de un servicio como Mailer To Go:

; Registros MX (para recibir correo)
example.com. IN MX 10 mx1.example.com.
example.com. IN MX 20 mx2.example.com.

; Registros A para hosts MX
mx1.example.com. IN A 203.0.113.10
mx2.example.com. IN A 203.0.113.11

; Registro SPF (quién puede enviar como este dominio)
example.com. IN TXT "v=spf1 include:_spf.mailertogo.com -all"

; Clave pública DKIM (para verificación de firma)
mtg._domainkey.example.com. IN CNAME mtg._domainkey.mailertogo.com.

; Política DMARC
_dmarc.example.com. IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"

; Política MTA-STS (aplicar TLS para correo entrante)
_mta-sts.example.com. IN TXT "v=STSv1; id=20260311"

; TLSRPT (Informe de fallos de TLS)
_smtp._tls.example.com. IN TXT "v=TLSRPTv1; rua=mailto:tls-reports@example.com"

Para un dominio que envía pero no recibe correo (p. ej., un subdominio usado para correo transaccional):

; MX nulo (no acepta correo)
notifications.example.com. IN MX 0 .

; SPF, DKIM, DMARC como arriba
notifications.example.com. IN TXT "v=spf1 include:_spf.mailertogo.com -all"
mtg._domainkey.notifications.example.com. IN CNAME mtg._domainkey.mailertogo.com.
_dmarc.notifications.example.com. IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"

Consideraciones de TTL

Los registros DNS tienen un Time To Live (TTL) que controla cuánto tiempo los resolutores los almacenan en caché. Para registros relacionados con correo:

Al realizar cambios de DNS, reduzca el TTL antes del cambio (espere a que expire el TTL antiguo), realice el cambio, verifique, luego aumente el TTL nuevamente al valor operacional.

DNSSEC y Correo

DNSSEC (Extensiones de Seguridad DNS) agrega firmas criptográficas a registros DNS, evitando la suplantación y el envenenamiento de caché. Para correo electrónico, DNSSEC es particularmente importante porque:

Sin DNSSEC, un atacante de red puede falsificar respuestas DNS y redirigir o interceptar correo. La adopción de DNSSEC para dominios de correo está aumentando pero aún no es universal.

Registros SRV para Envío de Correo

RFC 6186 define registros SRV que los clientes de correo pueden usar para descubrir automáticamente servidores de envío e IMAP/POP:

_submission._tcp.example.com. IN SRV 0 1 587 mail.example.com.
_imaps._tcp.example.com. IN SRV 0 1 993 imap.example.com.
_pop3s._tcp.example.com. IN SRV 0 1 995 pop.example.com.

Se utilizan para autoconfiguración de clientes de correo — cuando un usuario escribe su dirección de correo electrónico, el cliente consulta registros SRV para encontrar el servidor, puerto y protocolo correctos. Esto es separado del enrutamiento de servidor a servidor basado en MX.

Qué Puede Salir Mal

Registros MX faltantes

Sin registros MX, los remitentes recurren a su registro A. Si su servidor web no está ejecutando un servidor SMTP en el puerto 25, la entrega de correo falla después del tiempo de espera. Siempre publique registros MX explícitos, o un MX nulo si no acepta correo.

MX apuntando a un CNAME

Como se señaló anteriormente, esto es técnicamente inválido. Algunos remitentes seguirán el CNAME; otros fallarán. Use registros A/AAAA para todos los nombres de host de destino de MX.

Referencias MX circulares

Si example.com tiene un MX apuntando a mail.example.com, y mail.example.com tiene su propio MX apuntando de vuelta a example.com, el correo puede hacer bucle. Los objetivos de MX deben ser nombres de host hoja con registros A/AAAA únicamente.

Registro PTR faltante

Su IP de envío no tiene DNS inverso, o se resuelve a un nombre de host genérico del ISP. Los principales proveedores de buzones (Gmail, Microsoft, Yahoo) aplazarán o rechazarán su correo. Asegúrese de que sus IPs de envío tengan registros PTR que se resuelvan hacia adelante a la misma IP.

Tiempo de espera de DNS durante la entrega

Si los servidores DNS del dominio del destinatario son lentos o inaccesibles, el servidor de envío no puede resolver registros MX. El mensaje se pone en cola para reintentos. Los fallos de DNS persistentes eventualmente resultan en un rebote (generalmente después de 4-5 días). No hay nada que pueda hacer como remitente — este es un problema de infraestructura del destinatario.

Registro SPF excede el límite de UDP de DNS

Las respuestas de DNS sobre UDP se limitan a 512 bytes (o 4096 con EDNS0). Un registro SPF muy largo con muchas directivas include: puede truncarse. El resolutor recurre a TCP, que agrega latencia y puede fallar si el servidor DNS no admite TCP. Mantenga su registro SPF conciso.

Depuración de DNS para Correo

Comandos esenciales para diagnosticar problemas de enrutamiento de correo:

# Verificar registros MX
$ dig MX example.com +short
10 mx1.example.com.
20 mx2.example.com.

# Verificar que los objetivos de MX se resuelven a IPs
$ dig A mx1.example.com +short
203.0.113.10

# Verificar PTR (DNS inverso)
$ dig -x 198.51.100.42 +short
mail.example.com.

# Verificar DNS inverso confirmado hacia adelante
$ dig A mail.example.com +short
198.51.100.42

# Verificar registro SPF
$ dig TXT example.com +short | grep spf
"v=spf1 include:_spf.mailertogo.com -all"

# Verificar clave pública DKIM
$ dig TXT mtg._domainkey.example.com +short
"v=DKIM1; k=rsa; p=MIIBIjANBgkqh..."

# Verificar política DMARC
$ dig TXT _dmarc.example.com +short
"v=DMARC1; p=reject; rua=mailto:dmarc@example.com"

# Verificar MX nulo
$ dig MX no-mail.example.com +short
0 .

Puntos Clave

Lectura Adicional

Related RFCs