SMTP y el ecosistema de correo
SMTP mueve mensajes entre sistemas y recibe envíos de clientes. El correo visible en un buzón es el resultado de varias capas: resolución DNS, transporte SMTP, políticas de dominio, contenido MIME, filtrado y acceso posterior mediante IMAP, POP3 o una API.
Roles y recorrido
Sección titulada «Roles y recorrido»| Rol | Responsabilidad |
|---|---|
| Mail User Agent (MUA) | compone y lee correo |
| Mail Submission Agent (MSA) | recibe mensajes de usuarios autenticados y aplica política de submission |
| Mail Transfer Agent (MTA) | transfiere correo entre dominios o saltos |
| Mail Delivery Agent (MDA) | deposita el mensaje en el buzón o almacén final |
| Gateway o relay | filtra, enruta o reenvía en nombre de otra zona |
El MTA emisor consulta los registros MX del dominio destinatario. El número menor tiene mayor preferencia. Si no existe MX, SMTP permite recurrir al registro A o AAAA del dominio bajo condiciones definidas por RFC 5321.
dig +short MX example.testdig +short A mail.example.testdig +short AAAA mail.example.testUn MX identifica una ruta de recepción, no el servicio de submission de los usuarios ni todos los sistemas que pueden enviar por el dominio.
Puertos y canal
Sección titulada «Puertos y canal»| Puerto | Uso habitual | Inicio de TLS |
|---|---|---|
25/tcp |
transferencia entre MTA | texto y posible STARTTLS |
587/tcp |
message submission | texto y STARTTLS |
465/tcp |
submission sobre TLS implícito | handshake TLS al conectar |
El puerto orienta. El banner, EHLO, TLS, AUTH y la política aplicada confirman el rol efectivo.
SMTP usa líneas terminadas por CRLF. El servidor inicia con 220. El cliente envía EHLO para ESMTP o HELO para SMTP básico. Las respuestas se agrupan por primera cifra:
2xx: operación aceptada3xx: se espera información adicional4xx: fallo temporal que permite reintento5xx: fallo permanente para esa transacción
Una respuesta multilínea repite el código con guion y termina con el mismo código seguido de espacio.
Estado y comandos
Sección titulada «Estado y comandos»Una sesión atraviesa tres estados:
- conexión y saludo
- transacción de correo
- actualización o cierre
Los comandos principales son:
| Comando | Función |
|---|---|
EHLO domain |
identifica al cliente y solicita extensiones |
STARTTLS |
actualiza la conexión existente a TLS |
AUTH mechanism |
inicia autenticación SASL |
MAIL FROM:<address> |
fija el reverse-path del envelope |
RCPT TO:<address> |
añade un destinatario del envelope |
DATA |
inicia cabeceras y cuerpo |
RSET |
descarta la transacción sin cerrar |
NOOP |
solicita una respuesta sin cambiar la transacción |
VRFY |
consulta una identidad |
EXPN |
solicita expansión de una lista |
QUIT |
cierra la sesión |
El servidor puede aceptar varios RCPT TO para un solo mensaje. Tras DATA, una línea con un único punto termina el contenido. Dot-stuffing duplica un punto inicial para que no se confunda con el terminador.
Envelope y cabeceras
Sección titulada «Envelope y cabeceras»El envelope controla transporte:
MAIL FROM:<bounce@example.test>RCPT TO:<recipient@example.net>Las cabeceras están dentro de DATA:
From: Display Name <author@example.test>To: Recipient <recipient@example.net>Subject: ExampleMAIL FROM y From: pueden ser distintos. SPF normalmente evalúa la identidad MAIL FROM o HELO. DMARC evalúa la alineación con el dominio visible de From:. Una UI puede mostrar solo la cabecera y ocultar la ruta real.
Cada MTA añade una cabecera Received al principio. La cadena se lee desde abajo hacia arriba para reconstruir saltos, pero las líneas más antiguas pueden proceder de una fuente no confiable. Conserva cabeceras completas, Return-Path, Authentication-Results, DKIM-Signature y MIME antes de interpretar autenticidad.
Extensiones ESMTP
Sección titulada «Extensiones ESMTP»EHLO puede anunciar:
SIZE: tamaño máximo aceptadoPIPELINING: varios comandos sin esperar cada respuestaSTARTTLS: actualización a TLSAUTH: mecanismos SASL8BITMIME: cuerpos con octetos de ocho bitsSMTPUTF8: direcciones y cabeceras internacionalizadasDSN: notificaciones de estado de entregaCHUNKING: transferencia medianteBDAT
La lista puede cambiar después de STARTTLS o autenticación. Envía un nuevo EHLO tras actualizar el canal.
TLS y autenticación
Sección titulada «TLS y autenticación»STARTTLS protege la conexión a partir de su negociación. No cifra el saludo anterior. Tampoco demuestra que el emisor valide el certificado, que todos los saltos usen TLS o que el servidor rechace downgrade.
AUTH suele usar SASL. Mecanismos frecuentes incluyen PLAIN, LOGIN, CRAM-MD5, OAuth bearer y NTLM en entornos Microsoft. PLAIN y LOGIN codifican datos con Base64, no los cifran. Su protección depende de TLS.
Submission normalmente exige autenticación y aplica identidad, rate, tamaño y destinatarios. Un MTA de entrada puede aceptar correo no autenticado solo para sus dominios locales. Esa diferencia es la base de una prueba de relay.
Entrega, colas y respuestas diferidas
Sección titulada «Entrega, colas y respuestas diferidas»Un 250 tras RCPT TO o tras el final de DATA significa que ese servidor asumió responsabilidad según esa fase. La entrega final todavía puede depender de:
- lookup del destinatario posterior
- content filtering y sandbox
- políticas antispam
- cola y reintentos
- siguiente MTA
- cuota o reglas del buzón
- generación de bounce
Greylisting responde temporalmente a una combinación desconocida y espera que un MTA legítimo reintente. Tarpitting retrasa respuestas. Catch-all acepta destinatarios desconocidos. Estas técnicas alteran enumeración, timing y significado de un único código.
Autenticación de dominio
Sección titulada «Autenticación de dominio»SPF publica una política DNS TXT que autoriza IP para la identidad del envelope. No firma el contenido y el forwarding puede romper su relación.
dig +short TXT example.testDKIM añade una firma que cubre cabeceras seleccionadas y un hash del cuerpo. La clave pública vive en SELECTOR._domainkey.DOMAIN.
dig +short TXT SELECTOR._domainkey.example.testDMARC publica política en _dmarc.DOMAIN y exige alineación del dominio visible From: con una validación SPF o DKIM:
dig +short TXT _dmarc.example.testp=none solicita observación. quarantine y reject expresan tratamiento deseado, pero el receptor mantiene la decisión efectiva.
MTA-STS publica un indicador DNS y una política HTTPS que permite exigir TLS y MX válidos para transferencias entrantes:
dig +short TXT _mta-sts.example.testcurl --fail --silent --show-error \ https://mta-sts.example.test/.well-known/mta-sts.txtTLS Reporting publica _smtp._tls.DOMAIN para recibir informes agregados de fallos TLS:
dig +short TXT _smtp._tls.example.testEstas políticas no son equivalentes. SPF, DKIM y DMARC tratan identidad y autenticidad. MTA-STS y TLS-RPT tratan protección y fallos del transporte SMTP.
Siguientes tareas
Sección titulada «Siguientes tareas»- Enumeración SMTP convierte un endpoint en un modelo verificado.
- IMAP y POP3 cubre acceso al correo almacenado.
- Explotación y abuso del correo separa relay, spoofing, credenciales, NTLM y delivery.