Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | |||
090_applicatifs:190imap:030_commandes [le 16/02/2025 à 14:36] – supprimée - modification externe (Date inconnue) 127.0.0.1 | 090_applicatifs:190imap:030_commandes [le 16/02/2025 à 14:36] (Version actuelle) – ↷ Page déplacée de 050_applicatifs:190imap:030_commandes à 090_applicatifs:190imap:030_commandes prof | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Les commandes d'IMAP ====== | ||
+ | |||
+ | Entrons maintenant qans le vif du sujet. Il y a quelques RFCs qui définissent IMAP4 tel qu'il est utilisé actuellement. Les voici : | ||
+ | ^RFC^Titre^Commentaire| | ||
+ | |[[ftp:// | ||
+ | |[[ftp:// | ||
+ | |[[ftp:// | ||
+ | |[[ftp:// | ||
+ | |[[ftp:// | ||
+ | |[[ftp:// | ||
+ | |[[ftp:// | ||
+ | |[[ftp:// | ||
+ | |[[ftp:// | ||
+ | |[[ftp:// | ||
+ | |[[ftp:// | ||
+ | |||
+ | Et voici la liste des commandes, avec les RFC qui y font référence. | ||
+ | |||
+ | ^Commande^RFC| | ||
+ | |APPEND|RFC 3501, RFC 3502, RFC 4466, RFC 4469| | ||
+ | |AUTHENTICATE|RFC 3501| | ||
+ | |**CAPABILITY**|RFC 3501| | ||
+ | |CHECK|RFC 3501| | ||
+ | |**CLOSE**|RFC 3501| | ||
+ | |COMPRESS|RFC 4978| | ||
+ | |COPY|RFC 3501| | ||
+ | |**CREATE**|RFC 3501, RFC 4466| | ||
+ | |**DELETE**|RFC 3501| | ||
+ | |DELETEACL|RFC 4314| | ||
+ | |EXAMINE|RFC 3501, RFC 4466| | ||
+ | |**EXPUNGE**|RFC 3501| | ||
+ | |FETCH|RFC 3501, RFC 4466| | ||
+ | |GETACL|RFC 4314| | ||
+ | |GETQUOTA|RFC 2087| | ||
+ | |GETQUOTAROOT|RFC 2087| | ||
+ | |**LIST**|RFC 3501| | ||
+ | |LISTRIGHTS|RFC 4314| | ||
+ | |**LOGIN**|RFC 3501| | ||
+ | |**LOGOUT**|RFC 3501| | ||
+ | |LSUB|RFC 3501| | ||
+ | |MYRIGHTS|RFC 4314| | ||
+ | |NOOP|RFC 3501| | ||
+ | |RENAME|RFC 3501, RFC 4466| | ||
+ | |SEARCH|RFC 3501, RFC 5032| | ||
+ | |**SELECT**|RFC 3501, RFC 4466| | ||
+ | |SETACL|RFC 4314| | ||
+ | |SETQUOTA|RFC 2087| | ||
+ | |**STARTTLS**|RFC 3501| | ||
+ | |STATUS|RFC 3501| | ||
+ | |STORE|RFC 3501, RFC 4466| | ||
+ | |**SUBSCRIBE**|RFC 3501| | ||
+ | |**UID**|RFC 3501, RFC 4315, RFC 4466| | ||
+ | |UNSELECT|RFC 3691| | ||
+ | |**UNSUBSCRIBE**|RFC 3501| | ||
+ | |X< | ||
+ | |||
+ | Au minimum, le RFC 3501 gagne à être lu pour mieux comprendre ce qui suit. Les commandes en gras seront plus particulièrement observées. | ||
+ | |||
+ | |||
+ | ===== Petit dialogue en IMAP ===== | ||
+ | {{: | ||
+ | Suit un dialogue tout simple, entre le MUA Thunderbird et un serveur IMAP (Dovecot) configuré pour accepter les échanges en '' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | No. | ||
+ | 4 0.000665 | ||
+ | 5 0.010322 | ||
+ | 7 0.010724 | ||
+ | 8 0.056690 | ||
+ | 9 0.057215 | ||
+ | 10 0.057487 | ||
+ | 12 1.748651 | ||
+ | 13 1.749334 | ||
+ | 15 1.750784 | ||
+ | 16 1.752712 | ||
+ | 17 1.753294 | ||
+ | 18 1.754174 | ||
+ | 19 1.754645 | ||
+ | 20 1.762273 | ||
+ | 21 1.763705 | ||
+ | 22 1.764358 | ||
+ | 23 1.765468 | ||
+ | 24 1.765912 | ||
+ | 25 1.767333 | ||
+ | 26 1.774399 | ||
+ | 27 1.775210 | ||
+ | 29 8.352640 | ||
+ | 30 8.352984 | ||
+ | 31 8.353243 | ||
+ | 32 8.354027 | ||
+ | 33 8.354250 | ||
+ | 34 8.354431 | ||
+ | 35 8.354688 | ||
+ | </ | ||
+ | |||
+ | Pas moins de 11 commandes sont envoyées au serveur. Regardons-les de plus près. | ||
+ | ^Commande^Description| | ||
+ | |capability|demande la liste des possibilités que le serveur supporte. | | ||
+ | |authenticate|indique au serveur un mécanisme d' | ||
+ | |namespace|Pour aller vite, cette commande retourne ce qu'il faut pour que l' | ||
+ | |lsub|permet d' | ||
+ | |list|permet d' | ||
+ | |select|sélectionne une boite aux lettres, ainsi les messages dans la boite aux lettres sont accessibles. Cette commande renvoie le nombre total de messages (EXISTS), et le nombre de nouveaux messages (RECENT)| | ||
+ | |getquotaroot|Comme son nom le laisse penser, cette commande renvoie l' | ||
+ | |uid|s' | ||
+ | |fetch|cette commande dispose d'une syntaxe assez complexe. il est possible d' | ||
+ | |idle| lorsque le serveur supporte cette commande, il permet au client d' | ||
+ | |close| assez similaire à EXPUNGE, cette commande détruit de façon définitive tous les messages qui ont le drapeau '' | ||
+ | |logout|Logout met fin à la session IMAP| | ||
+ | |||
+ | Comme nous n' | ||
+ | |||
+ | ===== Points de repère ===== | ||
+ | Encore une fois, rien ne vaut la lecture du RFC 3501 (ce ne sera pas faute d' | ||
+ | ==== Port par défaut ==== | ||
+ | Un serveur IMAP écoute par défaut sur le port 143. Si l'on n' | ||
+ | |||
+ | ==== Syntaxe ==== | ||
+ | Premier point, les commandes doivent être indexées, contrairement à POP. Autrement dit, chaque commande doit être précédée d'un index unique. Ceci permet dans certaines conditions d' | ||
+ | ==== Les « flags » ==== | ||
+ | Les commandes peuvent être envoyées en caractères majuscules ou en minuscules. Il vaut mieux le faire en majuscules. | ||
+ | |||
+ | |\Seen|Le message a été lu| | ||
+ | |\Answered|Il a été répondu au message| | ||
+ | |\Flagged|Le message est marqué pour lui donner une attention perticulière| | ||
+ | |\Deleted|Le message est supprimé pour que plus tard un '' | ||
+ | |\Draft|Le message n'a pas été entièrement composé. Il est marqué en tant que brouillon| | ||
+ | |\Recent |Le message est arrivé dans cette boite aux lettres après la dernière consultation de celle-ci. Les sessions ultérieures ne verront pas l' | ||
+ | |||
+ | ==== Quelques commandes utiles ==== | ||
+ | Il existe des commandes qui peuvent être utilisées sans authentification préalable (très peu) et d' | ||
+ | |||
+ | == CAPABILITY == | ||
+ | C'est une commande importante, elle permet au client de savoir ce dont le serveur est capable. Tous les serveurs IMAP n'ont pas les mêmes possibilités. Cette commande peut être envoyée au serveur avant l' | ||
+ | |||
+ | un serveur uw-imapd | ||
+ | 10 capability | ||
+ | * CAPABILITY IMAP4REV1 LITERAL+ IDLE UIDPLUS NAMESPACE CHILDREN MAILBOX-REFERRALS BINARY | ||
+ | UNSELECT ESEARCH WITHIN SCAN SORT THREAD=REFERENCES THREAD=ORDEREDSUBJECT MULTIAPPEND | ||
+ | SASL-IR LOGIN-REFERRALS STARTTLS LOGINDISABLED | ||
+ | 10 OK CAPABILITY completed | ||
+ | |||
+ | un serveur Dovecot | ||
+ | 10 capability | ||
+ | * CAPABILITY IMAP4rev1 SASL-IR SORT THREAD=REFERENCES MULTIAPPEND UNSELECT LITERAL+ | ||
+ | IDLE CHILDREN NAMESPACE LOGIN-REFERRALS QUOTA STARTTLS AUTH=PLAIN | ||
+ | 10 OK CAPABILITY completed | ||
+ | |||
+ | un autre serveur Dovecot, configuré différemment | ||
+ | 10 capability | ||
+ | * CAPABILITY IMAP4rev1 SASL-IR SORT THREAD=REFERENCES MULTIAPPEND UNSELECT LITERAL+ | ||
+ | IDLE CHILDREN NAMESPACE LOGIN-REFERRALS STARTTLS AUTH=PLAIN | ||
+ | 10 OK CAPABILITY completed | ||
+ | |||
+ | un serveur Courier-imapd | ||
+ | 10 capability | ||
+ | * CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES | ||
+ | SORT QUOTA IDLE ACL ACL2=UNION STARTTLS LOGINDISABLED | ||
+ | 10 OK CAPABILITY completed | ||
+ | |||
+ | un serveur Cyrus-imapd | ||
+ | 10 capability | ||
+ | * CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ MAILBOX-REFERRALS NAMESPACE UIDPLUS ID | ||
+ | NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY SORT THREAD=ORDEREDSUBJECT | ||
+ | THREAD=REFERENCES ANNOTATEMORE IDLE STARTTLS LOGINDISABLED | ||
+ | 10 OK Completed | ||
+ | |||
+ | Notez '' | ||
+ | == LSUB et LIST == | ||
+ | Ces deux commandes permettent de savoir quels sont les répertoires souscrits et existants. Exemple : | ||
+ | < | ||
+ | * OK Dovecot ready. | ||
+ | 10 login chris@maison.mrs epikoi | ||
+ | 10 OK Logged in. | ||
+ | 20 lsub " | ||
+ | * LSUB () " | ||
+ | 20 OK Lsub completed. | ||
+ | 30 list " | ||
+ | * LIST (\HasNoChildren) " | ||
+ | * LIST (\HasNoChildren) " | ||
+ | 30 OK List completed. | ||
+ | 40 unsubscribe " | ||
+ | 40 OK Unsubscribe completed. | ||
+ | 50 lsub " | ||
+ | 50 OK Lsub completed. | ||
+ | 60 list " | ||
+ | * LIST (\HasNoChildren) " | ||
+ | * LIST (\HasNoChildren) " | ||
+ | 60 OK List completed. | ||
+ | 70 logout | ||
+ | * BYE Logging out | ||
+ | 70 OK Logout completed. | ||
+ | Connection closed by foreign host. | ||
+ | </ | ||
+ | |||
+ | Au début de la session, '' | ||
+ | |||
+ | La commande '' | ||
+ | == SELECT == | ||
+ | Permet de sélectionner un dossier et d' | ||
+ | < | ||
+ | 20 select INBOX | ||
+ | * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | ||
+ | * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted. | ||
+ | * 6 EXISTS | ||
+ | * 1 RECENT | ||
+ | * OK [UNSEEN 5] First unseen. | ||
+ | * OK [UIDVALIDITY 1216295789] UIDs valid | ||
+ | * OK [UIDNEXT 7] Predicted next UID | ||
+ | 20 OK [READ-WRITE] Select completed. | ||
+ | </ | ||
+ | |||
+ | Le fait de sélectionner '' | ||
+ | * 6 messages ; | ||
+ | * 1 est '' | ||
+ | * le premier message non lu a l' | ||
+ | == UID et FETCH == | ||
+ | Pour en savoir plus, il faut utiliser ce couple infernal, avec la bonne syntaxe. Ici, nous voulons juste avoir le détail des '' | ||
+ | < | ||
+ | 30 uid fetch 1:* (FLAGS) | ||
+ | * 1 FETCH (FLAGS (\Seen) UID 1) | ||
+ | * 2 FETCH (FLAGS (\Seen) UID 2) | ||
+ | * 3 FETCH (FLAGS (\Seen) UID 3) | ||
+ | * 4 FETCH (FLAGS (\Seen) UID 4) | ||
+ | * 5 FETCH (FLAGS () UID 5) | ||
+ | * 6 FETCH (FLAGS (\Recent) UID 6) | ||
+ | 30 OK Fetch completed. | ||
+ | </ | ||
+ | |||
+ | Ce qui nous apprend que : | ||
+ | * les messages 1 à 4 ont été lus ; | ||
+ | * le message 5 était déjà présent lors de la dernière consultation, | ||
+ | * le message 6 est '' | ||
+ | |||
+ | Est-ce à dire que le seul fait d' | ||
+ | < | ||
+ | 40 logout | ||
+ | 40 OK Logout completed. | ||
+ | Connection closed by foreign host. | ||
+ | chris@pchris2: | ||
+ | Trying 192.168.0.18... | ||
+ | Connected to janus.maison.mrs. | ||
+ | Escape character is ' | ||
+ | * OK Dovecot ready. | ||
+ | 10 login chris@maison.mrs epikoi | ||
+ | 10 OK Logged in. | ||
+ | 20 select " | ||
+ | * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | ||
+ | * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted. | ||
+ | * 6 EXISTS | ||
+ | * 0 RECENT | ||
+ | * OK [UNSEEN 5] First unseen. | ||
+ | * OK [UIDVALIDITY 1216295789] UIDs valid | ||
+ | * OK [UIDNEXT 7] Predicted next UID | ||
+ | 20 OK [READ-WRITE] Select completed. | ||
+ | 30 uid fetch 1:* (FLAGS) | ||
+ | * 1 FETCH (FLAGS (\Seen) UID 1) | ||
+ | * 2 FETCH (FLAGS (\Seen) UID 2) | ||
+ | * 3 FETCH (FLAGS (\Seen) UID 3) | ||
+ | * 4 FETCH (FLAGS (\Seen) UID 4) | ||
+ | * 5 FETCH (FLAGS () UID 5) | ||
+ | * 6 FETCH (FLAGS () UID 6) | ||
+ | 30 OK Fetch completed. | ||
+ | </ | ||
+ | |||
+ | Le seul fait d' | ||
+ | < | ||
+ | 40 uid FETCH 6 BODY[HEADER] | ||
+ | * 6 FETCH (UID 6 FLAGS (\Seen) BODY[HEADER] {811} | ||
+ | Return-Path: | ||
+ | Delivered-To: | ||
+ | Received: from localhost (localhost [127.0.0.1]) | ||
+ | by janus.nain-t.net (Postfix) with ESMTP id C47C64000B3 | ||
+ | for < | ||
+ | X-Virus-Scanned: | ||
+ | Received: from janus.nain-t.net ([127.0.0.1]) | ||
+ | by localhost (janus.nain-t.net [127.0.0.1]) (amavisd-new, | ||
+ | with ESMTP id UPxwk-p3hN85 for < | ||
+ | Sun, 20 Jul 2008 17:58:17 +0200 (CEST) | ||
+ | Received: by janus.nain-t.net (Postfix, from userid 0) | ||
+ | id C886740009C; | ||
+ | To: chris@maison.mrs | ||
+ | Subject: test IMAP | ||
+ | Message-Id: < | ||
+ | Date: Sun, 20 Jul 2008 17:58:17 +0200 (CEST) | ||
+ | From: root@janus.nain-t.net (root) | ||
+ | |||
+ | ) | ||
+ | 40 OK Fetch completed. | ||
+ | 40 uid fetch 1:* (FLAGS) | ||
+ | * 1 FETCH (FLAGS (\Seen) UID 1) | ||
+ | * 2 FETCH (FLAGS (\Seen) UID 2) | ||
+ | * 3 FETCH (FLAGS (\Seen) UID 3) | ||
+ | * 4 FETCH (FLAGS (\Seen) UID 4) | ||
+ | * 5 FETCH (FLAGS () UID 5) | ||
+ | * 6 FETCH (FLAGS (\Seen) UID 6) | ||
+ | 40 OK Fetch completed. | ||
+ | </ | ||
+ | '' | ||
+ | == STARTTLS == | ||
+ | Cette commande permet de négocier entre le client et le serveur une méthode de chiffrement des données échangées. Le serveur doit présenter un certificat (avec sa clé publique) et le client doit accepter ce certificat. Soit automatiquement parce qu'il est signé par une autorité de confiance connue, soit manuellement. STARTTLS employé avant AUTHANTICATE permet de chiffrer aussi la procédure de login. Il n'est que trop conseillé d' | ||
+ | |||
+ | ==== Supprimer un message ==== | ||
+ | Vous avez bien lu jusqu' | ||
+ | |||
+ | === Marqué avec \Deleted === | ||
+ | Il faut utiliser la commande '' | ||
+ | < | ||
+ | 50 store 6 +FLAGS (\Deleted) | ||
+ | * 6 FETCH (FLAGS (\Deleted \Seen)) | ||
+ | 50 OK Store completed. | ||
+ | 60 uid fetch 1:* (FLAGS) | ||
+ | * 1 FETCH (FLAGS (\Seen) UID 1) | ||
+ | * 2 FETCH (FLAGS (\Seen) UID 2) | ||
+ | * 3 FETCH (FLAGS (\Seen) UID 3) | ||
+ | * 4 FETCH (FLAGS (\Seen) UID 4) | ||
+ | * 5 FETCH (FLAGS () UID 5) | ||
+ | * 6 FETCH (FLAGS (\Deleted \Seen) UID 6) | ||
+ | 60 OK Fetch completed. | ||
+ | </ | ||
+ | |||
+ | Vous l'avez compris, ceci n'a rien effacé du tout. Nous avons juste ajouté le flag '' | ||
+ | * le message semble avoir disparu, ce qui est une très mauvaise approche, car l' | ||
+ | * le message apparait barré, mais est toujours visible. C'est probablement la meilleure approche. | ||
+ | |||
+ | Devinez laquelle choisissent la plupart des MUA ? La première bien sûr. Non contents de ça, ils créent automatiquement un répertoire '' | ||
+ | |||
+ | Ce détail a son importance lorsque l'on a atteint le quota fixé par le fournisseur du service. Refaire un peu de place peut s' | ||
+ | |||
+ | === EXPUNGE ou CLOSE === | ||
+ | '' | ||
+ | < | ||
+ | 70 close | ||
+ | 70 OK Close completed. | ||
+ | 80 select " | ||
+ | * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | ||
+ | * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted. | ||
+ | * 5 EXISTS | ||
+ | * 0 RECENT | ||
+ | * OK [UNSEEN 5] First unseen. | ||
+ | * OK [UIDVALIDITY 1216295789] UIDs valid | ||
+ | * OK [UIDNEXT 7] Predicted next UID | ||
+ | 80 OK [READ-WRITE] Select completed. | ||
+ | 90 uid fetch 1:* (FLAGS) | ||
+ | * 1 FETCH (FLAGS (\Seen) UID 1) | ||
+ | * 2 FETCH (FLAGS (\Seen) UID 2) | ||
+ | * 3 FETCH (FLAGS (\Seen) UID 3) | ||
+ | * 4 FETCH (FLAGS (\Seen) UID 4) | ||
+ | * 5 FETCH (FLAGS () UID 5) | ||
+ | 90 OK Fetch completed. | ||
+ | </ | ||
+ | |||
+ | Le message d' | ||
+ | |||
+ | Malheureusement, | ||
+ | ===== Jouons un peu ===== | ||
+ | Ami lecteur, pour toi de vérifier que tu as bien assimilé tout ceci le temps maintenant est venu. Pour t' | ||
+ | |||
+ | ==== Etat initial ==== | ||
+ | Notre compte se présente comme ceci dans Thunderbird : | ||
+ | {{ : | ||
+ | Il y a donc 3 messages dans INBOX. | ||
+ | |||
+ | ==== Jeu de commandes ==== | ||
+ | Nous nous connectons avec Telnet sur le serveur et envoyons les commandes suivantes : | ||
+ | < | ||
+ | 10 login chris@maison.mrs epikoi | ||
+ | 10 OK Logged in. | ||
+ | 20 list " | ||
+ | * LIST (\HasNoChildren) " | ||
+ | * LIST (\HasNoChildren) " | ||
+ | 20 OK List completed. | ||
+ | 30 create Dossier_1 | ||
+ | 30 OK Create completed. | ||
+ | 40 create Dossier_1.SousDossier_1 | ||
+ | 40 OK Create completed. | ||
+ | 50 create INBOX.Rangement | ||
+ | 50 OK Create completed. | ||
+ | 60 subscribe INBOX.Rangement | ||
+ | 60 OK Subscribe completed. | ||
+ | 70 subscribe Dossier_1 | ||
+ | 70 OK Subscribe completed. | ||
+ | 80 subscribe Dossier_1.SousDossier_1 | ||
+ | 80 OK Subscribe completed. | ||
+ | 90 select INBOX | ||
+ | * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | ||
+ | * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted. | ||
+ | * 3 EXISTS | ||
+ | * 0 RECENT | ||
+ | * OK [UNSEEN 1] First unseen. | ||
+ | * OK [UIDVALIDITY 1216295789] UIDs valid | ||
+ | * OK [UIDNEXT 10] Predicted next UID | ||
+ | 90 OK [READ-WRITE] Select completed. | ||
+ | 100 rename Dossier_1 Archive | ||
+ | 100 OK Rename completed. | ||
+ | 110 list " | ||
+ | * LIST (\HasNoChildren) " | ||
+ | * LIST (\HasChildren) " | ||
+ | * LIST (\HasChildren) " | ||
+ | * LIST (\HasNoChildren) " | ||
+ | * LIST (\HasNoChildren) " | ||
+ | 110 OK List completed. | ||
+ | 120 rename Archive.SousDossier_1 Archive.2007-2008 | ||
+ | 120 OK Rename completed. | ||
+ | 130 uid fetch 1:* (FLAGS) | ||
+ | * 1 FETCH (FLAGS () UID 7) | ||
+ | * 2 FETCH (FLAGS () UID 8) | ||
+ | * 3 FETCH (FLAGS () UID 9) | ||
+ | 130 OK Fetch completed. | ||
+ | 140 copy 1:2 Archive.2007-2008 | ||
+ | 140 OK Copy completed. | ||
+ | 150 copy 3 INBOX.Rangement | ||
+ | 150 OK Copy completed. | ||
+ | 160 store 1:3 +FLAGS (\Deleted) | ||
+ | * 1 FETCH (FLAGS (\Deleted)) | ||
+ | * 2 FETCH (FLAGS (\Deleted)) | ||
+ | * 3 FETCH (FLAGS (\Deleted)) | ||
+ | 160 OK Store completed. | ||
+ | 170 expunge | ||
+ | * 3 EXPUNGE | ||
+ | * 2 EXPUNGE | ||
+ | * 1 EXPUNGE | ||
+ | 170 OK Expunge completed. | ||
+ | 180 logout | ||
+ | * BYE Logging out | ||
+ | 180 OK Logout completed. | ||
+ | Connection closed by foreign host. | ||
+ | </ | ||
+ | Ami lecteur, peux-tu prévoir ce que le client va désormais trouver dans son Thunderbird, | ||
+ | |||
+ | |||
+ | ==== Etat final ==== | ||
+ | {{ : | ||
+ | |||
+ | Ami lecteur, avais-tu vu le piège ? | ||
+ | |||
+ | Reprenons avec Telnet : | ||
+ | < | ||
+ | 10 login chris@maison.mrs epikoi | ||
+ | 10 OK Logged in. | ||
+ | 20 lsub " | ||
+ | * LSUB () " | ||
+ | * LSUB () " | ||
+ | * LSUB () " | ||
+ | 20 OK Lsub completed. | ||
+ | </ | ||
+ | |||
+ | Ce n'est pas parce que l'on a renommé les dossiers, que les abonnements ont été mis à jour. Il faut le faire manuellement : | ||
+ | < | ||
+ | 30 unsubscribe Dossier_1 | ||
+ | 30 OK Unsubscribe completed. | ||
+ | 40 unsubscribe Dossier_1.SousDossier_1 | ||
+ | 40 OK Unsubscribe completed. | ||
+ | 50 list " | ||
+ | * LIST (\HasNoChildren) " | ||
+ | * LIST (\HasChildren) " | ||
+ | * LIST (\HasChildren) " | ||
+ | * LIST (\HasNoChildren) " | ||
+ | * LIST (\HasNoChildren) " | ||
+ | 50 OK List completed. | ||
+ | 60 subscribe Archive | ||
+ | 60 OK Subscribe completed. | ||
+ | 70 subscribe Archive.2007-2008 | ||
+ | 70 OK Subscribe completed. | ||
+ | 80 logout | ||
+ | * BYE Logging out | ||
+ | 80 OK Logout completed. | ||
+ | </ | ||
+ | |||
+ | Voilà qui devrait aller mieux : | ||
+ | {{ : | ||
+ | Nettement. Les dossiers sont à jour et leur contenu aussi. | ||
+ | {{ : | ||
+ | Puisque nous y sommes et puisque nous avons la main sur le serveur (Dovecot, en l' | ||
+ | < | ||
+ | janus:/ | ||
+ | total 44 | ||
+ | drwx------ 9 vmail vmail 4096 2008-07-20 19:31 . | ||
+ | drwx------ 3 vmail vmail 20 2008-07-17 13:56 .. | ||
+ | drwx------ 5 vmail vmail 56 2008-07-20 19:10 .Archive | ||
+ | drwx------ 5 vmail vmail 148 2008-07-20 19:35 .Archive.2007-2008 | ||
+ | drwx------ 2 vmail vmail 6 2008-07-20 19:21 cur | ||
+ | -rw------- 1 vmail vmail 144 2008-07-20 19:21 dovecot.index | ||
+ | -rw------- 1 vmail vmail 20480 2008-07-20 19:21 dovecot.index.cache | ||
+ | -rw------- 1 vmail vmail 2984 2008-07-20 19:23 dovecot.index.log | ||
+ | -rw------- 1 vmail vmail 377 2008-07-20 19:05 dovecot-uidlist | ||
+ | drwx------ 5 vmail vmail 148 2008-07-20 19:36 .INBOX.Rangement | ||
+ | -rw------- 1 vmail vmail 138 2008-07-20 19:21 maildirsize | ||
+ | drwx------ 2 vmail vmail 6 2008-07-20 19:05 new | ||
+ | -rw------- 1 vmail vmail 42 2008-07-20 19:31 subscriptions | ||
+ | drwx------ 2 vmail vmail 6 2008-07-20 19:05 tmp | ||
+ | drwx------ 5 vmail vmail 148 2008-07-20 19:04 .Trash | ||
+ | </ | ||
+ | |||
+ | Notez les analogies, mais INBOX n'y est pas ? | ||
+ | |||
+ | C'est normal. En fait, Dovecot range dans '' | ||
+ | |||
+ | Nous sommes dans une architecture de type '' | ||
+ | ===== Conclusion ===== | ||
+ | Tout ceci avait pour but de montrer la supériorité d'IMAP sur son concurrent POP3. Sa plus grande complexité aussi. | ||
+ | |||
+ | IMAPS, tout comme POP3S, utilisent une connexion entièrement chiffrée dès le départ, mais les protocoles demeurent identiques. IMAP, tout comme POP3, peut implémenter la commande '' | ||
+ | |||
+ | IMAPS n' | ||
Les commandes d'IMAP: Dernière modification le: 01/01/1970 à 00:00 par