Connaître le protocole IMAP

Publié le par Peck

Cet article est maintenant sur http://linux-attitude.fr/post/Connaitre-le-protocole-IMAP

Niveau :
Résumé : IMAP

Ceci est le début d'une série sur le mail.

Comment tester un serveur IMAP qu'on vient juste d'installer ? Il suffit de connaître les bases du protocole IMAP.

Tout d'abord, chaque commande IMAP est précédée d'un identififant permettant au client de repérer à quelle requête correspond la réponse donnée par le serveur, ceci car le protocole peut être asynchrone. La plupart des client mettent des numéros, mais vous pouvez aussi les remplacer simplement par des '.'.

Tentons une connexion de base avec création d'un répertoire (en gras ce qui nous intéresse, ce que vous tapez) :
$ telnet imap.net.net 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK Dovecot ready.
1 LOGIN user password
1 OK Logged in.
2 CREATE toto
2 OK CREATE completed
3 LOGOUT
* BYE Logging out
3 OK Logout completed.
Connection closed by foreign host.

Passons à quelque chose de plus sérieux.
On sélectionne le répertoire INBOX, puis on liste les messages de 1 à la fin (1:*) et on récupère un message.
$ telnet imap.net.net imap
* OK Dovecot ready.
. LOGIN user password
. OK Logged in.
. SELECT toto
* FLAGS (Answered Flagged Deleted Seen Draft $MDNSent Junk $Label1 $Label2 $Label3 $Label4 $Label5)
* OK [PERMANENTFLAGS (Answered Flagged Deleted Seen Draft $MDNSent Junk $Label1 $Label2 $Label3 $Label4 $Label5 *)] Flags permitted.
* 278 EXISTS
* 0 RECENT
* OK [UNSEEN 248] First unseen.
* OK [UIDVALIDITY 1149259473] UIDs valid
* OK [UIDNEXT 6333] Predicted next UID
. OK [READ-WRITE] Select completed.
. STATUS INBOX (MESSAGES RECENT UNSEEN)
* STATUS "INBOX" (MESSAGES 278 RECENT 0 UIDNEXT 6333 UNSEEN 5)
. OK Status completed.
. FETCH 1:* RFC822.SIZE
* 1 FETCH (RFC822.SIZE 14036)
* 2 FETCH (RFC822.SIZE 11317)
[...]
. OK Fetch completed.
. FETCH 1:1 (RFC822)
* 1 FETCH (RFC822 {14036}
[...]
)
. OK Fetch completed.
. LOGOUT
* BYE Logging out

En résumé retenez :
. LOGIN user pass
. SELECT box
. FETCH 1:* (RFC822)
. FETCH 1:* (ENVELOPE)
. FETCH 1:1 (RFC822)
. LOGOUT


Il existe un grand nombre d'autres commandes et paramètres à FETCH, mais ceci devrait vous suffire pour du debug. Plus de détails sur la RFC : http://www.faqs.org/rfcs/rfc3501.html

Publié dans admin

Commenter cet article