6.3.2 SELECT コマンド
引数 (Arguments): メールボックス名
応答 (Responses):
- 必須のタグなし応答:FLAGS, EXISTS, LIST
- 必須の OK タグなし応答:PERMANENTFLAGS, UIDNEXT, UIDVALIDITY
結果 (Result):
- OK - select 完了、現在は選択済み状態
- NO - select 失敗、現在は認証済み状態:そのようなメールボックスはありません、メールボックスにアクセスできません
- BAD - コマンド不明または引数が無効
SELECT コマンドは、メールボックス内のメッセージにアクセスできるようにメールボックスを選択します。クライアントに OK を返す前に、サーバーは次のタグなしデータをクライアントに送信しなければなりません (しなければなりません)。(個々の応答の順序は重要ではありません。) このプロトコルの以前のバージョン、たとえば [RFC2060] で指定されている IMAP4rev1 バージョンは、FLAGS および EXISTS タグなし応答と UIDVALIDITY 応答コードのみを要求していたことに注意してください。このような古い IMAP バージョンとの互換性を維持する必要があるクライアント実装は、個々の項目で説明されているように、欠落データのデフォルト動作を実装する必要があります。
FLAGS メールボックスで定義されたフラグ。詳細については、セクション 7.3.5 の FLAGS 応答の説明を参照してください。
<n> EXISTS
メールボックス内のメッセージ数。詳細については、セクション 7.4.1 の EXISTS 応答の説明を参照してください。
LIST サーバーは、メールボックス名を含む LIST 応答を返さなければなりません (しなければなりません)。メールボックス属性のリストは正確でなければなりません (しなければなりません)。サーバーが非正規化 UTF-8 メールボックス名を許可し (セクション 5.1 を参照)、提供されたメールボックス名が正規化バージョンと異なる場合、サーバーは OLDNAME 拡張データ項目を含む LIST を返さなければなりません (しなければなりません)。詳細については、セクション 6.3.9.7 を参照してください。
OK [PERMANENTFLAGS (<フラグのリスト>)]
クライアントが永続的に変更できるメッセージフラグのリスト。これが欠落している場合、クライアントはすべてのフラグを永続的に変更できると仮定する必要があります。
OK [UIDNEXT <n>]
次の一意識別子値。詳細については、セクション 2.3.1.1 を参照してください。
OK [UIDVALIDITY <n>]
一意識別子有効性値。詳細については、セクション 2.3.1.1 を参照してください。
接続では一度に 1 つのメールボックスのみを選択できます。複数のメールボックスへの同時アクセスには複数の接続が必要です。SELECT コマンドは、新しい選択を試みる前に、現在選択されているメールボックスを自動的に選択解除します。したがって、メールボックスが選択されており、失敗する SELECT コマンドが試行された場合、メールボックスは選択されません。選択されたメールボックスを選択解除する場合、現在選択されているメールボックスが閉じられたときに、サーバーは "[CLOSED]" 応答コードを含むタグなし OK 応答を返さなければなりません (しなければなりません) (セクション 7.1 を参照)。
クライアントがメールボックスを変更することを許可されている場合、サーバーはタグ付き OK 応答のテキストの前に "[READ-WRITE]" 応答コードを付けるべきです (すべきです)。
クライアントがメールボックスを変更することを許可されていないが、読み取りアクセスが許可されている場合、メールボックスは読み取り専用として選択され、サーバーは SELECT へのタグ付き OK 応答のテキストの前に "[READ-ONLY]" 応答コードを付けなければなりません (しなければなりません)。SELECT による読み取り専用アクセスは、EXAMINE コマンドとは異なり、特定の読み取り専用メールボックスが (グローバルではなく) ユーザーごとに永続的な状態の変更を許可してもよい (してもよい) 点が異なります。サーバーベースの .newsrc ファイルにマークされた Netnews メッセージは、読み取り専用メールボックスで変更できるこのようなユーザーごとの永続的な状態の例です。
例:
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
例:
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
[...しばらくして...]
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
IMAP4rev1 準拠のサーバーは、IMAP4rev2 で非推奨となったタグなし RECENT 応答 (「* 0 RECENT」など) も送信できることに注意してください。純粋な IMAP4rev2 クライアントは、タグなし RECENT 応答を無視することをお勧めします。