systemadmin.es > Correo > Conectar a un servidor IMAP mediante telnet

Conectar a un servidor IMAP mediante telnet

Para resolver problemas suele ser muy útil realizar las conexiones a servidores a mano. Anteriormente ya vimos, como mandar un correo mediante telnet a un servidor SMTP y como comprobar la autenticación SMTP. Usar netcat en lugar de telnet sería equivalente.

Primero de todo debemos hacer telnet al puerto IMAP (143):

# telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK Dovecot ready.

A continuación respondemos al servidor con “. LOGIN” seguido de el nombre de usuario y la contraseña:

. login jordi@systemadmin.es passwordsecreto
. OK Logged in.

A continuación podemos listar todas las carpetas mediante el comando “. LIST“:

. list "" "*"
* LIST (\HasNoChildren) "." "Trash"
* LIST (\HasNoChildren) "." "Drafts"
* LIST (\HasNoChildren) "." "Sent"
* LIST (\HasNoChildren) "." "Nagios"
* LIST (\HasNoChildren) "." "Spam"
* LIST (\HasNoChildren) "." "INBOX"
. OK List completed.

A continuación podríamos ver el total de mensajes pedientes que hay en la carpeta INBOX. Esto lo podemos hacer mediante el comando “. STATUS“. Mediante “messages” nos indicará el total de mensajes y con “unseen” de estos lo que estan marcados como no leídos:

. status INBOX (messages)
* STATUS "INBOX" (MESSAGES 1351)
. OK Status completed.
. STATUS INBOX (unseen)
* STATUS "INBOX" (UNSEEN 1)
. OK Status completed.

Para recuperar un mensaje primero de todo deberemos seleccionar la carpeta IMAP:

. SELECT INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft NonJunk Junk $Forwarded)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft NonJunk Junk $Forwarded \*)] Flags permitted.
* 1352 EXISTS
* 0 RECENT
* OK [UNSEEN 1331] First unseen.
* OK [UIDVALIDITY 1222331858] UIDs valid
* OK [UIDNEXT 1620] Predicted next UID
. OK [READ-WRITE] Select completed.

A continuación mediante “. FETCH <primero>:<ultimo> FLAGS” podemos obtener un listado de los mensajes y sus flags por rango:

. FETCH 1:3 FLAGS
* 1 FETCH (FLAGS (\Seen NonJunk))
* 2 FETCH (FLAGS (\Seen))
* 3 FETCH (FLAGS ())
. OK Fetch completed.

Ahora si nos interesa, por ejemplo, el mensaje 3 que no esta leído podríamos obtener su subject mediante el siguiente comando:

. FETCH 3 (body[header.fields (subject)])
* 3 FETCH (FLAGS (\Seen) BODY[HEADER.FIELDS (SUBJECT)] {16}
Subject: prueba IMAP

)
. OK Fetch completed.

El contenido del mensaje lo podríamos obtener igualmente mediante FETCH:

. FETCH 3 rfc822.text
* 3 FETCH (RFC822.TEXT {5}
prueba IMAP!
)
. OK Fetch completed.

Para finalizar la sesión lo hacemos con “. LOGOUT“:

. LOGOUT
* BYE Logging out
. OK Logout completed.
Connection closed by foreign host.

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>