6.3.2 SELECT-Befehl
Argumente: Postfachname
Antworten:
- ERFORDERLICHE nicht markierte Antworten: FLAGS, EXISTS, LIST
- ERFORDERLICHE OK nicht markierte Antworten: PERMANENTFLAGS, UIDNEXT, UIDVALIDITY
Ergebnis:
- OK - select abgeschlossen, jetzt im ausgewählten Zustand
- NO - select fehlgeschlagen, jetzt im authentifizierten Zustand: kein solches Postfach, kann nicht auf Postfach zugreifen
- BAD - Befehl unbekannt oder Argumente ungültig
Der SELECT-Befehl wählt ein Postfach aus, damit auf Nachrichten im Postfach zugegriffen werden kann. Bevor der Server dem Client ein OK zurückgibt, muss (muss) der Server die folgenden nicht markierten Daten an den Client senden. (Die Reihenfolge der einzelnen Antworten ist nicht wichtig.) Beachten Sie, dass frühere Versionen dieses Protokolls, wie die in [RFC2060] spezifizierte IMAP4rev1-Version, nur die nicht markierten FLAGS- und EXISTS-Antworten und den UIDVALIDITY-Antwortcode erforderten. Client-Implementierungen, die mit solchen älteren IMAP-Versionen kompatibel bleiben müssen, müssen Standardverhalten für fehlende Daten implementieren, wie bei den einzelnen Elementen besprochen.
FLAGS Definierte Flags im Postfach. Siehe die Beschreibung der FLAGS-Antwort in Abschnitt 7.3.5 für weitere Details.
<n> EXISTS
Die Anzahl der Nachrichten im Postfach. Siehe die Beschreibung der EXISTS-Antwort in Abschnitt 7.4.1 für weitere Details.
LIST Der Server muss (muss) eine LIST-Antwort mit dem Postfachnamen zurückgeben. Die Liste der Postfachattribute muss (muss) korrekt sein. Wenn der Server denormalisierte UTF-8-Postfachnamen erlaubt (siehe Abschnitt 5.1) und der bereitgestellte Postfachname von der normalisierten Version abweicht, muss (muss) der Server LIST mit dem erweiterten Datenelement OLDNAME zurückgeben. Siehe Abschnitt 6.3.9.7 für weitere Details.
OK [PERMANENTFLAGS (<Liste von Flags>)]
Eine Liste von Nachrichten-Flags, die der Client dauerhaft ändern kann. Wenn dies fehlt, sollte der Client annehmen, dass alle Flags dauerhaft geändert werden können.
OK [UIDNEXT <n>]
Der nächste eindeutige Identifikatorwert. Siehe Abschnitt 2.3.1.1 für weitere Informationen.
OK [UIDVALIDITY <n>]
Der Gültigkeitswert des eindeutigen Identifikators. Siehe Abschnitt 2.3.1.1 für weitere Informationen.
In einer Verbindung kann jeweils nur ein Postfach ausgewählt werden; gleichzeitiger Zugriff auf mehrere Postfächer erfordert mehrere Verbindungen. Der SELECT-Befehl hebt automatisch die Auswahl eines aktuell ausgewählten Postfachs auf, bevor die neue Auswahl versucht wird. Wenn daher ein Postfach ausgewählt ist und ein fehlschlagender SELECT-Befehl versucht wird, ist kein Postfach ausgewählt. Beim Aufheben der Auswahl eines ausgewählten Postfachs muss (muss) der Server eine nicht markierte OK-Antwort mit dem Antwortcode "[CLOSED]" zurückgeben, wenn das aktuell ausgewählte Postfach geschlossen wird (siehe Abschnitt 7.1).
Wenn der Client berechtigt ist, das Postfach zu ändern, sollte (sollte) der Server dem Text der markierten OK-Antwort den Antwortcode "[READ-WRITE]" voranstellen.
Wenn der Client nicht berechtigt ist, das Postfach zu ändern, aber Lesezugriff hat, wird das Postfach als schreibgeschützt ausgewählt, und der Server muss (muss) dem Text der markierten OK-Antwort auf SELECT den Antwortcode "[READ-ONLY]" voranstellen. Schreibgeschützter Zugriff über SELECT unterscheidet sich vom EXAMINE-Befehl dadurch, dass bestimmte schreibgeschützte Postfächer die Änderung des permanenten Zustands auf Benutzerbasis (im Gegensatz zu global) erlauben können (können). In einer serverbasierten .newsrc-Datei markierte Netnews-Nachrichten sind ein Beispiel für einen solchen benutzerspezifischen permanenten Zustand, der mit schreibgeschützten Postfächern geändert werden kann.
Beispiel:
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
Beispiel:
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
[...einige Zeit später...]
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
Beachten Sie, dass IMAP4rev1-konforme Server auch die nicht markierte RECENT-Antwort senden können, die in IMAP4rev2 veraltet ist, z. B. "* 0 RECENT". Reine IMAP4rev2-Clients wird geraten, die nicht markierte RECENT-Antwort zu ignorieren.