El recorrido de un correo electrónico
Módulo 1: Cómo funciona el correo electrónico · Tiempo de lectura: 9 minutos
Objetivo de aprendizaje: Tras esta lección podrá describir paso a paso cómo llega un correo del remitente al destinatario, e indicar en cada paso qué programa o servidor realiza el trabajo.
Conceptos clave: programa de correo (MUA), servidor de envío (MSA, submission), servidor de correo (MTA), registro MX, cola de envío, entrega (MDA), buzón, descarga (IMAP/POP3), envelope, cabeceras
El correo es como el correo postal, no un mensaje de chat
Cuando envía un mensaje de chat, este pasa por una sola empresa: la aplicación del remitente y la del destinatario se comunican con los mismos servidores. El correo electrónico funciona de otra manera. El remitente y el destinatario pueden estar cada uno con un proveedor distinto: uno con una empresa de hosting, otro con Gmail, un tercero con Microsoft 365 o con su propio servidor corporativo. Aun así, el correo llega. Esto es posible porque todos los servidores de correo del mundo siguen las mismas normas.
Puede comparar el correo electrónico con el correo postal. Escribe una carta (el mensaje), la mete en un sobre con una dirección (el envelope), la lleva al buzón (el servidor de envío), la empresa de correos averigua dónde está esa dirección (la consulta MX), transporta la carta al centro de clasificación correcto (el servidor de correo receptor) y este la deposita en el buzón del destinatario (el buzón de correo). El destinatario la recoge cuando le conviene.
Las estaciones, una por una
Supongamos que Ana envía un correo desde anna@example.com a jan@example.net. Esto es lo que ocurre:
| Paso | Quién | Qué ocurre | Protocolo |
|---|---|---|---|
| 1 | El programa de correo de Ana (MUA, mail user agent) | Ana pulsa Enviar. El programa inicia sesión en el servidor de envío de su proveedor y entrega el correo. | SMTP-submission, puerto 587 o 465, con inicio de sesión |
| 2 | Servidor de envío de example.com (MSA, mail submission agent) | Comprueba que Ana es realmente Ana (nombre de usuario y contraseña) y coloca el correo en la cola. | |
| 3 | Servidor de correo saliente (MTA, mail transfer agent) | Consulta en el DNS: ¿qué servidor acepta correo para example.net? Esos son los registros MX. | DNS |
| 4 | MTA saliente hacia el MTA receptor | Establece conexión con el servidor indicado en el registro MX y entrega el correo. | SMTP, puerto 25 |
| 5 | Servidor receptor de example.net | Comprueba el correo (spam, virus, SPF, DKIM, DMARC) y lo deposita en el buzón de Jan. Esta última parte se llama MDA (mail delivery agent). | |
| 6 | Programa de correo de Jan o webmail | Descarga el correo o lo muestra directamente desde el servidor. | IMAP (puerto 993) o POP3 (puerto 995) |
En los proveedores pequeños, el MSA, el MTA y el MDA suelen ser un mismo programa en un único servidor. En los proveedores grandes son clústeres independientes. Para usted, esto apenas supone diferencia: son funciones, no aparatos concretos.
Fíjese en la diferencia entre el paso 1 y el paso 4. Ambos usan SMTP, el Simple Mail Transfer Protocol (RFC 5321). Pero en el paso 1 inicia sesión y usa el puerto 587 o 465; esto se llama submission (RFC 6409). En el paso 4, dos servidores se comunican entre sí por el puerto 25, sin iniciar sesión: el servidor receptor acepta correo para sus propios dominios venga de quien venga. En la lección 1.4 verá por qué existe esta separación.
El paso 3 de cerca: la consulta MX
El servidor emisor no sabe por sí mismo dónde recibe su correo example.net. Se lo pregunta al DNS:
example.net. 3600 IN MX 10 mx1.mailprovider.example.
example.net. 3600 IN MX 20 mx2.mailprovider.example.El número más bajo tiene prioridad. El servidor prueba primero con mx1, y si este no responde, con mx2. Después consulta la dirección IP de ese nombre (registro A o AAAA) y establece la conexión.
Dos casos especiales que puede encontrarse en la práctica:
- Sin registro MX. En ese caso, el emisor prueba con el registro A o AAAA del propio dominio (el "MX implícito" del RFC 5321, apartado 5.1). Esto es un resto del pasado y no funciona de forma fiable; todo dominio que reciba correo debería tener un MX.
- Un MX nulo:
0 .Esto significa: "este dominio nunca recibe correo" (RFC 7505). El dominioexample.comtiene uno así. Un emisor desiste de inmediato y devuelve un mensaje de error, en lugar de seguir intentándolo durante días.
Puede leer con más detalle cómo funcionan exactamente los registros MX y las prioridades en la lección 4.1 del curso de DNS.
La cola de envío: el correo puede tardar un poco
Un correo no siempre llega en un segundo. Si el servidor receptor no responde, o dice "inténtelo más tarde" (un código que empieza por 4), el correo permanece en la cola del servidor de envío. Este lo vuelve a intentar más adelante, dejando cada vez más tiempo entre intentos. El RFC 5321 (apartado 4.5.4.1) recomienda esperar al menos 30 minutos entre intentos y desistir solo después de 4 o 5 días. Muchos servidores envían tras unas horas un aviso preliminar ("delayed", aún no entregado) y, pasados varios días, el mensaje de error definitivo.
Este es un punto fuerte del correo electrónico: si un servidor de correo falla durante una hora, no se pierde ningún correo. También es la razón de que un correo a veces llegue solo horas más tarde. En el módulo 6 verá cómo reconocer ese tipo de retraso.
Envelope y cabeceras: dos direcciones
Igual que ocurre con el correo postal, un correo electrónico tiene dos tipos de direcciones:
- El envelope. Son las direcciones que los servidores usan entre sí durante la conversación SMTP:
MAIL FROM(el remitente para los mensajes de error, que luego se ve como Return-Path) yRCPT TO(el destinatario). Los servidores entregan el correo basándose en el envelope. - Las cabeceras (headers). Es lo que figura en la propia carta:
From:,To:,Cc:,Subject:,Date:. Su programa de correo las muestra.
Normalmente coinciden, pero no siempre. Un destinatario en CCO figura en el envelope, pero no en las cabeceras; por eso los demás no lo ven. Un servicio de newsletters pone su propia dirección como remitente del envelope, de modo que los mensajes de error le lleguen a él, mientras que en From: figura su dirección. Y un estafador puede poner lo que quiera en From:.
Por qué esto importa: SPF comprueba el remitente del envelope, el usuario ve el From:. Por eso existe DMARC, que relaciona ambos (módulo 4).
Dónde puede fallar
Con este esquema puede preguntarse, ante cualquier problema, en qué estación falla algo:
- El envío no funciona (mensaje de error inmediato en su programa): paso 1 o 2. Casi siempre son ajustes: puerto, inicio de sesión, contraseña (módulo 2).
- Recibe un bounce: paso 4 o 5. El servidor receptor rechazó el correo, o la dirección no existe (módulo 6).
- El correo llega, pero a la carpeta de spam: paso 5. El destinatario no confía en el correo (módulos 4 y 5).
- El destinatario no ve nada, y usted no recibe ningún mensaje de error: el correo quizá sigue en una cola, o ha sido filtrado silenciosamente en el destino. Aquí ayudan los registros (logs) del servidor de envío (módulo 6).
- No llega ningún correo para su dominio: paso 3. Los registros MX no son correctos, por ejemplo tras una mudanza (módulo 8).
En la práctica: así se ve en un paquete de hosting
En un paquete de hosting de WebOké, un único servidor por paquete realiza todas las funciones: su programa de correo entrega el correo a ese servidor (pasos 1 y 2), el servidor lo envía hacia fuera (pasos 3 y 4) y recibe correo para su dominio (paso 5). En DirectAdmin puede ver, con Seguimiento de E-Mail, si un mensaje concreto se ha entregado. En otros proveedores funciona de forma parecida; allí esta función se suele llamar, por ejemplo, "seguimiento de mensajes" o "mail log".
Resumen
- Un correo va desde su programa de correo (MUA), pasando por el servidor de envío (MSA/MTA), hasta el servidor receptor (MTA/MDA) y de ahí al programa de correo del destinatario.
- Enviar desde su programa es SMTP-submission con inicio de sesión (587/465); los servidores se comunican entre sí mediante SMTP por el puerto 25; la descarga se realiza con IMAP o POP3.
- El servidor emisor consulta los registros MX del dominio tras la @. Un MX nulo (
0 .) significa: este dominio no recibe correo. - Un correo que no puede entregarse de inmediato permanece en la cola y se reintenta durante varios días.
- El envelope (Return-Path) y las cabeceras (From) son dos remitentes distintos. SPF se fija en el primero, el usuario en el segundo.
Cuestionario
Ejercicio
Ejercicio Z1.1: Encontrar el primer servidor de correo. Busque los registros MX de gmail.com (o de su propio dominio). Indique qué servidor se prueba primero, con su número de prioridad, y una dirección IP (IPv4 o IPv6) de ese servidor. El programa consultará los mismos datos en tiempo real y los comprobará.
Para saber más
Los pasos de estos artículos corresponden a los paneles de WebOké; en otros proveedores funciona de forma parecida.
- Cómo funciona el envío de correos (SMTP)
- Manual de DirectAdmin 8.7: IMAP o POP3: ¿cuál es la diferencia?
- Curso gratuito de DNS 4.1: Registros MX y prioridad
- RFC 5321 (SMTP), apartado 5.1 (MX y MX implícito) y 4.5.4.1 (reintentos); RFC 7505 (MX nulo)
