[Plan du site]
Vous êtes ici ---
> Le Site du Zér0
> Les tutoriels
> Non-Officiels
> Réseaux
> Général
> Lecture du tutoriel
Il y a aussi IMAP...
Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
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 !
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çus 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, forcement !
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 meme pas se prendre la tête pour rien !
Le serveur IMAP divise votre "boites 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...
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...
Bien, maintenant vous voulez le lire, ce mail ?
Ça tombe bien, moi aussi...
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]
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