GrapeCity Secure Mail for .NET 4.0J > メールプロトコルの概要 > IMAP4 プロトコルの概要 |
IMAP4(Internet Message Access Protocol)を使用すると、サーバー上のメッセージを、ローカルコンピュータ上のメッセージを扱う感覚でリモートに操作できます。IMAP は、POP の不足機能を補う目的で実装されました。この POP の不足機能として最もよく知られているのが、サーバー上のメールを高度に操作する手段がないことと、複数のコンピュータからメールにアクセスできないことです。
このようなメッセージ操作は、クライアントが発行するコマンドと、サーバーが発行する応答によって実現されます。クライアントが発行する全コマンドの先頭には、クライアント定義の一意の識別子(A0001 など)を付ける必要があります。この識別子は、以降に続くコマンドごとに番号を上げる必要があります。このようなコマンドにより、クライアントはサーバー上に「メールボックス」と呼ばれるフォルダを作成し、ローカルフォルダを扱う感覚でこれを操作できます。また、コマンドにより、クライアントはサーバーに「再同期」することができます。コマンドが発行されると、IMAP4 セッションは次の4つの状態に移行します。未認証、認証済み、選択済み、およびログアウトの状態です。
クライアントがサーバーの 143 番ポートとの TCP 接続を確立すると、この時点でセッションは未認証状態に入ります。この状態では、クライアントは次の4つのコマンドを発行できます。CAPABILITY(サーバー固有の機能を表示)、NOOP(サーバーに肯定応答を発行させる)、LOGIN(クライアントを認証)、および LOGOUT(セッションを終了)コマンドです。セッションを継続するには、クライアントは LOGIN コマンドと共に、認証の資格情報を提供する必要があります。適切な資格情報が提供されると、セッションは認証済み状態に移行します。
認証済み状態に入ったクライアントは、セッションを次の状態に移行させるために、有効なメールボックスを選択しなければなりません。これには、SELECT または EXAMINE コマンドを使用して、これに続けてメールボックス名を指定します。2つのコマンドの唯一の違いは、SELECT を使用すると、読み込みおよび書き込みの両方の権限を持つメールボックスが開かれるのに対し、EXAMINE では、読み込み専用の権限を持つメールボックスが開かれる点です。これらのコマンドが正常に実行されると、セッションは次の選択済み状態に移行します。認証済み状態では、クライアントは未認証状態で有効なすべてのコマンドを使用できます(ただし LOGIN を除く)。また、クライアントは CREATE(メールボックスの作成)、STATUS(メールボックスの状態の参照)、および RENAME(メールボックスの名前変更)の各コマンドと、メールボックス操作に関するその他のコマンドを実行できます。
選択済み状態では、メッセージへの実際のアクセスが行われます。クライアントは、認証済み状態の全コマンドを使用できるほか、CLOSE(メールボックスを閉じ、認証済み状態に戻る)、EXPUNGE(削除フラグを設定した全メッセージを削除)、SEARCH(特定の基準を使用したメッセージ検索をクライアントに許可)、FETCH(すべてまたは一部のメッセージを取得)、STORE(各メッセージと共に保管されたフラグの更新を許可)、および COPY(一式のメッセージをメールボックスにコピー)の各コマンドを使用できます。選択済み状態では、クライアントは CLOSE コマンドを発行して認証済み状態に戻ることや、LOGOUT を使用してサーバーをログアウト状態に移行することが可能です。
ログアウト状態では、サーバーは単に接続を終了します。
次の図は、以上の4状態の流れを示します。
次の例は、IMAP プロトコルを使用してメッセージをダウンロードするクライアントとサーバーとの間で行われるやり取りを示します。
< 接続 > クライアント: A0001 LOGIN username password サーバー: A0001 OK LOGIN completed クライアント: A0002 CREATE mailbox1 サーバー: A0002 OK CREATE completed クライアント: A0003 SELECT mailbox1 サーバー: A0003 OK SELECT completed < 注意 :新規作成されたメールボックスなので、中にメールは入っていません > クライアント: A0004 FETCH 1:3 サーバー: A0004 BAD FETCH クライアント: A0005 Quit サーバー: A0005 OK QUIT completed < 接続の終了 > |