このページの本文へ

電子メールプロトコル再入門第9回

サーバにメールを置いたまま参照できるプロトコルを知ろう

いろいろな場所で同じメールを読めるIMAPの仕組みとは?

2011年03月31日 06時00分更新

文● 遠藤哲

  • この記事をはてなブックマークに追加
  • 本文印刷

 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「電子メールプロトコル再入門」を再編集したものです。内容は原則として掲載当時のものであり、現在とは異なる場合もあります。

カテゴリートップへ

この連載の記事
ピックアップ