IMAP
IMAP (Internet Message Access Protocol, RFC 9051 — IMAP4rev2, 2021) — протокол доступа к почтовому ящику на сервере. В отличие от POP3, письма остаются на сервере, клиент работает с ними как с базой данных.
Именно поэтому все современные почтовые сервисы (Gmail, Yandex, Yahoo, Zoho) предлагают IMAP, а POP3 держат для legacy.
Порты
| Порт | Режим |
|---|---|
| 143 | Plain + STARTTLS |
| 993 | Implicit TLS (IMAPS) |
Ключевые концепции
- Mailbox / Folder — папка на сервере: INBOX, Sent, Drafts, произвольные пользовательские.
- UID — уникальный неизменный ID письма внутри мейлбокса.
- Seq number — порядковый номер в текущей сессии (может меняться при удалении).
- Flags — метки:
\Seen,\Answered,\Flagged,\Deleted,\Draft, произвольные$Label1. - Envelope и Body structure — метаданные без скачивания всего письма.
Что можно делать в IMAP
- Читать заголовки без скачивания тела.
- Скачивать только выбранные части (например только текст, без 20-мегабайтного вложения).
- Помечать письма прочитанными/со звёздочкой/удалёнными.
- Перемещать между папками.
- Искать на сервере (сервер выполняет запрос, клиент получает список UID).
- Синхронизация: несколько устройств видят одинаковое состояние.
- Push-уведомления (IDLE) — новые письма приходят «сразу».
Пример сессии
C: A001 LOGIN alice s3cret
S: A001 OK LOGIN completed
C: A002 SELECT INBOX
S: * 172 EXISTS
S: * 1 RECENT
S: * OK [UNSEEN 12]
S: A002 OK [READ-WRITE] SELECT completed
C: A003 FETCH 1:5 (ENVELOPE FLAGS)
S: * 1 FETCH (ENVELOPE (...) FLAGS (\Seen))
S: * 2 FETCH (...)
S: A003 OK FETCH completed
C: A004 SEARCH FROM "bob@example.org" SINCE 1-Jan-2026
S: * SEARCH 45 67 89 102
S: A004 OK SEARCH completed
C: A005 STORE 45 +FLAGS (\Flagged)
S: * 45 FETCH (FLAGS (\Seen \Flagged))
S: A005 OK STORE completed
C: A006 IDLE
S: + idling
... (сервер молчит)
S: * 173 EXISTS (пришло новое письмо)
C: DONE
S: A006 OK IDLE terminated
C: A007 LOGOUT
Основные команды
| Команда | Что делает |
|---|---|
| LOGIN / AUTHENTICATE | Логин |
| SELECT / EXAMINE | Открыть папку |
| LIST / LSUB | Список папок |
| FETCH | Получить письмо/части |
| SEARCH | Поиск |
| STORE | Изменить флаги |
| COPY / MOVE | Между папками |
| EXPUNGE | Удалить письма с \Deleted |
| IDLE | Ждать push |
| CREATE / DELETE / RENAME | Управление папками |
Расширения
- CONDSTORE — синхронизация flags без full-fetch.
- QRESYNC — эффективный resync после отключения.
- METADATA — произвольные аннотации к папкам/письмам.
- OBJECTID — стабильные IDs через сессии.
- JMAP — альтернатива IMAP, RFC 8620, современнее (JSON-over-HTTP, batching, push через SSE). Реализована в Fastmail, поддержка растёт.