Aller au contenu principal

6.3.2 Commande SELECT

Arguments : nom de boîte aux lettres

Réponses :

  • Réponses non étiquetées REQUISES : FLAGS, EXISTS, LIST
  • Réponses OK non étiquetées REQUISES : PERMANENTFLAGS, UIDNEXT, UIDVALIDITY

Résultat :

  • OK - select terminée, maintenant dans l'état sélectionné
  • NO - échec de select, maintenant dans l'état authentifié : pas de telle boîte aux lettres, impossible d'accéder à la boîte aux lettres
  • BAD - commande inconnue ou arguments invalides

La commande SELECT sélectionne une boîte aux lettres afin que les messages dans la boîte aux lettres puissent être accessibles. Avant de renvoyer un OK au client, le serveur doit (doit) envoyer les données non étiquetées suivantes au client. (L'ordre des réponses individuelles n'est pas important.) Notez que les versions antérieures de ce protocole, telles que la version IMAP4rev1 spécifiée dans [RFC2060], ne nécessitaient que les réponses non étiquetées FLAGS et EXISTS et le code de réponse UIDVALIDITY. Les implémentations client qui doivent rester compatibles avec ces versions IMAP plus anciennes doivent implémenter un comportement par défaut pour les données manquantes, comme discuté avec les éléments individuels.

FLAGS Drapeaux définis dans la boîte aux lettres. Voir la description de la réponse FLAGS dans la Section 7.3.5 pour plus de détails.

<n> EXISTS Le nombre de messages dans la boîte aux lettres. Voir la description de la réponse EXISTS dans la Section 7.4.1 pour plus de détails.

LIST Le serveur doit (doit) renvoyer une réponse LIST avec le nom de la boîte aux lettres. La liste des attributs de boîte aux lettres doit (doit) être précise. Si le serveur autorise les noms de boîtes aux lettres UTF-8 dénormalisés (voir Section 5.1) et que le nom de boîte aux lettres fourni diffère de la version normalisée, le serveur doit (doit) renvoyer LIST avec l'élément de données étendu OLDNAME. Voir la Section 6.3.9.7 pour plus de détails.

OK [PERMANENTFLAGS (<liste de drapeaux>)] Une liste de drapeaux de message que le client peut modifier de façon permanente. Si cela est manquant, le client devrait supposer que tous les drapeaux peuvent être modifiés de façon permanente.

OK [UIDNEXT <n>] La valeur du prochain identifiant unique. Référez-vous à la Section 2.3.1.1 pour plus d'informations.

OK [UIDVALIDITY <n>] La valeur de validité de l'identifiant unique. Référez-vous à la Section 2.3.1.1 pour plus d'informations.

Une seule boîte aux lettres peut être sélectionnée à la fois dans une connexion ; l'accès simultané à plusieurs boîtes aux lettres nécessite plusieurs connexions. La commande SELECT désélectionne automatiquement toute boîte aux lettres actuellement sélectionnée avant de tenter la nouvelle sélection. Par conséquent, si une boîte aux lettres est sélectionnée et qu'une commande SELECT qui échoue est tentée, aucune boîte aux lettres n'est sélectionnée. Lors de la désélection d'une boîte aux lettres sélectionnée, le serveur doit (doit) renvoyer une réponse OK non étiquetée avec le code de réponse "[CLOSED]" lorsque la boîte aux lettres actuellement sélectionnée est fermée (voir Section 7.1).

Si le client est autorisé à modifier la boîte aux lettres, le serveur devrait (devrait) préfixer le texte de la réponse OK étiquetée avec le code de réponse "[READ-WRITE]".

Si le client n'est pas autorisé à modifier la boîte aux lettres mais est autorisé à y accéder en lecture, la boîte aux lettres est sélectionnée en lecture seule, et le serveur doit (doit) préfixer le texte de la réponse OK étiquetée à SELECT avec le code de réponse "[READ-ONLY]". L'accès en lecture seule via SELECT diffère de la commande EXAMINE en ce que certaines boîtes aux lettres en lecture seule peuvent (peuvent) permettre la modification de l'état permanent sur une base par utilisateur (par opposition à global). Les messages Netnews marqués dans un fichier .newsrc basé sur le serveur sont un exemple d'un tel état permanent par utilisateur qui peut être modifié avec des boîtes aux lettres en lecture seule.

Exemple :

C: A142 SELECT INBOX
S: * 172 EXISTS
S: * OK [UIDVALIDITY 3857529045] UIDs valid
S: * OK [UIDNEXT 4392] Predicted next UID
S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
S: * OK [PERMANENTFLAGS (\Deleted \Seen \*)] Limited
S: * LIST () "/" INBOX
S: A142 OK [READ-WRITE] SELECT completed

Exemple :

C: A142 SELECT INBOX
S: * 172 EXISTS
S: * OK [UIDVALIDITY 3857529045] UIDs valid
S: * OK [UIDNEXT 4392] Predicted next UID
S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
S: * OK [PERMANENTFLAGS (\Deleted \Seen \*)] Limited
S: A142 OK [READ-WRITE] SELECT completed
[...quelque temps plus tard...]
C: A143 SELECT Drafts
S: * OK [CLOSED] Previous mailbox is now closed
S: * 5 EXISTS
S: * OK [UIDVALIDITY 9877410381] UIDs valid
S: * OK [UIDNEXT 102] Predicted next UID
S: * LIST () "/" Drafts
S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
S: * OK [PERMANENTFLAGS (\Deleted \Seen \Answered \Flagged \Draft \*)] System flags and keywords allowed
S: A143 OK [READ-WRITE] SELECT completed

Notez que les serveurs conformes à IMAP4rev1 peuvent également envoyer la réponse RECENT non étiquetée qui a été dépréciée dans IMAP4rev2, par exemple "* 0 RECENT". Les clients IMAP4rev2 purs sont invités à ignorer la réponse RECENT non étiquetée.