Saltar al contenido

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.

PuertoUsoSeguridad
25Entrega entre servidores, de MTA a MTA. Es el puerto histórico del protocolo.En claro, o con STARTTLS si ambos extremos lo soportan
587Envío del cliente al servidor de salida, con autenticación obligatoria (submission).STARTTLS: la conexión empieza en claro y se cifra
465Envío del cliente al servidor de salida con el canal cifrado desde el primer byte.TLS implícito (SMTPS)
2525Alternativa 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.

ComandoQué hace
HELO nombreSaludo de SMTP clásico. El cliente se presenta con su nombre de máquina.
EHLO nombreSaludo de ESMTP. El servidor responde con la lista de extensiones disponibles.
MAIL FROMIndica el remitente del sobre, al que volverán los errores de entrega.
RCPT TOIndica un destinatario. Se repite tantas veces como destinatarios haya.
DATAAnuncia que a continuación van las cabeceras y el cuerpo del mensaje.
STARTTLSConvierte en cifrada una conexión que había empezado en claro.
AUTHPresenta las credenciales del remitente. Va después de STARTTLS.
QUITCierra 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.

text
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 Adios

STARTTLS 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.

AspectoPOP3
Puerto sin cifrar110
Puerto con TLS995
ModeloOrientado a la descarga
Dónde queda el correoEn el equipo del usuario
Carpetas en el servidorNo las contempla
Trabajo del servidorMí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

ComandoQué hace
USER nombrePrimer paso de la identificación: el nombre de la cuenta.
PASS claveSegundo paso: la contraseña.
STATDevuelve cuántos mensajes hay en total y cuánto ocupan.
LISTLista los mensajes por número con el tamaño de cada uno.
RETR nDescarga el mensaje número n.
DELE nMarca el mensaje número n para borrado.
QUITCierra 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.

text
+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 borrado

Para 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.

AspectoIMAP
Puerto sin cifrar143
Puerto con TLS993
ModeloOrientado a carpetas en el servidor y a uso conectado
Dónde queda el correoEn el servidor, con copia local opcional
Carpetas en el servidorSí, y se pueden crear, renombrar y suscribir
Trabajo del servidorAlto: 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

ComandoQué hace
LOGIN usuario claveIdentificación, en un solo comando.
LISTDevuelve las carpetas del buzón.
STATUS carpeta datosCuántos mensajes tiene una carpeta: totales, recientes, sin leer.
SELECT carpetaAbre una carpeta para trabajar con ella.
EXAMINE carpetaIgual que SELECT, pero en solo lectura.
FETCHTrae contenido: el cuerpo, solo las cabeceras, los flags o el identificador único.
SEARCH criteriosBusca en el servidor por remitente, destinatario, fecha, texto o estado.
STORE flagsCambia el estado de un mensaje, por ejemplo poniéndole el flag \Deleted.
EXPUNGEElimina de verdad los mensajes que tengan el flag \Deleted.
LOGOUTCierra 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

CriterioPOP3IMAP
Puertos110 y 995 con TLS143 y 993 con TLS
Dónde queda el mensajeSe descarga al equipo y por defecto se borra del servidorPermanece en el servidor
Varios dispositivosCada uno acaba con un buzón distintoTodos ven el mismo estado
Carpetas del servidorNo existenSí, y se gestionan por protocolo
Estado del mensajeNo se guarda en el servidorFlags en el servidor: leído, respondido, borrado
BúsquedaEn local, tras descargarlo todoEn el servidor, con SEARCH
Consumo en el servidorBajoAlto: almacenamiento e índices
Sin conexiónNatural: el correo ya está en el discoRequiere 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