SMTP, POP3 e IMAP
Los tres protocolos que hay que dominar, con sus puertos en claro y con TLS, sus comandos y la diferencia de fondo entre descargarse el buzón y trabajar contra él.
SMTP y ESMTP: el envío
SMTP, Simple Mail Transfer Protocol, es el protocolo que empuja el correo hacia adelante. Lo habla el MUA cuando entrega su mensaje al servidor de salida, y lo hablan entre sí los MTA para pasarse el mensaje de dominio en dominio. Es un protocolo de texto: el cliente escribe órdenes en líneas legibles y el servidor responde con un número de tres dígitos y una frase.
ESMTP es SMTP extendido, y hoy es lo que se usa en la práctica. La diferencia visible es el saludo inicial: quien saluda con HELO pide SMTP clásico, y quien saluda con EHLO está pidiendo la versión extendida. El truco para recordarlo es que en EHLO las letras E y H aparecen intercambiadas respecto a HELO. Ante un EHLO el servidor no contesta con una línea, sino con la lista de extensiones que sabe hacer, y solo entonces el cliente puede pedirle cifrado o autenticación.
| Puerto | Uso | Seguridad |
|---|---|---|
| 25 | Entrega entre servidores, de MTA a MTA. Es el puerto histórico del protocolo. | En claro, o con STARTTLS si ambos extremos lo soportan |
| 587 | Envío del cliente al servidor de salida, con autenticación obligatoria (submission). | STARTTLS: la conexión empieza en claro y se cifra |
| 465 | Envío del cliente al servidor de salida con el canal cifrado desde el primer byte. | TLS implícito (SMTPS) |
| 2525 | Alternativa no oficial al 587 que ofrecen algunos proveedores cuando la red bloquea los puertos habituales. | La que ofrezca el proveedor |
Sobre el 465 conviene precisar algo que muchos apuntes dan por zanjado. Se declaró obsoleto en 1998 y durante veinte años se desaconsejó su uso en favor del 587 con STARTTLS, pero el RFC 8314, de 2018, lo recuperó y lo recomienda para el envío del cliente. Hoy los dos conviven y casi todos los proveedores ofrecen ambos.
No confundir los dos usos del envío: el 25 es de servidor a servidor, y por eso muchas operadoras lo bloquean a los particulares para frenar el correo basura. El usuario envía por 587 o por 465, siempre autenticándose.
Para el examen
Puerto 25: entre servidores
Puerto 587: envío del cliente, con autenticación
Puerto 465: envío directamente cifrado
El diálogo SMTP paso a paso
La conversación es corta y siempre sigue el mismo guion: saludo, quién envía, para quién es, el contenido, y adiós. Merece la pena verla escrita porque en el examen se pregunta el orden y sobre todo cómo se cierra el bloque de datos.
| Comando | Qué hace |
|---|---|
| HELO nombre | Saludo de SMTP clásico. El cliente se presenta con su nombre de máquina. |
| EHLO nombre | Saludo de ESMTP. El servidor responde con la lista de extensiones disponibles. |
| MAIL FROM | Indica el remitente del sobre, al que volverán los errores de entrega. |
| RCPT TO | Indica un destinatario. Se repite tantas veces como destinatarios haya. |
| DATA | Anuncia que a continuación van las cabeceras y el cuerpo del mensaje. |
| STARTTLS | Convierte en cifrada una conexión que había empezado en claro. |
| AUTH | Presenta las credenciales del remitente. Va después de STARTTLS. |
| QUIT | Cierra la sesión. |
Lo que hay que retener de DATA es cómo termina: el mensaje se da por acabado cuando el cliente envía una línea que contenga únicamente un punto. Por eso, si el texto del correo tuviera una línea con un punto solitario, el cliente está obligado a escribirle un punto delante para que el servidor no crea que ha terminado.
220 mail.llegandoalcorte.com ESMTP listo
EHLO portatil.local
250-mail.llegandoalcorte.com
250-STARTTLS
250 AUTH PLAIN LOGIN
STARTTLS
220 Adelante con el TLS
MAIL FROM: <soporte@llegandoalcorte.com>
250 Remitente aceptado
RCPT TO: <alumno@example.org>
250 Destinatario aceptado
DATA
354 Escriba el mensaje y termine con un punto solo
Subject: Repaso pendiente del tema 3
Te quedan cuatro subtemas por cerrar.
.
250 Mensaje aceptado
QUIT
221 AdiosSTARTTLS no es exclusivo del correo: es el mecanismo general para elevar a cifrada una conexión que nació en claro, y lo usan también IMAP, POP3, LDAP o XMPP. Por dentro hace la misma negociación TLS que HTTPS. Las dos formas de AUTH que se preguntan son AUTH PLAIN, que manda usuario y contraseña juntos en un solo paso, y AUTH LOGIN, que los manda en dos pasos separados.
Las credenciales de AUTH viajan codificadas en Base64, y Base64 no cifra nada: es una codificación reversible por cualquiera que capture el tráfico. Por eso AUTH sin haber hecho antes STARTTLS equivale a mandar la contraseña en claro.
Para el examen
El diálogo: EHLO, MAIL FROM, RCPT TO, DATA, punto en línea sola y QUIT
Respuestas 2xx: correctas
Respuestas 4xx y 5xx: fallo temporal y fallo permanente
POP3: descargar y llevarse el correo
POP3, Post Office Protocol versión 3, es el protocolo de recepción más simple que existe. Su modelo mental es el de una oficina de correos de pueblo: el cliente se conecta, se descarga lo que haya, y por defecto lo borra del servidor. A partir de ahí los mensajes viven en el disco del usuario y el servidor no vuelve a saber de ellos.
| Aspecto | POP3 |
|---|---|
| Puerto sin cifrar | 110 |
| Puerto con TLS | 995 |
| Modelo | Orientado a la descarga |
| Dónde queda el correo | En el equipo del usuario |
| Carpetas en el servidor | No las contempla |
| Trabajo del servidor | Mínimo: entregar y olvidar |
Esa simplicidad es su virtud y su límite. La virtud es que consume muy pocos recursos del servidor y que el correo queda disponible sin conexión. El límite es que quien consulte su cuenta desde el móvil y desde el portátil verá dos buzones que no se parecen en nada, porque lo que descargó uno ya no está para el otro. Casi todos los clientes ofrecen una opción de dejar copia en el servidor, pero es un parche sobre un protocolo que no fue pensado para eso.
Puertos que caen: POP3 en el 110 y en el 995 con seguridad. El truco es que los dos puertos seguros de recepción son 995 y 993, y el más bajo, el 993, es el de IMAP.
Para el examen
Puertos: 110 y 995 con cifrado
Qué hace: descarga y borra del servidor
Su límite: no sirve para consultar el mismo buzón desde varios equipos
Los comandos de POP3
| Comando | Qué hace |
|---|---|
| USER nombre | Primer paso de la identificación: el nombre de la cuenta. |
| PASS clave | Segundo paso: la contraseña. |
| STAT | Devuelve cuántos mensajes hay en total y cuánto ocupan. |
| LIST | Lista los mensajes por número con el tamaño de cada uno. |
| RETR n | Descarga el mensaje número n. |
| DELE n | Marca el mensaje número n para borrado. |
| QUIT | Cierra la sesión y consuma los borrados marcados. |
El detalle que se pregunta es el de DELE: no borra, solo marca. El mensaje sigue estando en el buzón mientras dure la sesión, y solo desaparece cuando el cliente envía QUIT. Si la conexión se corta antes, los borrados marcados no llegan a aplicarse y el mensaje seguirá ahí en la siguiente visita.
+OK Servidor POP3 listo
USER soporte@llegandoalcorte.com
+OK
PASS clave-del-buzon
+OK Buzon abierto
STAT
+OK 3 28451
LIST
+OK 3 mensajes
1 9120
2 11004
3 8327
RETR 2
+OK 11004 octetos
DELE 2
+OK Marcado para borrado
QUIT
+OK Buzon cerrado, 1 mensaje borradoPara el examen
Los comandos: USER, PASS, STAT, LIST, RETR, DELE y QUIT
Lo que no tiene: carpetas
Cuándo se hace efectivo el borrado: al ejecutar QUIT
IMAP: el buzón vive en el servidor
IMAP, Internet Message Access Protocol, parte de una idea distinta: el buzón, con sus carpetas y el estado de cada mensaje, es del servidor, y el cliente solo es una ventana desde la que se mira. Cuando alguien mueve un correo a una carpeta, lo marca como leído o lo borra, ese cambio ocurre en el servidor, y por eso todos sus dispositivos lo ven al instante.
| Aspecto | IMAP |
|---|---|
| Puerto sin cifrar | 143 |
| Puerto con TLS | 993 |
| Modelo | Orientado a carpetas en el servidor y a uso conectado |
| Dónde queda el correo | En el servidor, con copia local opcional |
| Carpetas en el servidor | Sí, y se pueden crear, renombrar y suscribir |
| Trabajo del servidor | Alto: guarda todo y atiende búsquedas |
IMAP también sabe descargar solo una parte de un mensaje: las cabeceras para pintar la lista y el cuerpo únicamente cuando el usuario lo abre. Eso es lo que permite abrir una bandeja de diez mil correos en un móvil sin descargar diez mil correos. A cambio, exige mucho más del servidor, que ahora tiene que almacenar indefinidamente el buzón de todo el mundo y resolver búsquedas sobre él.
La diferencia de fondo entre POP3 e IMAP no son los puertos, son los flags. IMAP guarda en el servidor el estado de cada mensaje (leído, respondido, marcado, borrado), y por eso es el único de los dos que puede mantener sincronizados varios dispositivos.
Para el examen
Puertos: 143 y 993 con cifrado
Dónde vive el buzón: en el servidor
Qué ofrece: carpetas y estado sincronizado entre dispositivos
Los comandos de IMAP
| Comando | Qué hace |
|---|---|
| LOGIN usuario clave | Identificación, en un solo comando. |
| LIST | Devuelve las carpetas del buzón. |
| STATUS carpeta datos | Cuántos mensajes tiene una carpeta: totales, recientes, sin leer. |
| SELECT carpeta | Abre una carpeta para trabajar con ella. |
| EXAMINE carpeta | Igual que SELECT, pero en solo lectura. |
| FETCH | Trae contenido: el cuerpo, solo las cabeceras, los flags o el identificador único. |
| SEARCH criterios | Busca en el servidor por remitente, destinatario, fecha, texto o estado. |
| STORE flags | Cambia el estado de un mensaje, por ejemplo poniéndole el flag \Deleted. |
| EXPUNGE | Elimina de verdad los mensajes que tengan el flag \Deleted. |
| LOGOUT | Cierra la sesión. |
El borrado en IMAP tiene dos tiempos, igual que en POP3 pero con nombres distintos y explícitos. Primero STORE le pone al mensaje el flag \Deleted, que es solo una marca; después EXPUNGE es quien lo elimina físicamente. Es habitual ver apuntes que dan EXPUNGE por equivalente de QUIT, y no lo es: EXPUNGE consolida los borrados y el mensaje sigue conectado. Quien cierra la sesión en IMAP es LOGOUT; QUIT es de POP3 y de SMTP.
La otra pieza propia de IMAP es SEARCH. Como el buzón está en el servidor, la búsqueda se resuelve allí y el cliente recibe solo los números de los mensajes que encajan, sin haberse descargado nada. En POP3 esto es sencillamente imposible: para buscar hay que traérselo todo antes.
Para el examen
Comandos propios: SELECT, FETCH y STORE
Por qué los tiene: porque IMAP sí maneja carpetas
Etiqueta delante de cada orden: permite trabajar en paralelo
POP3 frente a IMAP, y el caso del webmail
| Criterio | POP3 | IMAP |
|---|---|---|
| Puertos | 110 y 995 con TLS | 143 y 993 con TLS |
| Dónde queda el mensaje | Se descarga al equipo y por defecto se borra del servidor | Permanece en el servidor |
| Varios dispositivos | Cada uno acaba con un buzón distinto | Todos ven el mismo estado |
| Carpetas del servidor | No existen | Sí, y se gestionan por protocolo |
| Estado del mensaje | No se guarda en el servidor | Flags en el servidor: leído, respondido, borrado |
| Búsqueda | En local, tras descargarlo todo | En el servidor, con SEARCH |
| Consumo en el servidor | Bajo | Alto: almacenamiento e índices |
| Sin conexión | Natural: el correo ya está en el disco | Requiere que el cliente mantenga una copia local |
La elección práctica es casi siempre IMAP, y POP3 se reserva para casos concretos: un único dispositivo, la voluntad de no dejar correo en el servidor, o un buzón con cuota muy pequeña que hay que vaciar continuamente.
Queda un tercer caso que rompe el esquema. Cuando el correo se consulta desde el navegador, en un webmail como Outlook Web App, el usuario no habla ni POP3 ni IMAP: habla HTTP con una aplicación web, y es esa aplicación la que se entiende con el buzón por dentro. Lo que el usuario ve como su cliente de correo es en realidad una página, y el papel de MAA lo cumple el propio servidor web.
En un examen, si la pregunta dice «webmail», la respuesta sobre el protocolo que usa el usuario es HTTP o HTTPS, no IMAP.
Para el examen
POP3: descarga y borra
IMAP: sincroniza y deja el correo en el servidor
Webmail: no es un tercer protocolo: es un cliente que habla IMAP por dentro