このページの目次
IMAP と POP3
POP3 はメールをローカルにダウンロードしてサーバーから削除し、IMAP はメールをサーバーに残して複数端末で同期します。IDLE により IMAP は「擬似プッシュ」を実現し、サーバーに新着メールが届くとクライアントに通知するため、ポーリングの必要がありません。
概要
SMTP はメールの転送のみを担当し、保存や読み取りは行いません。IMAP(1994年)と POP3(1988年)はメールアクセスプロトコルの2種類です。IMAP はメールをサーバー上に保持し、クライアントは単なる「ビュー」として機能し、複数デバイスでの自動同期、サーバー側での検索、IDLE によるリアルタイムプッシュが可能です。POP3 はよりシンプルで、メールをローカルにダウンロードし、サーバーからは削除します。IMAP がデフォルトの選択となっており、POP3 は特定のアーカイブ用途にのみ使用されます。
IMAP プロトコル
IMAP はステートフルプロトコルです。メールはサーバー上に保存され、クライアントはサーバー側のメールボックスに対して操作を行います。
接続:
S: * OK Dovecot ready.
C: a001 LOGIN user@example.com password
S: a001 OK Logged in
メールボックスの一覧表示:
C: a002 LIST "" "*"
S: * LIST (\HasNoChildren) "/" INBOX
S: a002 OK
メールボックスの選択:
C: a003 SELECT INBOX
S: * 42 EXISTS ← 合計 42 通
S: * 5 RECENT ← 新規着信 5 通
S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
S: * OK [UIDVALIDITY 1]
S: * OK [UIDNEXT 43] ← 次のメールの UID は 43
S: a003 OK [READ-WRITE] SELECT completed
メールの取得:
C: a004 FETCH 1:10 (FLAGS INTERNALDATE RFC822.SIZE BODY.PEEK[HEADER.FIELDS (FROM SUBJECT DATE)])
→ 1〜10 通目のメールの一部ヘッダーを取得
既読マーク:
C: a005 STORE 1 +FLAGS (\Seen)
IDLE (リアルタイムプッシュ):
C: a006 IDLE
S: + idling
(新着メール着信)
S: * 43 EXISTS
C: DONE
S: a006 OK IDLE completed
POP3 との比較
| IMAP | POP3 | |
|---|---|---|
| メール保存場所 | サーバー(クライアントはビュー) | ローカルにダウンロード |
| 複数デバイス | ✓ | メールが各デバイスに分散 |
| 検索 | サーバー側で SEARCH | ダウンロード後にローカルで検索 |
| プッシュ | IDLE(リアルタイム) | なし(ポーリング) |
| オフライン | キャッシュが必要 | ✓ |
参考
- RFC: 3501, 2177, 1939
- Dovecot: dovecot.org
キーワード: IMAP, SELECT, FETCH, IDLE, POP3, Dovecot, mailbox, flag