IMAP (Internet Message Access Protocol) とは電子メールを「受信(=メールサーバ上のメールを閲覧)」する際に利用する通信プロトコルです。
超・ざっくり説明すると "メールサーバに届けられた電子メールを閲覧するためのプロトコル" と理解してもらえればOKです。POPと同じような働きをするプロトコルです。(IMAPとPOPの違いについては本ページ後半で解説します。)
参考 POPとは?
このページでは、簡単に電子メールの仕組みを1からおさらいし、その中でIMAPの役割を理解できるように解説していきます。
ネットワークエンジニアであれば知らないと恥ずかしい超・基本知識です。是非最後までご覧ください。
IMAPとは?
IMAP (Internet Message Access Protocol) は電子メールを「受信」する際に利用します。
電子メールの仕組みを簡単に説明すると以下のような流れになります。
IMAPの特徴はメールがサーバー上に保管される点です。つまり、ユーザーはどのデバイスからでもインターネット経由で同じメールアカウントにアクセスし、メールの閲覧や管理が可能になります。これは、メールをデバイスにダウンロードして管理するPOP(Post Office Protocol)とは異なる点です。
メール受信プロトコルにはPOP (Post Office Protocol) というプロトコルもあります。POPはメールをクライアントPCにダウンロードするという点、IMAPはメールサーバのメールを閲覧するという点で大きく異なります。
IMAPの利点は、複数のデバイスを使うユーザーにとって便利であること。例えば、スマートフォン、タブレット、パソコンなど、異なるデバイスから同じメールアカウントにアクセスした場合、すべてのデバイスでメールの状態(未読、既読、削除など)が同期されます。これにより、どのデバイスを使用しても、メールの整理や管理が容易になります。
POPを利用する場合、例えば自分のスマートフォンにメールをDLした場合、自分のパソコンからはそのメールを確認することができなくなってしまいます。現代では、1人複数台以上の通信端末を所持することが普通なので、もはやPOPを利用するツールでは様々なニーズにこたえることはできません。
また、IMAPではメールがサーバー上に残るため、デバイスの故障や紛失によるメールの失われるリスクが低くなります。ただし、サーバーの容量が限られている場合、古いメールを削除したり、アーカイブする必要があります。
IMAPの特徴(POPとの違いをわかりやすく)
同じメール受信プロトコルとして有名なのがPOPです。
POPはメールサーバに転送されてきた電子メールをクライアントPCにダウンロードする仕組み。設定にもよりますが、電子メールをダウンロードした後はサーバ上の電子メールは削除されます。
一方、IMAPの場合は電子メールはメールサーバ上に保管されるという点が特徴です。
したがってPOPの場合は対象の電子メールは "ダウンロードしたPCでしか閲覧できない" という弱点があったのに対して、IMAPでは職場以外のPCや自宅PC、スマホなどからでも同じ電子メールを閲覧することが可能です。
1つのメール環境を複数の端末から操作できるというのがポイント。
一方で、POPと比較すると電子メールがメールサーバ上で保管される分一定以上のサーバスペックが求められるというデメリットもあります。
IMAPの動作原理
IMAPの動作原理としては、クライアント(メールを読むデバイス)からサーバに対し特定のコマンドを送信し、サーバはこれに応じてデータを返送することで通信が成立します。
以下に、IMAPで処理される基本的な通信の流れを以下に記載します。
- 接続と認証
- ユーザーはIMAPクライアント(メールアプリケーション)を使用してメールサーバに接続します。その後、ユーザー名とパスワードを使用して認証を行います。
- メールボックスの選択
- 認証後、ユーザーはメールボックス(例:受信トレイ、送信済みアイテム等)を選択します。
- メールデータの操作
- ユーザーはメールの閲覧、削除、既読/未読のマーキング、新規メールの作成などの操作を行います。
- 切断
- 最後に、クライアントはサーバから切断します。
IMAPのコマンド交換
IMAPプロトコルにおけるクライアントとサーバ間のコマンド交換は、通常テキストベースで行われます。以下は、基本的なIMAPセッションの流れと、それに関連するコマンド及びサーバーからの応答の一例です。
ステップ1 認証
クライアント: a1 LOGIN myusername mypassword サーバー応答: a1 OK LOGIN completed
a1
はコマンドの識別子(タグ)です。LOGIN
はログインコマンド、myusername
とmypassword
はユーザーのログイン情報です。- サーバーはログインが成功したことを
a1 OK
で通知します。
ステップ2 メールの選択
クライアント: a2 SELECT INBOX サーバー応答: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) サーバー応答: * OK [PERMANENTFLAGS (\* \Answered \Flagged \Deleted \Seen \Draft)] Permanent flags サーバー応答: * 18 EXISTS サーバー応答: * 0 RECENT サーバー応答: * OK [UNSEEN 17] Message 17 is the first unseen message サーバー応答: * OK [UIDVALIDITY 3857529045] UIDs valid サーバー応答: a2 OK [READ-WRITE] SELECT completed
SELECT INBOX
は受信トレイを選択するコマンドです。- サーバーは選択されたメールボックスの情報を提供します。
ステップ3 メールの操作
クライアント: a3 FETCH 1 BODY[TEXT] サーバー応答: * 1 FETCH (BODY[TEXT] {302} サーバー応答: ...メール本文... サーバー応答: ) サーバー応答: a3 OK FETCH completed
FETCH 1 BODY[TEXT]
は、1番目のメッセージの本文を取得するコマンドです。- サーバーはメッセージの本文を含む応答を返します。
ステータス4 切断(ログアウト)
クライアント: a4 LOGOUT サーバー応答: * BYE IMAP4rev1 server logging out サーバー応答: a4 OK LOGOUT completed
LOGOUT
はセッションを終了するコマンドです。- サーバーはセッション終了を確認する応答を返します。
このようなやり取りにより、クライアントはメールサーバーと通信し、メールの操作を行います。IMAPコマンドは基本的にテキストベースで、サーバーもまたテキスト形式で応答を返します。
実際には我々がメールを送信したり閲覧したりする場合は、メールソフトを利用するので上記のようなテキスト形式の通信を意識することはありません。ただし、ネットワークの裏側では実際にサーバと上記のようなやり取りが行われていることが分かると、何かあった際にその調査やバグの改修が行えるようになるかもしれません。
ネットワーク学習の決定版(ネットワークエンジニアを目指すなら必見!)
↑ページ数が多く誰でも手軽に読める内容ではありませんが、ネットワークエンジニアであれば、ほぼ全員が一度は読んだことがある超・有料書籍。是非一度読破しておきたい1冊のご紹介です。
読者特典> 0から学ぶネットワーク入門