連載:インターネット・プロトコル詳説(8)
IMAP4(Internet Mail Access
Protocol version 4)〜前編
梁瀬介次
2001/6/13
■いまも進化を続けるIMAP4
|
||||||||||||
| 表1 IMAP4の歴史年表 |
前回説明したPOP3と同じく、IMAP4はメールサーバ上のメールボックスからメールを取得するためのプロトコルだ。ポート番号は一般に143が用いられる。
目的が同じとはいえ、POP3とはその機能からプロトコル内容まで大きく異なっている。一言でいえば、POP3に比べ大変複雑で多くの機能が追加されたものだ。根本的な考え方から大きく異なっているのだ。これは、POP3が抱えていた大きな問題点への反省のもと、IMAP4が成り立ったことに由来する。
*このほか、IETFのワーキンググループでも活発な標準化作業が行われている
|
||||||||||||||||||||||||||||
| 表2 IMAP4関連の標準仕様 |
また同時に、IMAP4は現在も大きく仕様を進化させ続けているプロトコルであり、IETFをはじめとした標準化団体から追加仕様が次々に発表されている段階である*1。
|
■POP3の限界とIMAP4の可能性
前回も述べたように、POP3にはすでに明白になっているいくつかの問題点がある。以下にまとめよう。
- モバイル環境での利用
POP3では、基本的にメールデータをローカルPCへダウンロードするだけだ。その後、サーバにメールは残らない。ユーザーが複数の方法やデバイスでメールを読みたくなった場合に、一度メールを取り込んで消してしまうと、ほかのアクセスからはそのメールを読む手段がない。そのつど、ほかのデバイスからのアクセスのことを考慮しなくてはならないのは、大きな負担である
- メールボックスやフォルダの管理
例えば、送信済みのメールや一度ダウンロードしてしまったメールのフォルダでの管理は、ローカルPC上でしか行えない。これは、基本的にPOP3はメールのダウンロード機能しか提供しないからで、別のPCでの送信済みメールをほかのPCから確認する手段は存在しない
- ネットワークや処理への負荷
ヘッダやメール全体のダウンロード機能しかないため、「ネットワークが遅いから巨大な添付ファイルをダウンロードしたくない」などのニーズに対応できない
これらの問題点を解決するには、1つの考え方しかない。メーラに完全にメールを取り込むのではなく、サーバにメールを保管し続けメーラからサーバのメールボックス全体を管理可能にする方法だ。つまり、これがIMAP4の基本的な出発点である。
■IMAPの特徴
![]() |
| 図1 IMAP4の概略図。基本がダウンロードのみのPOP3とは異なり、サーバに対して各種の操作が行えることがわかる |
これはIMAP4の概要図である。これらIMAP4を構成する基本的な機能について、見てみることにしよう。
●認証
IMAP4クライアント(メーラ)から認証情報を受け取り、サービスする対象ユーザーを決定する。POP3のようなユーザー名とパスワードによる単純なログイン方法や、よりセキュリティを高めた拡張仕様などが定義されている。
●メールボックスへのアクセス/管理
まず注目すべき点として、IMAP4では「メールボックス」は1つだけではないということだ。ユーザーがログインして使用できるメールボックスは、複数存在し得る。
![]() |
| 図2 IMAP4での複数のメールボックスの操作と管理 |
唯一名称が固定化されているメールボックスは「inbox」である。新規受信用のメールボックスのことだ。IMAP4サーバは、ここに自動的に着信メールを格納する。inboxは特殊な位置付けのメールボックスなので、削除したり名前を変更することはできない。
そのほかに、任意にユーザーが別の名前でメールボックスを作成したり、管理/削除することができる。例えば、送信済みメール格納用や整理用のメールボックスを自由に作成し使い分けることも可能だ。一般的なメーラでは、「送信済み」メールボックス(フォルダと表現されることもある)や「ドラフト」メールボックスを自動的にサーバ上へ作成し、それぞれに送信済みメールや下書きメールを保存する。POP3が各メーラ独自の形式で、ローカルPCへメールを保存することと比べると、大きな違いだ。
また、通常のディレクトリのように階層化することも可能だ。カテゴリやプロジェクトなどによって自由にディレクトリ(フォルダ)を作成し、その下に複数のメールボックスやディレクトリを複数階層にわたって作成できる。例えば、「OYA/Kodomo/MyBox」などと、通常のディレクトリのように左から右へ表現する。区切り文字である「/(スラッシュ)」には、別の文字が使われることもある。なお、inboxを階層化することはできない。
●パブリック/共有メールボックス
IMAP4ではパブリックメールボックスが想定されている。パブリックメールボックスとは、複数のユーザーで同時に使用できるメールボックスのことだ。複数ユーザーでメールデータやドキュメントを共有することを想定している。一方、共有メールボックスとは、ユーザーの任意のメールボックスをほかのユーザーに対して公開する機能のことだ。
●メールボックスの購読
購読とは、ネットニュースなどでも存在する機能だ。多数存在しているメールボックスのうち、通常使用するメールボックスを登録し、デフォルトではそれらのみを使用する機能である。
上の説明だけでは、なぜこんな機能があるのかぴんとこないことだろう。実は、IMAP4は単にメールだけでなく、ネットニュース、FTP機能、サーバ上のディレクトリなども参照できる機能を追加可能なように仕様が想定されているのだ。実際にネットニュースなどが読めるかどうかはサーバの実装しだいなのだが、例えばネットニュースのニュースグループなどは通常数万件はあるので、メールボックスやデータを無条件ですべて使用することには、リスクが伴う。そこで、購読が指定されたメールボックスのみを、通常利用するメールボックス範囲とするのである。
●メールデータの取得/変更/削除/保存
当然のことながら、メールデータを取得/削除/変更したり、作成したメールを任意のメールボックスに保存することが自由に行える。IMAP4の大きな特徴として、サーバが格納されているメールデータをMIMEデータと認識し、必要な部分にだけアクセスすることが可能だ。ヘッダの一部だけを取り出したりメール全体をダウンロードすることなく、任意の添付ファイル、あるいはテキストのみの取得などが自由に行える。また、それらの作業のためにMIMEデータの構造を調べることも容易にできる。
●メールデータ属性
POP3との大きな違いとして、「メッセージフラグ」という機能がある。これは、各メールメッセージに「フラグ」と呼ばれる識別属性を付加できる機能である。つまり、一種の「目印」として使用できるわけだ。フラグには以下の種類がある。
*ここでは\(円記号)として表現されているが、
欧米圏ではバックスラッシュとなることに注意 |
||||||||||||||
| 表3 メッセージフラグの種類 |
これらは「システムフラグ」と呼ばれ、名前が予約されており、それぞれの意味に従って使用しなければならない。クライアントからの要求によって自由にそれぞれのメールに付加できるほか、サーバが独自の判断によって付加する場合もある。複数のフラグを1つのメールに付加することもできる。ただし、「\Recent」フラグだけは、サーバによってしか付加できない。
また、主に上記のフラグは「PERMANENT FLAGS」と呼ばれる特殊なフラグでもある。「permanent」とは「永続的」という意味だが、これはセッションが終了してもメールボックス内で保持され続けることを意味する。
これに対して、上記にはない独自のフラグを付加できる場合もある。その場合、先頭文字は「\(円記号、またはバックスラッシュ)」以外でなければならない。また独自フラグは永続的とはならず、そのセッション内においてのみ有効となる場合もある。
●メール検索
IMAP4では、クライアントの処理負荷を極力減らすためのすべがいろいろ用意されている。メール検索もその1つだ。わざわざメールをダウンロードしなくとも、サーバ側で任意の条件に当てはまるメールの検索が自由に行える。メールをダウンロードした場合と同様に、MIMEデータを解析するので、メールヘッダ個々に関して検索条件を指定することができる。
●メールデータの同期
これは、特別こうした機能があるというわけではない。上記のような多彩な機能を用いて、メーラがサーバ上のデータと完全に同期する、つまりローカルにまったく同じデータのコピーを保持し続けることを前提に考えられているということだ。
IMAP4に、ここまで述べたような機能があったとしても、必ずネットワークと「オンライン」にならなくてはメールを読めないとなると、かなり不便だ。モバイル用途などを考えると、メーラがローカルにも同じコピーを持ち、オンラインでなくともメールに関する作業が行えるようにしておき、オンライン環境に復帰した際に上記の機能を使って自動的に同期できれば利便性は向上する。こうした「オフライン」機能をメーラが持つことを、IMAP4では前提にしている。
■IMAP4プロトコルの基本フォーマット
IMAP4で最初に引っ掛かるのが、プロトコルの複雑さだろう。以下を見てほしい。
|
|
| 図3 IMAP4プロトコルのやり取りの例 |
正直にいって、この例から大体の意味をとらえるのもなかなか難しいのでないか。これまでどおり、HTTPやPOP3とも基本的なところは同じなのだが、IMAP4の場合、リクエストやレスポンスが複数行かつ多岐にわたるため、なかなか理解が難しい。
まずは一般的な例について、その基本を押さえてみることにしよう。
●IMAP4メッセージのフォーマット
IMAP4においても、クライアントとサーバの通信には可読可能な文字による「行」が用いられる。サーバへの要求は、コマンドそのほかを含む「リクエスト」行が送られ、サーバはその結果を「レスポンス」行として返す。レスポンスは複数行にわたる場合も多い。この「行」のフォーマットは、HTTPやSMTPなどと異なる特徴がある。これが「タグ」だ。
リクエスト:
タグ リクエストコマンド[ 引数]レスポンス:
タグ [ステータス] [ レスポンスコード] メッセージ
上記は簡単なリクエストとレスポンスのフォーマットだ。タグの一番の目的は、このようにリクエスト時に指定し、レスポンスでそのリクエストに対する返答であることを明示するためである。タグのフォーマットは特に決まっていないので、英数字であれば何でもよい。サーバはこのタグを基にコマンドを管理し、処理を実行する。
また、タグには無名タグというべきものが存在している。これは、タグが「*(アスタリスク)」になっており、「タグなし行」と呼ばれる。通常、1つのリクエストに対して、必ず1つの対応するタグのレスポンス行が返される。このほかに、補足する目的や結果が複数にわたる場合、それ以外の行はタグなし行となる。複数のタグなし行が続き、最後にタグ付き行が現れるまでが一続きのレスポンスであることを示す。
![]() |
| 図4 複数行レスポンスの例 |
そのほか、「+(プラス)」タグのレスポンス行もある。これは、リクエストが複数行にわたる場合に、続けて受け入れ可能なことを示す特殊なレスポンスである。
レスポンスのステータスは、多くの場合「OK」か「BAD」によって正常終了/異常終了かを示す。そのほか、「BYE(ログアウト時)」「NO(異常終了ではないが、何らかの問題でコマンドが拒否された場合)」「PREAUTH(サーバの設定などによって認証の必要がない場合)」が返ることがある。
複数行のレスポンスの場合には、さまざまな追加情報を含まれることが多い。中でも [ ] に囲まれた「レスポンスコード」を含む行によって、具体的なメールやメールボックス情報を示すことになっている。レスポンスコードには、以下のような種類が定義されている。
|
|||||||||||||||||||||
| 表4 IMAP4のレスポンスコードの一覧(一部抜粋。こちらをクリックすると、別ウィンドウで一覧の完全版を表示します) |
レスポンスコードは、タグ行にもタグなし行にも任意に現れる可能性がある。現れるレスポンスコードは、要求されたコマンドによりほぼ決まることになる。多くの場合、複数行としてレスポンスコードを示す行が返され、クライアントに有用な情報を示す。
レスポンスのメッセージが、具体的な結果を示している。多くの場合、先頭には応答したコマンドも含んでいる。
●並列処理
IMAP4でタグが導入されている背景には、「並列処理を許容している」という事情がある。並列処理とは、SMTPのパイプラインニングなどのように、リクエストがレスポンスを待つ必要なく、次のリクエストを発行可能な機能のことだ。つまり、複数のリクエストが並列して発行されるとともに、複数のレスポンスが別々に、ときには前後して到着するかもしれない。こうした場合、それぞれの結果を識別できるタグは非常に有効な手段となる。
●UID(Unique Identifier)とメッセージ番号
POP3と同様に、IMAP4でもUID(POP3ではUIDL)とメッセージ番号が存在している。メッセージ番号はメールボックス内の連番であり、次回セッションでは再度振り直され変わってしまう可能性がある(永続的ではない)が、UIDはメールボックス内で必ず永続的に一意であることが保証される。メールへのアクセスは主にメッセージ番号で行われるが、UIDによってメッセージを識別することもできる。特に、クライアントがローカルにメールボックスのコピーを保持している場合に有効である。
また、メールボックス自体にも一意に識別するための数値が割り当てられる。これを「UID-Validity」と呼ぶ。言葉は似ているが、UIDとは別物だ。つまり、メールボックスはメールボックス名とUID-Validityを持っているわけだが、これは仮に一度メールボックスを削除(保持しているメールはすべて削除/移動)して、次にまったく同じ名前のメールボックスが作成された場合に、それを知らないクライアントがアクセスしても混同しないためのものだ。
さて、以上でIMAP4の基本的な機能とフォーマットの意味は理解できたはずだ。後半では、IMAP4のそれぞれのコマンドと具体的な例などについて解説しよう。
| 「IMAP4〜後編」へ |
| 「Master of IP Network総合インデックス」 |
ホワイトペーパー(TechTargetジャパン)
- 知られざるLTEのネットワーク構成 (2010/1/13)
LTEのネットワーク構成やプロトコルスタックを詳解。それぞれどんな役割を果たしているかを解説します - iPhoneアプリ内課金導入でガッチリもうけるのだ (2009/12/18)
「iPhoneのアプリ内課金ってどーよ?」 そんな疑問に答えるべく、アプリ内課金のサポート業務を行っている企業を直撃 - インターネット世界の住所の書き方 (2009/12/8)
TCP/IPネットワークであて先を特定する識別子、IPアドレスの構造やサブネットマスクの役割などを説明します - iPhoneアプリに広告を挿入してガッチリもうけるのだ (2009/11/16)
iPhoneアプリに広告を挿入して1日に50万円ももうけている!と聞き、その仕組みを知りたくて、日米のアドネットワーク企業に聞いた
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |









