← PC・IT用語集へ戻る

IMAP

Internet Message Access Protocol
network beginner
サーバー上のメールボックスを複数端末から閲覧・管理できる通信プロトコル。
IMAP (Internet Message Access Protocol)

概要(サマリー)

IMAP(Internet Message Access Protocol、アイマップ)とは、メールを受信するための通信プロトコル(通信のルール)の一つです。

メールサーバー上のメールボックスを中心に管理し、複数のメールアプリ間で既読フラグやフォルダ操作などを同期できる。アプリは表示やオフライン利用のために、メール本文や添付ファイルを端末へキャッシュすることもある。

詳細解説

IMAPとは何か

IMAPは、ネットワーク経由でサーバー上にあるメールボックスを直接操作するための仕組みです。

インターネットの普及初期はパソコン1台でメールを読むことが一般的でしたが、現在のようにスマホ、タブレット、PCなど複数のデバイスを使い分ける時代において、IMAPは不可欠な技術となっています。

IMAPの仕組みと特徴

IMAPでは、サーバー上のメールボックスを正として操作する。ただし、メールアプリがローカルコピーを保持しないという意味ではない。

ユーザーがメールアプリを開くと、アプリはサーバーに問い合わせてメールの「件名」や「送信者」、そして必要なときだけ「本文」を読み込んで画面に表示します。ユーザーがメールを「既読」にしたり、フォルダ(ラベル)に移動させたり、削除したりすると、その変更はすぐにサーバー側に反映されます。

これにより、スマートフォンやPCでおおむね同じ状態を共有できる。ただし、同期のタイミングや表示はメールアプリやサーバーの実装によって異なる。

IMAPのメリット

IMAPを採用することで、以下のような多くのメリットが得られます。

  • 複数端末で状態を共有しやすい: PCで変更した既読フラグやフォルダ操作をスマートフォンにも反映できる。
  • 必要なデータを選択して取得できる: ヘッダーや本文の一部だけを取得できる。ただし、アプリのキャッシュは端末容量を使用する。
  • 端末の故障時に復元しやすい: サーバー上に残っているメールは新しい端末から再同期できる。ただし、サーバー側の削除や障害に備えるには別途バックアップが必要である。

IMAPのデメリットと注意点

非常に便利なIMAPですが、いくつかのデメリットや注意点もあります。

  • サーバーの容量制限: メールをサーバーに溜め込み続けることになるため、サーバーのディスク容量上限に達すると、新しいメールが受信できなくなります。不要なメールや大容量の添付ファイルを定期的に整理する必要があります。
  • オンライン接続が必須: 原則としてインターネットに接続していないと、過去のメールの本文や添付ファイルを開くことができません(アプリのキャッシュ機能で一時的に読める場合もあります)。

POP3との違い

メール受信プロトコルには、IMAPの他にPOP3という古い規格があります。

POP3は、メールサーバーから端末へメッセージを取得することを中心としたプロトコルである。取得後にサーバーから削除するか、コピーを残すかはクライアントの設定による。サーバー上のフォルダや既読状態を複数端末で共有する用途には、IMAPのほうが適している。

AIコーディングとの関係

ネットワーク機能やバックエンド開発において、AIにメールの自動受信・解析処理を書いてもらう際、IMAPは頻繁に登場します。

例えば、Pythonの標準ライブラリ imaplib を使って、特定の差出人からのメールを検知して添付ファイルを自動保存するスクリプトをAIに作らせる場面が考えられます。

以下は、PythonでIMAPサーバーにログインして接続を確立するシンプルなコード例です。

import imaplib
import os

# IMAPサーバーに接続します(例としてGmailのSSL接続)
mail = imaplib.IMAP4_SSL("imap.gmail.com")

# 認証情報はコードに直書きせず、環境変数から読み込みます
mail.login(os.environ["IMAP_USER"], os.environ["IMAP_SECRET"])

# 受信トレイを選択して操作可能な状態にします
mail.select("inbox")

# 処理後はセッションを終了します
mail.logout()

AIに指示を出すときは、以下のように要求を伝えると、複雑なメール解析ロジックもスムーズに生成してくれます。

  • 「Pythonのimaplibを使って、Gmailの受信トレイから『見積書』という件名のメールを探し、添付ファイルをGoogleドライブに保存するコードを書いてください」
  • Node.jsのIMAP用ライブラリを使って、新着メールが届いたときにその本文をパースしてSlackに通知するプログラムを作成してください」

よくある勘違い

IMAPはメールの送信も行っている?

IMAPはあくまでメールを「受信(閲覧・管理)」するためのプロトコルです。

メールを「送信」するときは、IMAPではなくSMTPという別のプロトコルが使用されます。メールアプリを設定する際に「受信サーバー(IMAP)」と「送信サーバー(SMTP)」の2つを設定する必要があるのはこのためです。

IMAPを使っていればメールが消えることは絶対にない?

メールは安全なサーバー上に保管されますが、サーバーのシステム障害や、間違ってゴミ箱に入れて削除してしまった場合はデータが失われる可能性があります。

また、無料のフリーメールなどで長期間アカウントにログインしていないと、アカウント自体が消去され、メールもすべて消えてしまうことがあります。重要なメールは別途バックアップしておく必要があります。

インターネットが繋がっていなくてもすべてのメールが読める?

IMAPはサーバーのデータをその都度見に行く仕組みなので、完全なオフライン状態では新しいメールはもちろん、過去のメールの本文や添付ファイルも読めなくなります。

ただし、最近の多くのメールアプリでは、よく読むメールや直近のメールを端末のメモリに一時保存(キャッシュ)しておく機能があるため、オフラインでも一部のメールが表示できる場合があります。

まとめ

  • IMAPは、サーバー上のメールボックスを閲覧・管理する通信プロトコルである
  • スマートフォンやPCなど、複数の端末間で既読フラグやフォルダ操作を共有しやすい
  • 端末にキャッシュが保存されることもあり、IMAP自体はバックアップの代わりにはならない
  • メール送信を行う SMTP や、データを端末にダウンロードする POP3 とは区別される

情報ソース

より詳しくAIに聞いてみよう

  • IMAPとPOP3の最大の違いを、IT初心者向けに分かりやすいたとえ話を使って説明してください。
  • IMAPを使って複数のスマートフォンとPCでメールを管理する際の設定のコツやメリットを教えてください。
  • Pythonを使って、IMAPサーバーから特定のキーワードが含まれるメールを自動で検索して抽出するスクリプトを教えてください。
  • IMAPでの接続時に利用される暗号化通信(IMAPS)や、標準的なポート番号(993など)について説明してください。
  • メールサーバーの容量が一杯になったときに、IMAPの設定を維持したまま古いメールを整理・退避させる良い方法を教えてください。