Al trabajar con un sólo dispositivo, POP3 es suficiente. Pero ¿qué pasa si queremos ver el correo del ordenador de nuestra oficina o de nuestro portátil casero en el móvil? Necesitamos entonces un protocolo que permita la sincronización en lugar de borrarlos después de recibirlos. Una de esas soluciones es IMAP (Internet Message Access Protocol).
Permite sincronizar mensajes leídos, movidos y borrados. Los comandos IMAP son más complejos:
LOGIN <username> <password>: Autentifica al usuario.SELECT <mailbox>: Selecciona la bandeja de correo con la que trabajar.FETCH <mail_number> <data_item_name>: Busca el elemento especificado de un email (body, subject, etc.).MOVE <sequence_set> <mailbox>: Mueve el/los email/s especificado/s a otra bandeja.COPY <sequence_set> <data_item_name>: Copia el/los email/s especificado/s a otra bandeja.LOGOUT: Cierra sesión.
Un ejemplo de conexión a IMAP por telnet:
bash
user@TryHackMe$ telnet 10.10.41.192 143 Trying 10.10.41.192... Connected to 10.10.41.192. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN] Dovecot (Ubuntu) ready. A LOGIN strategos A OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY PREVIEW=FUZZY PREVIEW STATUS=SIZE SAVEDATE LITERAL+ NOTIFY SPECIAL-USE] Logged in B SELECT inbox * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted. * 4 EXISTS * 0 RECENT * OK [UNSEEN 2] First unseen. * OK [UIDVALIDITY 1719824692] UIDs valid * OK [UIDNEXT 5] Predicted next UID B OK [READ-WRITE] Select completed (0.001 + 0.000 secs). C FETCH 3 body[] * 3 FETCH (BODY[] {445} Return-path: <user@client.thm> Envelope-to: strategos@server.thm Delivery-date: Thu, 27 Jun 2024 16:19:35 +0000 Received: from [10.11.81.126] (helo=client.thm) by example.thm with smtp (Exim 4.95) (envelope-from <user@client.thm>) id 1sMrpq-0001Ah-UT for strategos@server.thm; Thu, 27 Jun 2024 16:19:35 +0000 From: user@client.thm To: strategos@server.thm Subject: Telnet email Hello. I am using telnet to send you an email! ) C OK Fetch completed (0.001 + 0.000 secs). D LOGOUT * BYE Logging out D OK Logout completed (0.001 + 0.000 secs). Connection closed by foreign host.
Debajo una imagen con el servidor en azul y el cliente en rojo:

