← RFC Reference

RFC 9051: IMAP4rev2

Standards Track Mail Access Protocols Published March 2026
ELI5: [POP3](1939)がP.O.ボックスをチェックして手紙を家に持ち帰るのであれば、IMAPは郵便局に個人用ファイリングキャビネットを持つようなものです。引き出し(フォルダ)を開いたり、手紙を取り出さずに読んだり、色付きのタブを貼ったり(フラグ)、すべてを検索したり、携帯電話、ノートパソコン、タブレットから同じキャビネットにアクセスしたりできます。すべてのデバイスが同じ状態を見ています。メッセージはサーバーに残り、デバイスはそれらを表示するだけです。

これが存在する理由

IMAP4rev1(RFC 3501、2003年発行)は、ほぼ20年間にわたりマルチデバイスメールの中核を担ってきました。しかし、数十の拡張RFC、曖昧なエッジケース、および実世界のあらゆるサーバーが異なる方法で実装する機能が蓄積されました。RFC 9051 — IMAP4rev2 — は以下を実現するクリーンな改訂です:

新しいメールクライアントまたは統合を構築している場合は、IMAP4rev2をターゲットにしてください。サーバーがIMAP4rev1のみをサポートしている場合、コマンドセットはほぼ同じです。個別に拡張機能をネゴシエートするだけです。

仕組み

接続と認証

IMAPはポート143(STARTTLS)またはポート993(暗黙的TLS、推奨)を使用します。接続後、クライアントは認証します:

-- ポート993(IMAPS)に接続 --
* OK [CAPABILITY IMAP4rev2 AUTH=PLAIN] サーバー準備完了
a1 LOGIN alice@example.com s3cretP@ss
a1 OK [CAPABILITY IMAP4rev2 MOVE CONDSTORE] ログイン済み

すべてのクライアントコマンドにはタグa1など)が付きます。サーバーは同じタグで応答し、パイプラインコマンドが可能になります。タグなし応答(*で始まる)はメッセージ数とケーパビリティリストなどのデータを伝えます。

メールボックスの選択

a2 SELECT INBOX
* 42 EXISTS                            ← INBOXに42件のメッセージ
* OK [UIDVALIDITY 1609459200]         ← UID時代;これが変わったら再同期
* OK [UIDNEXT 1053]                   ← 次に割り当てられるUID
* OK [HIGHESTMODSEQ 7834]             ← 増分同期用(CONDSTORE)
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
a2 OK [READ-WRITE] SELECT完了

メッセージの取得

-- メッセージ1:5のエンベロープとフラグを取得 --
a3 FETCH 1:5 (FLAGS ENVELOPE)
* 1 FETCH (FLAGS (\Seen) ENVELOPE ("Wed, 12 Mar 2025 ..." ...))
* 2 FETCH (FLAGS () ENVELOPE (...))
...
a3 OK FETCH完了

-- メッセージUID 1050の完全本文を取得 --
a4 UID FETCH 1050 (BODY[])
* 41 FETCH (UID 1050 BODY[] {4523}
(完全なRFC 5322メッセージ...)
)
a4 OK UID FETCH完了

サーバー側検索

a5 SEARCH UNSEEN FROM "bob@example.com" SINCE 1-Mar-2025
* SEARCH 38 41 42
a5 OK SEARCH完了

主要な技術詳細

UIDとシーケンス番号

すべてのメッセージには2つの識別子があります:シーケンス番号(メールボックス内の位置で、メッセージが削除されると変わる)とUID(永続的に割り当てられた番号で、増加するだけ)です。堅牢なクライアントは常にUID FETCHUID SEARCHなどを介してUIDを使用します。UIDVALIDITY値は、キャッシュされたUIDがまだ有効かどうかをクライアントに伝えます。変更された場合、クライアントはゼロから再同期する必要があります。

フラグ

IMAP4rev2は以下のシステムフラグを定義します:

フラグ 意味
\Seen メッセージが読まれている
\Answered メッセージに返信されている
\Flagged 重要度が高いものとしてマーク/スター付き
\Deleted 削除対象としてマーク(EXPUNGE時に削除)
\Draft メッセージが下書き

IMAP4rev1の\Recentフラグはrev2で削除されました。サーバーはカスタムキーワード(例:$Forwarded$Junk)もサポートする場合があります。

CONDSTOREとQRESYNC

CONDSTOREはフラグ変更ごとにMODSEQ値を割り当てます。最後に見たMODSEQを知っているクライアントは「MODSEQ 7834以降何が変わったか」と尋ねて、デルタのみを取得できます。QRESYNC(クイック再同期)はこれを拡張して、削除されたメッセージを効率的に処理します。一緒に使うと、IMAPはモバイルネットワークで完全な再同期が費用がかかりすぎる場合に実行可能になります。

MOVEコマンド

IMAP4rev1では、メッセージの移動にはCOPY + STORE \Deleted + EXPUNGE — 3つのコマンドと競合状態が必要でした。IMAP4rev2はMOVEをネイティブアトミック操作として含めます:

a6 UID MOVE 1050 "Archive"
* OK [COPYUID 1609459200 1050 287]
* 41 EXPUNGE
a6 OK MOVE完了

一般的な間違い

配信可能性への影響

Related RFCs