El Protocolo POP, manual de uso y disfrute

Como participante activo en es.comp.hackers (cuando todavía se podía leer algo interesante en ese grupo) publiqué un par de artículos (que pretendían haber formado parte de una larga serie) sobre los protoclos clásicos sobre los que se mueve la Red.

Mi intención era hacerlos desde un punto de vista práctico y os aseguro que pretendía ser ameno y divertido.

He aquí el primero de ellos, donde hablo del protocolo POP, que es el que se usa para recoger el correo electrónico. Os ruego encarecidamente que disculpeis los chistes ridículos y la tortura a la que someto al lenguaje, pero en su contexto original no parecía tan mala idea.

Grupo/s: es.comp.hackers
Fecha: 08/07/2000
Título Original: Re: información sobre telnet
Ver post original
Amo a vé:

Lo más primerísimo de las cosas primeras:

Que conste que yo no soy un jakes ni nada parecido, que no quiero
malentendidos. Que esas cosas tan raras que haseis son mu difíciles pa
mí.

Lo que si soy es un aficionadillo a mi emulador de terminal (hay quién
colecciona sellos...) y, viendo que hay algunas lagunas por aquí con
esto del POP3 (mucho empaquetar TCP a mano, pero luego a algunos le
fallan los protocolos esenciales ;-P), pues aquí va un esquema de qué
se puede hacer con este protocolo.

Los Winoduwseros me hacéis el favor de buscaros un emulador de
terminal como dios manda, porque el que trae el Windows es una
vergüenza. (Si hay algún makero en el grupo, también puedo
recomendarle algo ¿O creíais que no había emuladores de terminal para
mac?)

Personalmente os aconsejo CRT o KoalaTerm, que son cómodas de usar y
muy completas. están disponibles en la red (Si queréis os busco las
URLs) y son shareware de 30 días. Solo hay que pagar la licencia y
yastá. (habrá quién aconseje una visita a astalavista.box.sk, pero eso
es ilegal y está muy feo)

Hoy, para todos ustedes, cómo leer e-milios con vuestro emulador de
terminal:

Para leer los e-milios, al contrario que para mandarlos, tienes que
conectarte a TU servidor de correo.

El puerto POP es, normalmente, el 110 (No es obligatorio que sea este
puerto, pero yo NUNCA he visto una máquina que use otro)

De modo que coges tu terminal y te enchufas al 110 de tu servidor (no
olvides tener el eco local activado, por favor)

En adelante, todo lo que vaya precedido de +OK son las respuestas del
host (si todo va bien, las respuestas del servidor POP siempre van
precedidas de +OK. Si hay algo que falla, te pondrá -ERR), y lo que
vaya detrás de // son comentarios míos. Los nombres entre "<" y ">"
son variables, que tienes que poner o que te responde, que iré
explicando sobre la marcha. A POP3 le da igual que uses mayúsculas o
minúsculas. Las respuestas del host pueden cambiar un poco, pero más o
menos serán las que pongo:

// Bueno, pues te conectas y el servidor te dice:

+OK POP3 server ready

// está esperando a que le digas quién eres:

USER <fulano>

// se entiende que "fulano" eres tú, o sea, lo que vienen delante de
la arroba en tu dirección de correo. Ahora te pide la passoword:

+OK password required for user <fulano>

// y tu se la dices (mucho ojo si hay curiosos mirando por encima del
hombro, que aquí no se sustituye por asteriscos):

PASS <clave>

// si todo ha ido bien te responderá:

+OK maildrop ready

//bueno, ya estamos dentro. Ahora vamos a ver que podemos hacer. EL
puñetero POP no tiene ningún comando HELP, así que habrá que empaparse
los RFCs.

NOOP

// este comando significa "no operation", y hace exactamente eso:
NADA. ¿Y para qué demonios sirve no hacer nada? Pues, por ejemplo, los
servidores pop, si pasas demasiado tiempo sin enviar ningún comando,
se desconectan automáticamente. Para evitar esto, puedes mandar
comandos NOOP cada cierto tiempo, mientras buscas en tu disco la copia
de este artículo para ver cómo se escribe ese comando que se te ha
olvidado.

STAT

// de "statistic", te da los datos generales de tu mailbox. La
respuesta que te da es:

+OK <numero> <bytes>

// donde "numero" es el número de mensajes que tienes y bytes el peso
TOTAL en bytes de esos mensajes. (algunas versiones dan más datos)

LIST

// de "list", lista. Pues eso, te da una lista de los mensajes que
tengas, en el siguiente formato:

+OK <n> messages (<bytes> octets)

1 <bytes1>
2 <bytes2>
[...]
n <bytesn>
.

// donde "n" es el número de mensajes, bytes el peso TOTAL de estos en
bytes y la lista numerada es eso, una lista de 1 a n con el peso en
bytes de cada uno. Al final te pone un punto en una línea, para que
sepas que ha terminado.

// Algunos servidores no darán los datos totales con este comando, y
simplemente dirán:

+OK scan listing follows

1 <bytes1>
2 <bytes2>
[...]
n <bytesn>
.

// En el comando LIST se puede poner un parámetro: el número de
mensaje. De este modo nos da los datos de solo ese mensaje:

LIST 2

//te dará los datos del mensaje 2:

+OK 2 <bytes2>

//Ahora empezamos a meternos en lo interesante:

RETR <numero>

//donde "numero" es el número de mensaje, nos saca el mensaje por
pantalla:

+OK <bytes> octets
<(Aquí va el texto del mensaje)>
<(y mucho más texto)>
.

// "bytes es el peso en bytes del mensaje, debajo viene el mensaje
(con cabecera y todo), y al final un punto solitario.

//El siguiente comando interesante es:

TOP <numero> <lineas>

//donde "numero" es el número de mensaje y "líneas" las líneas  a
partir de la primera que quieres que se te muestren del mensaje.
Sirve, en mensajes demasiado largos, para ver el principio de estos.
Si pones TOP 1 10, por ejemplo, se te mostrará la cabecera del primer
mensaje y sus 10 primeras líneas, si pones TOP 2 0, saldrá la cabecera
del segundo mensaje.

// Ahora que ya has leído tu mensaje, mejor será que lo borres, para
que no ocupe espacio:

DELE <numero>

// que, evidentemente, borra el mensaje indicado en "numero".

//En realidad DELE no borra los mensajes, estos se marcan como
borrados pero no se borran efectivamente hasta que terminas la sesión
POP3. De modo que, si has borrado uno o más mensajes y te arrepientes,
puedes recuperarlos con el siguiente comando:

RSET

// Que recupera TODOS los mensajes que hubiera marcados como borrados.

// Ya casi estamos acabando, y nos encontraos con uno de esos comandos
"tontos" que a una máquina le van muy bien, pero que sirven de poco
para las personas:

UIDL <numero>

// Donde "numero" es opcional, y representa un número de mensaje. Este
comando te devuelve una lista de los mensajes y su número de
"Unique-ID Listing", que es un número bastante inútil que solo se usa
para administración del servidor de correo (algunos clientes, como
Netscape, también los usan).

// Y, cuando te aburras de meter comandos, pones:

QUIT

// y sacabó.

// Y, por último, como imagino que esto a los hackers les puede
interesar, comentaré que existe una forma "segura" de autenticarse en
algunos servidores POP3, por medio de la siguiente orden:

APOP <nombre> <fingerprint>

//donde "nombre" es tu login y "fingerprint" es una clave que se
calcula del siguiente modo:

// Si el servidor soporta APOP, en el banner de presentación (el
primer texto que te sale al conectar) debe salir algo así
<123.4567@host>, donde hostname es el nombre del servidor, y los
números anteriores varían en cada sesión (concretamente son el PID del
proceso en ejecución y la hora del sistema).

//Vale: se supone que tú tienes que coger esa cadena, añadirle detrás
tu clave y aplicarle una función de tipo hash, llamada MD5. Una
función hash es un algoritmo que, a partir de un texto de longitud
arbitraria obtiene una cadena de una longitud preestablecida. Además,
no se puede invertir el proceso.

// De este modo ya tenemos una fingerprint encriptada que mandamos al
servidor. Este, que evidentemente no puede desencriptarla, encripta la
copia de la clave que tiene él del mismo modo y las compara. Si todo
va bien, estás autorizado.

Pos nada, espero haber servido de algo. La verdad es que existen
algunos comandos más, pero estos son lo más o menos universales. Para
más datos consultad el RFC 1939.

Regresar