
IMAPはサーバからメールを読むための、もう1つの手段である。POPと異なり、サーバにメールを置くのを前提として、読みたいメールをその都度取り出す方式を採る。そのため、仕組みはPOPよりかなり複雑になっている。
IMAPのメールの管理
電子メールを受信するプロトコルには、前回紹介したPOPだけでなく、もう1つ「IMAP(RFC3501:Internet Message Access Protocol version 4 rev1)」がある。
POPとIMAPの2つの電子メール受信プロトコルのもっとも大きな違いは、メールの管理方法にある。POPではメールをクライアント側のPCにダウンロードし、クライアント側でメールを管理していた。Outlook Expressなどのメーラの受信トレイを見れば、そのホストに用意されたメールの記憶領域がローカルフォルダという名前で用意されているのがわかる。POPでサーバにアクセスすると、メールをこのローカルフォルダに保存し、サーバ側のメールを削除するので、メールはつねに手元のホストにあるわけだ。
一方、IMAPはサーバ上にメールを保存し、必要に応じメーラ上に表示する。図1はIMAPの概要を表わしたものだ。メーラの受信トレイ部分を見ると、そこにはローカルフォルダとIMAPというフォルダが見える。IMAPフォルダはアカウントの表示名を「IMAP」としたので、そのように表示されている。

図1●IMAPの概要
ローカルフォルダはそのホストのディスク上にメールが保存されているが、IMAPと表示されているフォルダの実体はサーバ側にある。メーラの受信トレイの表示では、POPとIMAPで違いがわからないように見せているが、メールを保存している場所は異なる。IMAPの利用環境下では、メーラはIMAPのユーザーインターフェイスだけを提供している格好となる。
IMAPでは、検索やフォルダの作成、移動などの操作もすべてサーバに行なわせる。そのため、ユーザーが職場以外に外出先のノートPCや自宅のPCなど、複数のクライアントを持っていても、すべて同じメール環境として利用することが可能だ。メールボックス内にフォルダを作ることもでき、メールの管理も柔軟になっている。Webメールのような遠隔環境の背後で利用されているケースも珍しくない。
逆に、ユーザーがメールをサーバに溜め込んで、さまざまな操作をすることになるため、サーバには充分なディスク容量と処理能力が要求される。多くのユーザーを抱えている場合には、採用しにくいプロトコルともいえる。また、サーバの機能に多くを依存するため、特殊な検索方法などローカル保管前提で使えていたメーラの機能が使えないケースも出てくる。
IMAPの仕組み
さて、メールがPCにあれば、フォルダ間の移動や削除などの作業はオフラインでも可能だ。しかし、それがサーバ側にある場合には、そうした作業はオンライン環境下の遠隔操作となる。IMAPはサーバ側にメールを置く仕組みなので、プロトコルの中にメールを管理する機能が必要になる。この点、POPに比べるとIMAPが複雑でわかりにくく感じられる部分である。
まずはIMAPの全体像を把握するため、IMAPセッションの状態遷移について解説しよう。図2はIMAPセッションの状態遷移を表わしたものである。

図2●IMAPセッションの状態遷移
クライアントからIMAPサーバ(ポート143)に接続し、TCPコネクションが確立すると、サーバからOK応答が返る。この時点では認証はまだ行なっていないのでIMAPセッションは「認証前」の状態だ。この状態で受け付けられるコマンドは3つあるが、LOGINまたはAUTHENTICATEのどちらかのコマンドでユーザー認証を行ない、認証が成功するとIMAPセッションは「認証」状態に移る。
認証の状態に移ると多くのコマンドを使えるようになるが、操作の対象はメールボックスとなる。ここで誤解のないように説明しておかなければならない。IMAPのメールボックスとは、メーラの受信トレイに表示される受信フォルダ、送信済みフォルダ、下書きフォルダのことである。IMAPのアカウントの場合はそのフォルダの実体はサーバ側にあり、サーバではそれらを「メールボックス」と呼ぶのである。
メーラで受信フォルダをクリックする操作はIMAPのコマンドではメールボックスを選択する「SELECT」が使われる。IMAPではリードオンリーのアクセス用に「EXAMINE」もあり、どちらかのコマンドでメールボックスを指定することで「選択」状態に移る。
「選択」はメールボックスを選択した状態という意味なので、コマンドの操作対象はメールボックス内のメッセージ群となる。ここでメッセージを識別するために重要な情報となるのが「UID」(Unique Identifier)である。これはPOPでも使われていた、メッセージを一意に識別する情報である。IMAPでも、メッセージを扱うコマンド及び応答の中で頻繁に登場する。メッセージの情報を表示する際に使うFETCHコマンドでもUIDを指定するのでぜひ覚えておいてほしい。
IMAPの状態遷移図を見ると選択状態でメールボックス内のメッセージを処理してセッション終了とはならない。ここがPOPと異なる部分である。POPのメールボックスはメールを入れるだけの器だったので、メールボックスの処理が終わると、そのままPOPのセッションを終了するように直線的な動作であった。しかしIMAPのメールボックスは、先ほど触れたようにメーラのフォルダに相当する。したがってメールボックスの選択状態からCLOSEコマンドで処理を終了させると、IMAPセッションはまたメールボックスを選択できる「認証」に戻るのである。
このように認証と選択の2つの状態を行き交い、メールボックス及びメールの処理を行なうのがIMAPの特徴的な動作だ。
IMAPのメールボックスの形式
従来のメール保存形式には、すべてのメールを1つのファイルとして保存するmailbox(mbox)形式が使用されてきた。
一方、IMAPではMaildir形式がよく使われる。Maildir形式ではユーザーごとに固有のフォルダを作り、そこに1メールを1ファイルとして保存する。そのため、サーバの処理負荷が軽くなり、ファイルが破損した場合の被害も小さくなる。何より、フォルダことにメールを管理できるので、とても使いやすいのだ。
本記事は、ネットワークマガジン2007年12月号の特集1「電子メールプロトコル再入門」を再編集したものです。内容は原則として掲載当時のものであり、現在とは異なる場合もあります。 |

この連載の記事
-
第8回
ネットワーク
メールクライアントの動作からPOPのやりとりを見てみよう -
第7回
ネットワーク
メールの受信用に作られたPOPを学ぶ -
第6回
ネットワーク
SMTPの拡張機能を確かめる「EHLOコマンド」を知ろう! -
第5回
ネットワーク
メールを送る際に使われるSMTPの仕組みとは? -
第4回
ネットワーク
メールの添付ファイルを実現するMIMEのマルチパートとは? -
第3回
ネットワーク
メール誕生からある「7ビットの制約」を越えるMIMEとは? -
第2回
ネットワーク
メールの宛名はどこにある?ヘッダを理解する -
第1回
ネットワーク
電子メールを基礎の基礎から学んでいこう -
ネットワーク
電子メールプロトコル再入門<目次> - この連載の一覧へ