Aller au menu - Aller au contenu

[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...

Avatar
Auteur : yoch
Créé : le 10/04/2008 16:31:12
Modifié : le 15/04/2008 06:21:04
Noter et commenter ce tutoriel
Imprimer ce tutoriel
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 !
Sommaire 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ç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 !

Choix du repertoire

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... 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 :

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
Auteur : yoch
Noter et commenter ce tutoriel
Imprimer ce tutoriel

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | Fil RSS | XHTML 1.0 | CSS 2.0
Édité par Simple IT SARL : Nous contacter | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 330 Zéros connectés | Requêtes SQL 9 requêtes | Temps de génération de la page : Total (SQL) 0.0203s (0.0086s)