メインコンテンツまでスキップ

3. 状態とフロー図 (State and Flow Diagram)

クライアントとサーバーの間の接続が確立されると, IMAP4rev1 接続は 4 つの状態のいずれかになる. 初期状態はサーバーグリーティングで識別される. ほとんどのコマンドは特定の状態でのみ有効である. 接続が不適切な状態にあるときにクライアントがコマンドを試行することはプロトコルエラーであり, サーバーは (サーバー実装に応じて) BAD または NO のコマンド完了結果で応答する.

3.1. 未認証状態 (Not Authenticated State)​

未認証状態では, ほとんどのコマンドが許可される前に, クライアントは認証資格情報を提供しなければならない (MUST). この状態は, 接続が事前認証されていない限り, 接続の開始時に入る.

3.2. 認証済み状態 (Authenticated State)​

認証済み状態では, クライアントは認証されており, メッセージに影響を与えるコマンドが許可される前に, アクセスするメールボックスを選択しなければならない (MUST). この状態は, 事前認証された接続が開始されたとき, 受け入れ可能な認証資格情報が提供されたとき, メールボックスの選択でエラーが発生した後, または CLOSE コマンドが成功した後に入る.

3.3. 選択済み状態 (Selected State)​

選択済み状態では, アクセスするメールボックスが選択されている. この状態は, メールボックスが正常に選択されたときに入る.

RFC 3501 IMAPv4 March 2003

3.4. ログアウト状態 (Logout State)​

ログアウト状態では, 接続は終了処理中である. この状態には, クライアントの要求 (LOGOUT コマンドによる) またはクライアントもしくはサーバーの一方的なアクションの結果として入ることができる.

クライアントがログアウト状態を要求した場合, サーバーは, サーバーが接続を閉じる前に, LOGOUT コマンドに対するタグなし BYE レスポンスとタグ付き OK レスポンスを送信しなければならない (MUST). また, クライアントは, クライアントが接続を閉じる前に, LOGOUT コマンドに対するタグ付き OK レスポンスを読み取らなければならない (MUST).

サーバーは, その理由を含むタグなし BYE レスポンスを送信せずに, 一方的に接続を閉じてはならない (MUST NOT). クライアントは一方的に接続を閉じるべきではなく (SHOULD NOT), 代わりに LOGOUT コマンドを発行すべきである (SHOULD). サーバーがクライアントが一方的に接続を閉じたことを検出した場合, サーバーはタグなし BYE レスポンスを省略し, 単に自分の接続を閉じてもよい (MAY).

RFC 3501 IMAPv4 March 2003

               +----------------------+
|connection established|
+----------------------+
||
\/
+--------------------------------------+
| server greeting |
+--------------------------------------+
|| (1) || (2) || (3)
\/ || ||
+-----------------+ || ||
|Not Authenticated| || ||
+-----------------+ || ||
|| (7) || (4) || ||
|| \/ \/ ||
|| +----------------+ ||
|| | Authenticated |\<=++ ||
|| +----------------+ || ||
|| || (7) || (5) || (6) ||
|| || \/ || ||
|| || +--------+ || ||
|| || |Selected|==++ ||
|| || +--------+ ||
|| || || (7) ||
\/ \/ \/ \/
+--------------------------------------+
| Logout |
+--------------------------------------+
||
\/
+-------------------------------+
|both sides close the connection|
+-------------------------------+

(1) connection without pre-authentication (OK greeting)
(2) pre-authenticated connection (PREAUTH greeting)
(3) rejected connection (BYE greeting)
(4) successful LOGIN or AUTHENTICATE command
(5) successful SELECT or EXAMINE command
(6) CLOSE command, or failed SELECT or EXAMINE command
(7) LOGOUT command, server shutdown, or connection closed

RFC 3501 IMAPv4 March 2003

  1.  データ形式 (Data Formats)

    IMAP4rev1 はテキストベースのコマンドとレスポンスを使用する. IMAP4rev1 のデータは, アトム (atom), 数値 (number), 文字列 (string), 括弧付きリスト (parenthesized list), NIL のいずれかの形式を取ることができる. 特定のデータ項目は複数の形式を取る場合があることに注意すること. 例えば, "astring" 構文を使用すると定義されたデータ項目は, アトムまたは文字列のいずれかである.