El protocolo SMTP es el encargado de la transferencia de mensajes entre servidores de correo. Es un protocolo de comunicación basado en texto que establece una sesión entre un cliente (o servidor emisor) y un servidor receptor.
A. Funcionamiento y el ciclo de vida del envío
El proceso de envío de un correo utiliza un modelo de "empuje" (push). El cliente (MUA) envía el mensaje a su servidor de salida (MTA local), y este se encarga de enviarlo al servidor del destinatario.
Conexión: El emisor contacta con el puerto 25 (o 587 para envío autenticado) del servidor receptor.
Handshake (Saludo): Intercambio de comandos básicos como
HELOoEHLOpara identificarse.Transferencia: El emisor indica quién envía el correo (
MAIL FROM) y quién es el destinatario (RCPT TO).Datos: El cliente envía el cuerpo del mensaje (
DATA).Cierre: Se finaliza la sesión con
QUIT.
B. El papel fundamental del DNS (Registros MX)
¿Cómo sabe tu servidor de correo dónde está el servidor de Google o de cualquier otra empresa? Gracias al DNS. Cuando tu MTA tiene que enviar un correo a usuario@empresa.com, realiza una consulta DNS buscando los registros MX (Mail Exchange) de empresa.com. Estos registros le devuelven la dirección IP del servidor SMTP encargado de recibir el correo para ese dominio.
C. SMTP vs. SMTPS (Seguridad)
El protocolo SMTP original no exige cifrado, lo que permite que el correo pueda ser interceptado. Para solucionar esto, existen dos variantes:
STARTTLS: El cliente inicia una conexión SMTP clara en el puerto 25 o 587 y luego solicita actualizar la conexión a una cifrada mediante el comando
STARTTLS. Es el estándar más usado actualmente.SMTPS (implicit TLS): Se establece una conexión cifrada desde el primer instante antes de enviar cualquier comando SMTP (tradicionalmente en el puerto 465).
Reto para el alumno
Imagina que un servidor SMTP local intenta enviar un correo a un dominio externo, pero la conexión es rechazada sistemáticamente con un error de "Relay Access Denied".
Pregunta: ¿Qué significa que un servidor esté configurado como "Open Relay" y por qué es una pésima idea de seguridad? ¿Por qué crees que el servidor te está denegando el envío a un dominio externo si no has pasado por una autenticación previa (
AUTH LOGIN)?