Протокол IMAP¶
IMAP (англ. Internet Message Access Protocol — протокол доступа к интернет-сообщениям) — прикладной протокол TCP/IP для доступа к электронной почте с удалённого почтового сервера. В отличие от POP3, IMAP позволяет работать с письмами непосредственно на сервере: сообщения хранятся на сервере, а клиент лишь синхронизирует их состояние. Протокол поддерживает организацию писем в иерархические папки, поиск по серверу, работу с флагами прочтения и несколькими клиентами одновременно.
¶История
Протокол разработан Марком Крисенсеном (Mark Crispin) в 1986 году. Первая версия называлась IMAP2 и позже была заменена IMAP2bis, а затем — стандартом IMAP4 (RFC 1730, 1995). Актуальная редакция — IMAP4rev1, описанная в RFC 3501 (2003), которая остаётся доминирующей версией. В 2021 году опубликован RFC 9051, заменивший RFC 3501 и описавший IMAP4rev2.
¶Принцип работы
IMAP работает по модели «клиент — сервер». Клиент подключается к серверу по TCP (обычно порт 143, для защищённого соединения — 993) и выполняет над почтовыми ящиками набор команд: выбор папки, загрузка списка сообщений, чтение писем, изменение флагов, поиск, управление папками.
Ключевые особенности протокола:
- Хранение на сервере — письма и папки остаются на почтовом сервере, что позволяет получать доступ к ним с разных устройств.
- Синхронизация состояния — клиент хранит локальную копию заголовков и может работать офлайн, периодически синхронизируясь с сервером.
- Иерархия папок — поддерживается древовидная структура почтовых ящиков (например, «Входящие», «Отправленные», «Архив» и пользовательские папки).
- Серверный поиск — клиент может отправлять поисковый запрос на сервер и получать идентификаторы подходящих сообщений.
- Флаги сообщений — письма помечаются флагами
\Seen,\Answered,\Flagged,\Deleted,\Draft, что позволяет нескольким клиентам видеть состояние писем.
¶Сравнение с POP3
| Параметр | IMAP | POP3 |
|---|---|---|
| Хранение писем | На сервере | Скачиваются на клиент |
| Работа с несколькими устройствами | Да | Ограничена |
| Папки на сервере | Поддерживаются | Не поддерживаются (в базовой версии) |
| Серверный поиск | Да | Нет |
| Потребление трафика | Выше | Ниже |
| Работа офлайн | Синхронизация | Полная копия почты |
POP3 традиционно скачивает письма на одно устройство и удаляет их с сервера (по умолчанию). IMAP более подходит для современных сценариев, где почта читается со смартфона, компьютера и веб-интерфейса одновременно.
¶Структура папок
IMAP использует иерархическую нейминг папок с разделителем /. Специальные папки определяются атрибутами \Inbox, \Sent, \Drafts, \Trash, \Archive, \Junk, что позволяет почтовым клиентам автоматически назначать им роль в интерфейсе. Папка «Входящие» (INBOX) в IMAP обязана существовать в каждом ящике и всегда доступна первой.
¶Безопасность
Соединение с портом 143 передаёт данные, включая логин и пароль, в открытом виде. Для безопасного доступа используется механизм STARTTLS (команда STARTTLS после подключения) или защищённый порт 993 (IMAPS) с TLS с самого начала сессии. Аутентификация поддерживается через PLAIN, LOGIN, CRAM-MD5, DIGEST-MD5 и более современные механизмы, включая OAuth 2.0.
¶Применение
IMAP используется практически всеми современными почтовыми сервисами и клиентами — Thunderbird, Apple Mail, Microsoft Outlook, K-9 Mail, а также веб-почтой (Gmail, Яндекс.Почта, Mail.ru). В России протокол применяется в корпоративных почтовых системах и у крупных провайдеров. Для программной работы с IMAP существуют библиотеки для Python, PHP, Go и других языков.
¶Недостатки
Основной недостаток — зависимость от состояния сервера: при недоступности сервера доступ к почте ограничен (в отличие от POP3, где локальная копия полная). Также при большом объёме почты возможны задержки при синхронизации, а потребление трафика выше, чем у POP3.
¶Источники
- RFC 3501 — Internet Message Access Protocol — Version 4rev1
- RFC 9051 — Internet Message Access Protocol — Version 4rev2
- RFC 2595 — Using TLS with IMAP, POP3 and ACAP
- Крисенсен М. «Cyrus IMAP Server: A Synchronizing Mail Server»
