Protocolos de correo: POP - Nobbot

Protocolos de correo: POP

POP3

POP son las iniciales en inglés de Protocolo de Oficina de Correo, y es de los protocolos más sencillos y populares que tenemos para obtener correos electrónicos. Prácticamente todos los grandes proveedores de servicios de correos lo soportan, así que no viene nada mal darle un repaso para conocerlo mejor.

Para empezar, la versión con la que trabajamos normalmente es la tercera (POP3), y las dos primeras se consideran obsoletas, así que usualmente veremos ese 3 en el nombre. Otra cosa que habría que aclarar es que este protocolo solo está preparado para recibir correos, no para enviarlos. Para realizar esta acción ya veremos otro día qué protocolo se usa normalmente.

Este protocolo se pensó para usuarios con conexiones lentas, de tal modo que fuera más rápido descargarse todos los mensajes de una vez y revisarlos de manera offline, que descargarse el mensaje cada vez que lo queremos leer. En general todos los clientes de POP3 se conectan al servidor, se bajan los mensajes nuevos, borran los mensajes en el servidor y se desconectan.

Este modo de operación por defecto es una pesadilla si queremos acceder a la misma cuenta de correo desde diferentes dispositivos, porque son imposible de sincronizar y acabaremos con los mensajes esparcidos en diferentes sitios. Por suerte casi todos los clientes incluyen la opción Dejar los mensajes en el servidor, y aunque no se sincronizarán los mensajes leídos/no leídos, sí que podremos acceder a esa cuenta desde más de un dispositivo.

Podemos habilitarlo en la pestaña de preferencias de Gmail

Por cuestiones técnicas esto requiere que el servidor asigne un identificador único a cada mensajes, de modo que no cambie su identificador entre sesiones. Este identificador es el UID, pudiendo obtener el listado con todos los identificadores con el comando UIDL. Adicionalmente este UID nos sirve para lo mismo en otros protocolos.

El puerto estándar en el que trabaja POP3 es el 110, abriendo una conexión TCP al servidor a ese puerto. Curiosamente, algunos servidores utilizan el puerto alternativo (y obsoleto) 995, como el de Gmail. Una vez se abre esa conexión, nuestro cliente empieza a hablar en ASCII con el servidor, enviando comandos y recibiendo respuestas.

Esa conversación es la que podéis encontrar en los logs de vuestros clientes de correo, si conseguís acceso a ellos. Tal y como os decía al principio este protocolo está pensado para ser liviano, así que tenemos unos pocos comandos y muy concisos: de tres a cuatro caracteres cada comando. Las respuestas pueden ser +OK o -ERR, y vienen acompañados de una cadena que explica la situación actual.

Antes de poder ver nuestros correos, el cliente se debe autenticar, y para eso tenemos varios métodos. El primero, el más usado y el menos seguro es usar dos comandos: USER y PASS. Como os podéis imaginar en el primero indicamos el nombre de usuario y en el segundo nuestra contraseña, todo en texto plano.

Otra opción algo más segura es usar APOP, dónde no pasamos nuestra contraseña sino que pasamos el MD5 de una cadena especificada por el servidor más nuestra contraseña. Es decir, si el servidor nos pasa la cadena hola y nuestra contraseña es 1234, tendremos que devolver el MD5 de hola1234. Este método está soportado por todos los clientes más populares.

Parte inicial de una conexión POP

Como opción más segura nuestro cliente puede usar el comando AUTH, que soporta un mecanismo general con soporte para diversas técnicas de autenticación, privacidad e integridad. Esto ya supera el ámbito de esta entrada y si queréis más información sobre este método seguro podéis continuar leyendo más sobre SASL.

Una vez autenticado, podemos usar el resto de comandos. Con STAT podemos ver rápidamente el número de mensajes sin leer y el tamaño total de los mismos, por eso suele es el primero en ejecutarse. Con LIST podemos ver esa misma información para todos los correos por separado, o podemos ver la información de un correo en particular si especificamos su número.

Parte final de una conexión POP

Una vez que se tiene claro cuántos mensajes hay, se pueden obtener su contenido con el comando RETR y el número del mensaje. Después se puede marcar como borrado ese mensaje con el comando DELE, pero esto no borra los mensajes en el servidor (aún). Hay que usar el comando QUIT para desconectarse del servidor y borrar los mensajes pendientes, así que os podéis imaginar que pueden aparecer problemas de sincronización y mensajes repetidos si se termina la conexión de manera repentina y nuestro cliente no trata esos posibles problemas.

Como veis, no son muchos comandos con los que trabajan los clientes de correo que soportan el protocolo POP, lo que explica que estos clientes sean relativamente simples y limitados respecto a otras opciones. En la próxima entrega de este especial nos meteremos de lleno con IMAP, un protocolo mucho más robusto y sofisticado que está desbancando poco a poco a POP.

Más información | Wikipedia