Aller au menu - Aller au contenu

Icône Il y a aussi IMAP...

Avatar
Par Avatar yoch
Mise à jour : 26/08/2008
1 479 visites depuis 7 jours, dont 50 sur ce chapitre classé 88/786
IMAP (aujourd'hui IMAP4rev1) est un protocole plus récent et moins bien connu que le protocole POP.

Il est néanmoins plus puissant que ce dernier, et permet notamment la gestion des mails sur le serveur même, c'est le mode online : les mails restent sur le serveur et sont manipulés à distance par le client de messagerie.
Bien entendu, le mode offline (le courielleur télécharge les mails et se charge de leur gestion) existe aussi avec IMAP, à l'instar du protocole POP.

Tout cela pour vous prévenir que ce protocole est nettement plus complexe que le protocole POP, aussi nous n'allons aborder que les notions les plus simples...
Seuls les meilleurs logiciels de messagerie supportent correctement l'IMAP !
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

On se connecte ?

La connexion reste tout aussi simple, souvenez vous simplement que le port par défaut est le port 143.

On fait donc (par exemple) :
Code : Console
open imap.laposte.net 143


Le serveur devrait répondre quelque chose comme :
* OK IMAP4 server ready

Maintenant attention, vous allez faire :
1 login paul 123
1 OK User logged


Pas de panique, je vais vous expliquer.

Les tags



Avec l'IMAP, chaque commande doit être précédée d'un tag, qui va servir à identifier la commande. J'ai choisi 1, mais j'aurais aussi pu choisir a, ou 0001, ou autre...
Le serveur répond en indiquant que la commande 1 a réussi (ou échoué...).

Par contre, si vous aviez fait : login paul 123
vous auriez reçu un beau message d'erreur :
login BAD Unreconized Command

Pour ceux qui n'auraient pas compris : le serveur a interprété login comme un tag, et paul comme commande. Donc il retourne BAD, forcément !

Maintenant, si vous entrez un mauvais login, vous aurez le droit seulement à :
1 NO login failed: user not found

BAD signifie qu'il y a eu une erreur de protocole, tandis que NO veut seulement dire que l'action a échoué.

Il existe une autre manière de s'identifier, avec la commande authenticate, mais comme c'est en base64, on va quand même pas se prendre la tête pour rien !

Choix du répertoire

Le serveur IMAP divise votre "boite aux lettres" en compartiments. Tant que vous n'en avez sélectionné aucun, vous ne pouvez pas faire grand-chose...

Je vais vous montrer comment connaître tous vos compartiments :
2 list "*" "*"

Chez moi j'ai :
* LIST (\HasChildren) "." "INBOX"
* LIST (\HasChildren) "." "INBOX.DRAFT"
* LIST (\HasChildren) "." "INBOX.OUTBOX"
* LIST (\HasChildren) "." "INBOX.QUARANTAINE"
* LIST (\HasChildren) "." "INBOX.TRASH"
2 OK Completed (0.000 secs 6 calls)


J'ai donc cinq compartiments. Vous l'avez compris, le plus intéressant est le compartiment INBOX, qui est la boite de réception. INBOX.TRASH = messages supprimés, INBOX.QUARANTAINE = messages en quarantaine, etc.

Vous pouvez remarquer aussi que les premières lignes commencent par un *. Ce sont des lignes sans tag (untagged), car le tag n'est renvoyé que lorsque la commande a fini de s'exécuter.

Maintenant, on va sélectionner notre boite de réception :
3 select INBOX
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)]
* 1 EXISTS
* 0 RECENT
* OK [UNSEEN 1]
* OK [UIDVALIDITY 1199996497]
* OK [UIDNEXT 38]
3 OK [READ-WRITE] Completed


Arrêtez de me regarder comme ça... o_O
1 EXISTS nous dit qu'il y a un message dans la boite. 0 RECENT nous dit que ce message n'est pas récent, c'est-à-dire qu'il était déjà là lors de notre précédente consultation. [UNSEEN 1] veut dire simplement qu'il y a un message non lu.
Eh oui, vous commencez à comprendre ce qu'est la gestion des mails online ! ;)

Pour le reste, vous comprendrez plus tard...

Lire ses mails

Bien, maintenant vous voulez le lire, ce mail ?

Ça tombe bien, moi aussi... :p

On fait :
4 fetch 1 body[text]
* 1 FETCH (FLAGS \Seen) BODY[TEXT] {2107}
Bla Bla Bla...
...
4 OK Completed


Fetch veut dire "va chercher", en anglais.
Le serveur obéit et me montre mon mail.

La commande fetch est particulièrement riche en nuances, mais je ne vais vous en apprendre qu'une seule, qui permet de récupérer l'en-tête du mail :
4 fetch 1 body[header]

Gérer ses messages : les flags

Si vous vous reconnectez à votre serveur IMAP, vous constaterez avec horreur que votre message est toujours au statut non lu (UNSEEN).
Mais comment est-ce possible ?

C'est simple, si vous voulez que le message soit mis en lu, il faut avertir le serveur ! (un courrielleur l'aurait fait automatiquement, mais pas telnet).

C'est là qu'interviennent les flags : les flags (en anglais "drapeaux") permettent de déterminer le statut du mail.

Vous vous souvenez cette ligne : * FLAGS (\Answered \Flagged \Draft \Deleted \Seen) ?
Elle nous donne les types de flags possibles :
  • answered = répondu ;
  • flagged = post-it ;
  • draft = brouillon ;
  • deleted = supprimé ;
  • seen = lu.

Tant que vous n'avez pas ajouté le flag (/Seen), le message sera toujours considéré comme non lu !

Voici comment procéder :
5 store 1 +flags (\deleted)
* 1 FETCH (FLAGS (\Deleted \Seen))
5 OK Completed


Maintenant, il n'y a plus de mail non lu. Néanmoins, le mail existe toujours sur le serveur.
Eh oui, le serveur nous a dit qu'il marquait le mail en (\Deleted), donc forcement il existe toujours !

Pour supprimer le mail définitivement, il y a encore une autre commande :
6 expunge
* 1 EXPUNGE
* 0 EXISTS
* 0 RECENTS
6 OK Completed


OK, mais alors il sert à quoi le répertoire INBOX.TRASH ?

Bonne question !

La réponse est que si vous faites expunge, le mail est supprimé définitivement.
Mais si on veut simplement l'envoyer "à la corbeille", il y a le trash pour cela.

Pour cela, il aurait fallu faire :
6 copy 1 INBOX.TRASH
6 OK [COPYUID 1199996497 38 1] Completed
7 expunge
* 1 EXPUNGE
* 0 EXISTS
* 0 RECENTS
7 OK Completed


Il faut copier le mail dans le trash avant de faire expunge, sans quoi le mail n'existe plus !

La commande copy ne fait que copier le mail dans le trash, sans l'effacer de la boite principale !
Je crois que ce sera tout !

Ah, j'oubliais...
Il vous reste à savoir comment quitter proprement :
8 logout
* BYE LOGOUT received
8 OK Completed
Chapitre précédent Sommaire Chapitre suivant

Partager

2 commentaires pour "Il y a aussi IMAP..."
Note moyenne : 3.75 / 4 (20 votes)
Pseudo Commentaire
Hors ligne zave # Posté le 02/05/2008 à 01:30:50
Avatar
Flux RSS

Ville : Compiegne
Pays : France métropolitaine

Bonjour

J'ai le plaisir d'inaugurer les commentaires pour ce super tuto, je n'ai qu'une chose chose à dire c'est du très bon boulot, j'ai appris pleins de chose. Merci :)

Le savoir ne vaut que si il est partagé.
Ne fait pas aux autres ce que tu n'aimerais pas que l'on te fasse à toi même.

Voter pour votre jeu préféré sur Playfire
 
Hors ligne anonyme # Posté le 03/05/2008 à 14:37:45

Très bon tuto, à ceci près que je n'arrive pas à me connecter en IMAP via Telnet.
Mais bon, tes explications sont claires, on ne se perd pas et ton tuto est plaisant à lire, que ce soit par simple curiosité ou par envie d'apprendre.
Secret (cliquez pour afficher)
20/20

Voir tous les commentaires