Поддержка протоколов Email RFC - Полное руководство по стандартам и спецификациям
Об этом документе
В этом документе описывается поддержка протоколов RFC (Request for Comments) для Forward Email. Поскольку Forward Email использует WildDuck для функциональности IMAP/POP3, поддержка протоколов и ограничения, описанные здесь, отражают реализацию WildDuck.
Important
Forward Email использует SQLite для хранения сообщений вместо MongoDB (которую изначально использовал WildDuck). Это влияет на некоторые детали реализации, описанные ниже.
Исходный код: https://github.com/forwardemail/forwardemail.net
Обзор архитектуры
Сравнение почтовых сервисов — поддержка протоколов и соответствие стандартам RFC
Important
Песочница и квантово-устойчивое шифрование: Forward Email — единственный почтовый сервис, который хранит индивидуально зашифрованные почтовые ящики SQLite с использованием вашего пароля (который есть только у вас). Каждый почтовый ящик зашифрован с помощью sqleet (ChaCha20-Poly1305), автономен, изолирован и портативен. Если вы забудете пароль, вы потеряете доступ к почтовому ящику — даже Forward Email не сможет его восстановить. Подробнее смотрите в разделе Quantum-Safe Encrypted Email.
Сравните поддержку почтовых протоколов и реализацию стандартов RFC у основных почтовых провайдеров:
| Функция | Forward Email | Postfix/Dovecot | Gmail | iCloud Mail | Outlook.com | Fastmail | Yahoo/AOL (Verizon) | ProtonMail | Tutanota |
|---|---|---|---|---|---|---|---|---|---|
| Цена за собственный домен | Бесплатно | Бесплатно | $7.20/мес | $0.99/мес | $7.20/мес | $5/мес | $3.19/мес | $4.99/мес | $3.27/мес |
| IMAP4rev1 (RFC 3501) | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ⚠️ Через Bridge | ❌ Не поддерживается |
| IMAP4rev2 (RFC 9051) | ⚠️ Частично | ⚠️ Частично | ⚠️ 31% | ⚠️ 92% | ⚠️ 46% | ⚠️ 69% | ⚠️ 85% | ⚠️ Через Bridge | ❌ Не поддерживается |
| POP3 (RFC 1939) | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ⚠️ Через Bridge | ❌ Не поддерживается |
| SMTP (RFC 5321) | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ⚠️ Через Bridge | ❌ Не поддерживается |
| JMAP (RFC 8620) | ❌ Не поддерживается | ❌ Не поддерживается | ❌ Не поддерживается | ❌ Не поддерживается | ❌ Не поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ❌ Не поддерживается | ❌ Не поддерживается |
| DKIM (RFC 6376) | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается |
| SPF (RFC 7208) | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается |
| DMARC (RFC 7489) | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается |
| ARC (RFC 8617) | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ❌ Не поддерживается |
| MTA-STS (RFC 8461) | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается |
| DANE (RFC 7671) | ✅ Поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ❌ Не поддерживается | ❌ Не поддерживается | ❌ Не поддерживается | ❌ Не поддерживается | ✅ Поддерживается | ✅ Поддерживается |
| DSN (RFC 3461) | ✅ Поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ✅ Поддерживается | ✅ Поддерживается | ⚠️ Неизвестно | ❌ Не поддерживается | ⚠️ Через Bridge | ❌ Не поддерживается |
| REQUIRETLS (RFC 8689) | ✅ Поддерживается | ✅ Поддерживается | ⚠️ Неизвестно | ⚠️ Неизвестно | ⚠️ Неизвестно | ⚠️ Неизвестно | ⚠️ Неизвестно | ⚠️ Через Bridge | ❌ Не поддерживается |
| ManageSieve (RFC 5804) | ✅ Поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ❌ Не поддерживается | ❌ Не поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ❌ Не поддерживается | ❌ Не поддерживается |
| OpenPGP (RFC 9580) | ✅ Поддерживается | ⚠️ Через плагины | ⚠️ Сторонние | ⚠️ Сторонние | ⚠️ Сторонние | ⚠️ Сторонние | ⚠️ Сторонние | ✅ Нативная поддержка | ❌ Не поддерживается |
| S/MIME (RFC 8551) | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ⚠️ Частично | ❌ Не поддерживается | ✅ Поддерживается | ❌ Не поддерживается |
| CalDAV (RFC 4791) | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ✅ Через Bridge | ❌ Не поддерживается |
| CardDAV (RFC 6352) | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ✅ Через Bridge | ❌ Не поддерживается |
| Задачи (VTODO) | ✅ Поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ❌ Не поддерживается | ❌ Не поддерживается |
| Sieve (RFC 5228) | ✅ Поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ❌ Не поддерживается | ❌ Не поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ❌ Не поддерживается | ❌ Не поддерживается |
| Catch-All | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ❌ Не поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ❌ Не поддерживается | ✅ Поддерживается |
| Неограниченное количество алиасов | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ✅ Поддерживается | ✅ Поддерживается |
| Двухфакторная аутентификация | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается |
| Push-уведомления | ✅ Поддерживается | ⚠️ Через плагины | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ✅ Поддерживается | ✅ Поддерживается |
| Работа с календарём и контактами на ПК | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ✅ Поддерживается | ❌ Не поддерживается |
| Расширенный поиск | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается | ✅ Поддерживается |
| API/Интеграции | ✅ 39 эндпоинтов | ✅ Поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ✅ Поддерживается | ✅ Поддерживается | ❌ Не поддерживается | ✅ Поддерживается | ❌ Не поддерживается |
Визуализация поддержки протоколов
Основные почтовые протоколы
Поток почтового протокола
Протокол IMAP4 и расширения
Note
Forward Email поддерживает IMAP4rev1 (RFC 3501) с частичной поддержкой функций IMAP4rev2 (RFC 9051).
Forward Email обеспечивает надежную поддержку IMAP4 через реализацию почтового сервера WildDuck. Сервер реализует IMAP4rev1 (RFC 3501) с частичной поддержкой расширений IMAP4rev2 (RFC 9051).
Функциональность IMAP в Forward Email обеспечивается зависимостью WildDuck. Поддерживаются следующие RFC для электронной почты:
| RFC | Название | Примечания по реализации |
|---|---|---|
| RFC 3501 | Протокол доступа к интернет-сообщениям (IMAP) - версия 4rev1 | Полная поддержка с намеренными отличиями (см. ниже) |
| RFC 2177 | Команда IMAP4 IDLE | Уведомления в режиме push |
| RFC 2342 | Пространство имён IMAP4 | Поддержка пространства имён почтовых ящиков |
| RFC 2087 | Расширение квот IMAP4 | Управление квотами хранения |
| RFC 2971 | Расширение идентификации IMAP4 | Идентификация клиента/сервера |
| RFC 5161 | Расширение IMAP4 ENABLE | Включение расширений IMAP |
| RFC 4959 | Расширение IMAP для начального ответа клиента SASL (SASL-IR) | Начальный ответ клиента |
| RFC 3691 | Команда IMAP4 UNSELECT | Закрытие почтового ящика без EXPUNGE |
| RFC 4315 | Расширение IMAP UIDPLUS | Расширенные команды UID |
| RFC 7162 | Расширения IMAP: Быстрая ресинхронизация изменений флагов (CONDSTORE) | Условное STORE |
| RFC 6154 | Расширение IMAP LIST для специальных почтовых ящиков | Атрибуты специальных почтовых ящиков |
| RFC 6851 | Расширение IMAP MOVE | Атомарная команда MOVE |
| RFC 6855 | Поддержка UTF-8 в IMAP | Поддержка UTF-8 |
| RFC 3348 | Расширение IMAP4 для дочерних почтовых ящиков | Информация о дочерних почтовых ящиках |
| RFC 7889 | Расширение IMAP4 для объявления максимального размера загрузки (APPENDLIMIT) | Максимальный размер загрузки |
| Поддерживаемые расширения IMAP: |
| Расширение | RFC | Статус | Описание |
|---|---|---|---|
| IDLE | RFC 2177 | ✅ Поддерживается | Уведомления в режиме push |
| NAMESPACE | RFC 2342 | ✅ Поддерживается | Поддержка пространств имён почтовых ящиков |
| QUOTA | RFC 2087 | ✅ Поддерживается | Управление квотами хранения |
| ID | RFC 2971 | ✅ Поддерживается | Идентификация клиента/сервера |
| ENABLE | RFC 5161 | ✅ Поддерживается | Включение расширений IMAP |
| SASL-IR | RFC 4959 | ✅ Поддерживается | Начальный ответ клиента |
| UNSELECT | RFC 3691 | ✅ Поддерживается | Закрытие почтового ящика без EXPUNGE |
| UIDPLUS | RFC 4315 | ✅ Поддерживается | Расширенные команды UID |
| CONDSTORE | RFC 7162 | ✅ Поддерживается | Условный STORE |
| SPECIAL-USE | RFC 6154 | ✅ Поддерживается | Специальные атрибуты почтовых ящиков |
| MOVE | RFC 6851 | ✅ Поддерживается | Атомарная команда MOVE |
| UTF8=ACCEPT | RFC 6855 | ✅ Поддерживается | Поддержка UTF-8 |
| CHILDREN | RFC 3348 | ✅ Поддерживается | Информация о дочерних почтовых ящиках |
| APPENDLIMIT | RFC 7889 | ✅ Поддерживается | Максимальный размер загрузки |
| XLIST | Не стандарт | ✅ Поддерживается | Совместимый с Gmail список папок |
| XAPPLEPUSHSERVICE | Не стандарт | ✅ Поддерживается | Служба уведомлений Apple Push |
Отличия протокола IMAP от спецификаций RFC
Warning
Следующие отличия от спецификаций RFC могут повлиять на совместимость клиента.
Forward Email намеренно отклоняется от некоторых спецификаций IMAP RFC. Эти отличия унаследованы от WildDuck и задокументированы ниже:
- Отсутствует флаг \Recent: Флаг
\Recentне реализован. Все сообщения возвращаются без этого флага. - RENAME не влияет на подпапки: При переименовании папки подпапки не переименовываются автоматически. Иерархия папок в базе данных плоская.
- INBOX нельзя переименовывать: RFC 3501 разрешает переименование INBOX, но Forward Email явно запрещает это. См. исходный код WildDuck.
- Нет непрошенных ответов FLAGS: При изменении флагов клиенту не отправляются непрошенные ответы FLAGS.
- STORE возвращает NO для удалённых сообщений: Попытка изменить флаги у удалённых сообщений возвращает NO вместо игнорирования.
- CHARSET игнорируется в SEARCH: Аргумент
CHARSETв командах SEARCH игнорируется. Все поиски выполняются в UTF-8. - Метаданные MODSEQ игнорируются: Метаданные
MODSEQв командах STORE игнорируются. - SEARCH TEXT и SEARCH BODY: Forward Email использует SQLite FTS5 (полнотекстовый поиск) вместо поиска
$textв MongoDB. Это обеспечивает:- Поддержку оператора
NOT(MongoDB не поддерживает) - Ранжированные результаты поиска
- Производительность поиска менее 100 мс на больших почтовых ящиках
- Поддержку оператора
- Поведение автоэкспанджа: Сообщения с флагом
\Deletedавтоматически удаляются при закрытии почтового ящика. - Сохранность сообщений: Некоторые изменения сообщений могут не сохранять точную оригинальную структуру сообщения.
Частичная поддержка IMAP4rev2:
Forward Email реализует IMAP4rev1 (RFC 3501) с частичной поддержкой IMAP4rev2 (RFC 9051). Следующие функции IMAP4rev2 ещё не поддерживаются:
- LIST-STATUS — объединённые команды LIST и STATUS
- LITERAL- — несинхронизирующие литералы (вариант с минусом)
- OBJECTID — уникальные идентификаторы объектов
- SAVEDATE — атрибут даты сохранения
- REPLACE — атомарная замена сообщения
- UNAUTHENTICATE — завершение аутентификации без закрытия соединения
Ослабленная обработка структуры тела:
Forward Email использует «ослабленную» обработку тела для некорректных MIME-структур, что может отличаться от строгой интерпретации RFC. Это улучшает совместимость с реальными письмами, которые не полностью соответствуют стандартам. Расширение METADATA (RFC 5464):
Расширение IMAP METADATA не поддерживается. Для получения дополнительной информации об этом расширении смотрите RFC 5464. Обсуждение добавления этой функции можно найти в WildDuck Issue #937.
Расширения IMAP, которые НЕ поддерживаются
Следующие расширения IMAP из Реестра возможностей IMAP IANA НЕ поддерживаются:
| RFC | Название | Причина |
|---|---|---|
| RFC 2086 | Расширение IMAP4 ACL | Общие папки не реализованы. См. WildDuck Issue #427 |
| RFC 5256 | Расширения IMAP SORT и THREAD | Потоковая обработка реализована внутренне, но не через протокол RFC 5256. См. WildDuck Issue #12 |
| RFC 5162 | Расширения IMAP4 для быстрой ресинхронизации почтового ящика (QRESYNC) | Не реализовано |
| RFC 5464 | Расширение IMAP METADATA | Операции с метаданными игнорируются. См. документацию WildDuck |
| RFC 5258 | Расширения команды IMAP4 LIST | Не реализовано |
| RFC 5267 | Контексты для IMAP4 | Не реализовано |
| RFC 5465 | Расширение IMAP NOTIFY | Не реализовано |
| RFC 5466 | Расширение IMAP4 FILTERS | Не реализовано |
| RFC 6203 | Расширение IMAP4 для нечеткого поиска | Не реализовано |
| RFC 6785 | Рекомендации по реализации IMAP4 | Рекомендации выполнены не полностью |
| RFC 7162 | Расширения IMAP: быстрая ресинхронизация изменений флагов (CONDSTORE) и быстрая ресинхронизация почтового ящика (QRESYNC) | Не реализовано |
| RFC 8437 | Расширение IMAP UNAUTHENTICATE для повторного использования соединения | Не реализовано |
| RFC 8438 | Расширение IMAP для STATUS=SIZE | Не реализовано |
| RFC 8457 | Ключевое слово IMAP "$Important" и специальный атрибут "\Important" | Не реализовано |
| RFC 8474 | Расширение IMAP для идентификаторов объектов | Не реализовано |
| RFC 9051 | Протокол доступа к интернет-сообщениям (IMAP) - версия 4rev2 | Forward Email реализует IMAP4rev1 (RFC 3501) |
Протокол электронной почты POP3 и расширения
Note
Forward Email поддерживает POP3 (RFC 1939) со стандартными расширениями для получения электронной почты.
Функциональность POP3 в Forward Email обеспечивается зависимостью WildDuck. Поддерживаются следующие RFC для электронной почты:
| RFC | Название | Примечания по реализации |
|---|---|---|
| RFC 1939 | Протокол почтового офиса - версия 3 (POP3) | Полная поддержка с намеренными отличиями (см. ниже) |
| RFC 2595 | Использование TLS с IMAP, POP3 и ACAP | Поддержка STARTTLS |
| RFC 2449 | Механизм расширений POP3 | Поддержка команды CAPA |
Forward Email предоставляет поддержку POP3 для клиентов, которые предпочитают этот более простой протокол вместо IMAP. POP3 идеально подходит для пользователей, которые хотят скачать письма на одно устройство и удалить их с сервера.
Поддерживаемые расширения POP3:
| Расширение | RFC | Статус | Описание |
|---|---|---|---|
| TOP | RFC 1939 | ✅ Поддерживается | Получение заголовков сообщений |
| USER | RFC 1939 | ✅ Поддерживается | Аутентификация по имени пользователя |
| UIDL | RFC 1939 | ✅ Поддерживается | Уникальные идентификаторы сообщений |
| EXPIRE | RFC 2449 | ✅ Поддерживается | Политика истечения срока сообщений |
Отличия протокола POP3 от спецификаций RFC
Warning
POP3 имеет присущие ограничения по сравнению с IMAP.
Important
Критическое отличие: поведение команды DELE в Forward Email и WildDuck POP3
Forward Email реализует постоянное удаление в соответствии с RFC для команд POP3 DELE, в отличие от WildDuck, который перемещает сообщения в корзину.
Поведение Forward Email (исходный код):
DELE→QUITнавсегда удаляет сообщения- Точное соответствие спецификации RFC 1939
- Совпадает с поведением Dovecot (по умолчанию), Postfix и других серверов, соответствующих стандартам
Поведение WildDuck (обсуждение):
DELE→QUITперемещает сообщения в корзину (аналог Gmail)- Намеренное решение для безопасности пользователя
- Не соответствует RFC, но предотвращает случайную потерю данных
Почему Forward Email отличается:
- Соответствие RFC: Соблюдение спецификации RFC 1939
- Ожидания пользователей: Рабочий процесс «скачать и удалить» предполагает постоянное удаление
- Управление хранилищем: Правильное освобождение дискового пространства
- Совместимость: Соответствие другим серверам, поддерживающим RFC
Note
Список сообщений POP3: Forward Email отображает ВСЕ сообщения из INBOX без ограничений. Это отличается от WildDuck, который по умолчанию ограничивает список 250 сообщениями. См. исходный код.
Доступ с одного устройства:
POP3 предназначен для доступа с одного устройства. Сообщения обычно скачиваются и удаляются с сервера, что делает протокол неподходящим для синхронизации между несколькими устройствами.
Отсутствие поддержки папок:
POP3 работает только с папкой INBOX. Другие папки (Отправленные, Черновики, Корзина и т.д.) недоступны через POP3.
Ограниченное управление сообщениями:
POP3 предоставляет базовое получение и удаление сообщений. Расширенные функции, такие как пометка, перемещение или поиск сообщений, недоступны.
Расширения POP3, которые НЕ поддерживаются
Следующие расширения POP3 из Реестра механизмов расширений POP3 IANA НЕ поддерживаются:
| RFC | Заголовок | Причина |
|---|---|---|
| RFC 6856 | Поддержка UTF-8 в протоколе Post Office Protocol Version 3 (POP3) | Не реализовано в сервере WildDuck POP3 |
| RFC 2595 | Команда STLS | Поддерживается только STARTTLS, не STLS |
| RFC 3206 | Коды ответа SYS и AUTH POP | Не реализовано |
SMTP Email Protocol and Extensions
Note
Forward Email поддерживает SMTP (RFC 5321) с современными расширениями для безопасной и надежной доставки электронной почты.
Функциональность SMTP в Forward Email обеспечивается несколькими компонентами: smtp-server (nodemailer), zone-mta и собственными реализациями. Поддерживаются следующие RFC для электронной почты:
| RFC | Заголовок | Примечания по реализации |
|---|---|---|
| RFC 5321 | Простой протокол передачи почты (SMTP) | Полная поддержка |
| RFC 3207 | Расширение SMTP для безопасного SMTP поверх TLS (STARTTLS) | Поддержка TLS/SSL |
| RFC 4954 | Расширение SMTP для аутентификации (AUTH) | PLAIN, LOGIN, CRAM-MD5, XOAUTH2 |
| RFC 6531 | Расширение SMTP для интернационализированной почты (SMTPUTF8) | Поддержка адресов электронной почты в Unicode |
| RFC 3461 | Расширение SMTP для уведомлений о статусе доставки (DSN) | Полная поддержка DSN |
| RFC 3463 | Расширенные коды состояния почтовой системы | Расширенные коды состояния в ответах |
| RFC 1870 | Расширение SMTP для объявления размера сообщения (SIZE) | Объявление максимального размера сообщения |
| RFC 2920 | Расширение SMTP для конвейерной обработки команд (PIPELINING) | Поддержка конвейерной обработки команд |
| RFC 1652 | Расширение SMTP для 8-битной MIME передачи (8BITMIME) | Поддержка 8-битной MIME |
| RFC 6152 | Расширение SMTP для 8-битной MIME передачи | Поддержка 8-битной MIME |
| RFC 2034 | Расширение SMTP для возврата расширенных кодов ошибок (ENHANCEDSTATUSCODES) | Расширенные коды состояния |
Forward Email реализует полнофункциональный SMTP-сервер с поддержкой современных расширений, которые повышают безопасность, надежность и функциональность.
Поддерживаемые расширения SMTP:
| Расширение | RFC | Статус | Описание |
|---|---|---|---|
| PIPELINING | RFC 2920 | ✅ Поддерживается | Конвейерная обработка команд |
| SIZE | RFC 1870 | ✅ Поддерживается | Объявление размера сообщения (лимит 52 МБ) |
| ETRN | RFC 1985 | ✅ Поддерживается | Удалённая обработка очереди |
| STARTTLS | RFC 3207 | ✅ Поддерживается | Переход на TLS |
| ENHANCEDSTATUSCODES | RFC 2034 | ✅ Поддерживается | Расширенные коды состояния |
| 8BITMIME | RFC 6152 | ✅ Поддерживается | 8-битная MIME передача |
| DSN | RFC 3461 | ✅ Поддерживается | Уведомления о статусе доставки |
| CHUNKING | RFC 3030 | ✅ Поддерживается | Передача сообщений по частям |
| SMTPUTF8 | RFC 6531 | ⚠️ Частично | Адреса электронной почты в UTF-8 (частично) |
| REQUIRETLS | RFC 8689 | ✅ Поддерживается | Требование TLS для доставки |
Уведомления о статусе доставки (DSN)
Tip
DSN предоставляет подробную информацию о статусе доставки отправленных писем.
Forward Email полностью поддерживает DSN (RFC 3461), который позволяет отправителям запрашивать уведомления о статусе доставки. Эта функция предоставляет:
- Уведомления об успешной доставке сообщений
- Уведомления о сбоях с подробной информацией об ошибках
- Уведомления о задержках, когда доставка временно задерживается
DSN особенно полезен для:
- Подтверждения доставки важных сообщений
- Устранения проблем с доставкой
- Автоматизированных систем обработки электронной почты
- Требований соответствия и аудита
Поддержка REQUIRETLS
Important
Forward Email — один из немногих провайдеров, который явно рекламирует и применяет REQUIRETLS.
Forward Email поддерживает REQUIRETLS (RFC 8689), который гарантирует, что электронные сообщения доставляются только по зашифрованным TLS-соединениям. Это обеспечивает:
- Конечное шифрование на всем пути доставки
- Принудительное применение для пользователя через флажок в редакторе письма
- Отклонение попыток незашифрованной доставки
- Повышенную безопасность для конфиденциальных коммуникаций
Расширения SMTP, которые НЕ поддерживаются
Следующие расширения SMTP из IANA SMTP Service Extensions Registry НЕ поддерживаются:
| RFC | Название | Причина |
|---|---|---|
| RFC 4865 | SMTP Submission Service Extension for Future Message Release (FUTURERELEASE) | Не реализовано |
| RFC 6710 | SMTP Extension for Message Transfer Priorities (MT-PRIORITY) | Не реализовано |
| RFC 7293 | The Require-Recipient-Valid-Since Header Field and SMTP Service Extension | Не реализовано |
| RFC 7372 | Email Auth Status Codes | Не полностью реализовано |
| RFC 4468 | Message Submission BURL Extension | Не реализовано |
| RFC 3030 | SMTP Service Extensions for Transmission of Large and Binary MIME Messages (CHUNKING, BINARYMIME) | Не реализовано |
| RFC 2852 | Deliver By SMTP Service Extension | Не реализовано |
Протокол электронной почты JMAP
Caution
JMAP в настоящее время не поддерживается Forward Email.
| RFC | Название | Статус | Причина |
|---|---|---|---|
| RFC 8620 | The JSON Meta Application Protocol (JMAP) | ❌ Не поддерживается | Forward Email использует IMAP/POP3/SMTP и комплексный REST API вместо него |
JMAP (JSON Meta Application Protocol) — современный протокол электронной почты, предназначенный для замены IMAP.
Почему JMAP не поддерживается:
"JMAP — это зверь, которого не следовало изобретать. Он пытается преобразовать TCP/IMAP (уже плохой протокол по сегодняшним меркам) в HTTP/JSON, просто используя другой транспорт, сохраняя при этом суть." — Андрис Рейнман, HN Discussion "JMAP существует более 10 лет, и практически не используется" – Андрис Рейнман, GitHub Discussion
Также смотрите дополнительные комментарии на https://hn.algolia.com/?dateRange=all&page=0&prefix=true&query=jmap andris&sort=byDate&type=comment.
Forward Email в настоящее время сосредоточен на предоставлении отличной поддержки IMAP, POP3 и SMTP, а также комплексного REST API для управления электронной почтой. Поддержка JMAP может быть рассмотрена в будущем в зависимости от спроса пользователей и принятия в экосистеме.
Альтернатива: Forward Email предлагает Полный REST API с 39 конечными точками, который обеспечивает функциональность, аналогичную JMAP, для программного доступа к электронной почте.
Безопасность электронной почты
Архитектура безопасности электронной почты
Протоколы аутентификации сообщений электронной почты
Note
Forward Email реализует все основные протоколы аутентификации электронной почты для предотвращения подделки и обеспечения целостности сообщений.
Forward Email использует библиотеку mailauth для аутентификации электронной почты. Поддерживаются следующие RFC:
| RFC | Название | Примечания по реализации |
|---|---|---|
| RFC 6376 | DomainKeys Identified Mail (DKIM) Подписи | Полная подпись и проверка DKIM |
| RFC 8463 | Новый криптографический метод подписи для DKIM (Ed25519-SHA256) | Поддержка алгоритмов подписи RSA-SHA256 и Ed25519-SHA256 |
| RFC 7208 | Sender Policy Framework (SPF) | Проверка SPF записей |
| RFC 7489 | Аутентификация сообщений на основе домена, отчетность и соответствие (DMARC) | Применение политики DMARC |
| RFC 8617 | Authenticated Received Chain (ARC) | Запечатывание и проверка ARC |
Протоколы аутентификации электронной почты проверяют, что сообщения действительно отправлены заявленным отправителем и не были изменены в процессе передачи.
Поддержка протоколов аутентификации
| Протокол | RFC | Статус | Описание |
|---|---|---|---|
| DKIM | RFC 6376 | ✅ Поддерживается | DomainKeys Identified Mail - Криптографические подписи |
| SPF | RFC 7208 | ✅ Поддерживается | Sender Policy Framework - Авторизация IP-адреса |
| DMARC | RFC 7489 | ✅ Поддерживается | Аутентификация сообщений на основе домена - Применение политики |
| ARC | RFC 8617 | ✅ Поддерживается | Authenticated Received Chain - Сохранение аутентификации при пересылках |
DKIM (DomainKeys Identified Mail)
DKIM добавляет криптографическую подпись к заголовкам электронной почты, позволяя получателям проверить, что сообщение было авторизовано владельцем домена и не было изменено в процессе передачи.
Forward Email использует mailauth для подписи и проверки DKIM.
Основные функции:
- Автоматическая подпись DKIM для всех исходящих сообщений
- Поддержка ключей RSA и Ed25519
- Поддержка нескольких селекторов
- Проверка DKIM для входящих сообщений
SPF (Sender Policy Framework)
SPF позволяет владельцам доменов указывать, какие IP-адреса уполномочены отправлять электронную почту от имени их домена.
Основные функции:
- Проверка SPF-записей для входящих сообщений
- Автоматическая проверка SPF с подробными результатами
- Поддержка механизмов include, redirect и all
- Настраиваемые политики SPF для каждого домена
DMARC (Domain-based Message Authentication, Reporting & Conformance)
DMARC основывается на SPF и DKIM для обеспечения применения политики и отчетности.
Основные функции:
- Применение политики DMARC (none, quarantine, reject)
- Проверка выравнивания для SPF и DKIM
- Сводная отчетность DMARC
- Политики DMARC для каждого домена
ARC (Authenticated Received Chain)
ARC сохраняет результаты аутентификации электронной почты при пересылке и изменениях в рассылочных списках.
Forward Email использует библиотеку mailauth для проверки и запечатывания ARC.
Основные функции:
- Запечатывание ARC для пересылаемых сообщений
- Проверка ARC для входящих сообщений
- Проверка цепочки через несколько переходов
- Сохранение исходных результатов аутентификации
Authentication Flow
Email Transport Security Protocols
Important
Forward Email реализует несколько уровней транспортной безопасности для защиты писем в процессе передачи.
Forward Email реализует современные протоколы транспортной безопасности:
| RFC | Название | Статус | Примечания по реализации |
|---|---|---|---|
| RFC 8461 | SMTP MTA Strict Transport Security (MTA-STS) | ✅ Поддерживается | Широко используется на серверах IMAP, SMTP и MX. См. create-mta-sts-cache.js и get-transporter.js |
| RFC 8460 | SMTP TLS Reporting | ✅ Поддерживается | Через библиотеку mailauth |
| RFC 7671 | Протокол аутентификации именованных сущностей на основе DNS (DANE): обновления и рекомендации по эксплуатации | ✅ Поддерживается | Полная проверка DANE для исходящих SMTP-соединений. См. mx-connect PR #22 |
| RFC 6698 | Протокол аутентификации именованных сущностей на основе DNS (DANE) для транспортного уровня безопасности (TLS): TLSA | ✅ Поддерживается | Полная поддержка RFC 6698: типы использования PKIX-TA, PKIX-EE, DANE-TA, DANE-EE. См. mx-connect PR #22 |
| RFC 8314 | Явный текст считается устаревшим: использование TLS для отправки и доступа к электронной почте | ✅ Поддерживается | TLS обязателен для всех соединений |
| RFC 8689 | Расширение SMTP для обязательного использования TLS (REQUIRETLS) | ✅ Поддерживается | Полная поддержка расширения SMTP REQUIRETLS и заголовка "TLS-Required" |
| Протоколы транспортной безопасности обеспечивают шифрование и аутентификацию электронных сообщений во время передачи между почтовыми серверами. |
Поддержка транспортной безопасности
| Протокол | RFC | Статус | Описание |
|---|---|---|---|
| TLS | RFC 8314 | ✅ Поддерживается | Transport Layer Security - зашифрованные соединения |
| MTA-STS | RFC 8461 | ✅ Поддерживается | Mail Transfer Agent Strict Transport Security |
| DANE | RFC 7671 | ✅ Поддерживается | DNS-based Authentication of Named Entities |
| REQUIRETLS | RFC 8689 | ✅ Поддерживается | Требовать TLS для всего пути доставки |
TLS (Transport Layer Security)
Forward Email применяет шифрование TLS для всех почтовых соединений (SMTP, IMAP, POP3).
Основные возможности:
- Поддержка TLS 1.2 и TLS 1.3
- Автоматическое управление сертификатами
- Perfect Forward Secrecy (PFS)
- Только сильные наборы шифров
MTA-STS (Mail Transfer Agent Strict Transport Security)
MTA-STS гарантирует, что почта доставляется только по зашифрованным TLS-соединениям, публикуя политику через HTTPS.
Forward Email реализует MTA-STS с помощью create-mta-sts-cache.js.
Основные возможности:
- Автоматическая публикация политики MTA-STS
- Кэширование политики для повышения производительности
- Защита от атак понижения уровня безопасности
- Принудительная проверка сертификатов
DANE (DNS-based Authentication of Named Entities)
Note
Forward Email теперь полностью поддерживает DANE для исходящих SMTP-соединений.
DANE использует DNSSEC для публикации информации о TLS-сертификатах в DNS, позволяя почтовым серверам проверять сертификаты без зависимости от центров сертификации.
Основные возможности:
- ✅ Полная проверка DANE для исходящих SMTP-соединений
- ✅ Полная поддержка RFC 6698: типы использования PKIX-TA, PKIX-EE, DANE-TA, DANE-EE
- ✅ Проверка сертификатов по записям TLSA при обновлении TLS
- ✅ Параллельное разрешение TLSA для нескольких MX-хостов
- ✅ Автоматическое обнаружение нативного
dns.resolveTlsa(Node.js v22.15.0+, v23.9.0+) - ✅ Поддержка пользовательских резолверов для старых версий Node.js через Tangerine
- Требуются домены с подписью DNSSEC
Tip
Детали реализации: Поддержка DANE была добавлена через mx-connect PR #22, который обеспечивает комплексную поддержку DANE/TLSA для исходящих SMTP-соединений.
REQUIRETLS
Tip
Forward Email — один из немногих провайдеров с поддержкой REQUIRETLS, доступной пользователям.
REQUIRETLS гарантирует, что сообщения электронной почты доставляются только по зашифрованным TLS-соединениям на всем пути доставки.
Основные возможности:
- Флажок для пользователя в компоновщике писем
- Автоматический отказ от незашифрованной доставки
- Принудительное сквозное шифрование TLS
- Подробные уведомления о сбоях
Tip
Принудительное применение TLS для пользователей: Forward Email предоставляет флажок в разделе Мой аккаунт > Домены > Настройки для принудительного использования TLS для всех входящих соединений. При включении эта функция отклоняет любые входящие письма, отправленные без TLS, с кодом ошибки 530, обеспечивая шифрование всей входящей почты при передаче.
Поток транспортной безопасности
Шифрование электронных сообщений
Note
Forward Email поддерживает как OpenPGP, так и S/MIME для сквозного шифрования электронной почты.
Forward Email поддерживает шифрование OpenPGP и S/MIME:
| RFC | Название | Статус | Примечания по реализации |
|---|---|---|---|
| RFC 9580 | OpenPGP (заменяет RFC 4880) | ✅ Поддерживается | Через интеграцию OpenPGP.js v6+. См. FAQ |
| RFC 8551 | Secure/Multipurpose Internet Mail Extensions (S/MIME) Версия 4.0 Спецификация сообщений | ✅ Поддерживается | Поддерживаются алгоритмы RSA и ECC. См. FAQ |
Протоколы шифрования сообщений защищают содержимое электронной почты от прочтения кем-либо, кроме предполагаемого получателя, даже если сообщение перехвачено во время передачи.
Поддержка шифрования
| Протокол | RFC | Статус | Описание |
|---|---|---|---|
| OpenPGP | RFC 9580 | ✅ Поддерживается | Pretty Good Privacy - шифрование с открытым ключом |
| S/MIME | RFC 8551 | ✅ Поддерживается | Secure/Multipurpose Internet Mail Extensions |
| WKD | Draft | ✅ Поддерживается | Web Key Directory - автоматическое обнаружение ключей |
OpenPGP (Pretty Good Privacy)
OpenPGP обеспечивает сквозное шифрование с использованием криптографии с открытым ключом. Forward Email поддерживает OpenPGP через протокол Web Key Directory (WKD).
Основные возможности:
- Автоматическое обнаружение ключей через WKD
- Поддержка PGP/MIME для зашифрованных вложений
- Управление ключами через почтовый клиент
- Совместимость с GPG, Mailvelope и другими инструментами OpenPGP
Как использовать:
- Создайте пару ключей PGP в вашем почтовом клиенте
- Загрузите ваш открытый ключ в WKD Forward Email
- Ваш ключ автоматически доступен другим пользователям
- Отправляйте и получайте зашифрованные письма без проблем
S/MIME (Secure/Multipurpose Internet Mail Extensions)
S/MIME обеспечивает шифрование электронной почты и цифровые подписи с использованием сертификатов X.509.
Основные возможности:
- Шифрование на основе сертификатов
- Цифровые подписи для аутентификации сообщений
- Родная поддержка в большинстве почтовых клиентов
- Безопасность корпоративного уровня
Как использовать:
- Получите сертификат S/MIME у удостоверяющего центра
- Установите сертификат в ваш почтовый клиент
- Настройте клиент для шифрования/подписи сообщений
- Обменивайтесь сертификатами с получателями
Шифрование почтового ящика SQLite
Important
Forward Email предоставляет дополнительный уровень безопасности с зашифрованными почтовыми ящиками SQLite.
Помимо шифрования на уровне сообщений, Forward Email шифрует целые почтовые ящики с помощью sqleet (ChaCha20-Poly1305).
Основные возможности:
- Шифрование на основе пароля — пароль известен только вам
- Квантовая устойчивость — шифр ChaCha20-Poly1305
- Нулевая осведомленность — Forward Email не может расшифровать ваш почтовый ящик
- Изолированность — каждый почтовый ящик изолирован и портативен
- Невосстановимость — если вы забудете пароль, почтовый ящик будет утерян
Сравнение шифрования
| Особенность | OpenPGP | S/MIME | Шифрование SQLite |
|---|---|---|---|
| Конечное шифрование | ✅ Да | ✅ Да | ✅ Да |
| Управление ключами | Самостоятельное | Выдано УЦ | На основе пароля |
| Поддержка клиента | Требуется плагин | Встроенная | Прозрачное |
| Сценарий использования | Личное | Корпоративное | Хранение |
| Квантовая устойчивость | ⚠️ Зависит от ключа | ⚠️ Зависит от сертификата | ✅ Да |
Процесс шифрования
Расширенный функционал
Стандарты формата электронных сообщений
Note
Forward Email поддерживает современные стандарты формата электронной почты для богатого контента и интернационализации.
Forward Email поддерживает стандартные форматы электронных сообщений:
| RFC | Название | Примечания по реализации |
|---|---|---|
| RFC 5322 | Формат интернет-сообщений | Полная поддержка |
| RFC 2045 | MIME Часть первая: Формат тел интернет-сообщений | Полная поддержка MIME |
| RFC 2046 | MIME Часть вторая: Медиа-типы | Полная поддержка MIME |
| RFC 2047 | MIME Часть третья: Расширения заголовков сообщений для не-ASCII текста | Полная поддержка MIME |
| RFC 2048 | MIME Часть четвёртая: Процедуры регистрации | Полная поддержка MIME |
| RFC 2049 | MIME Часть пятая: Критерии соответствия и примеры | Полная поддержка MIME |
Стандарты формата электронной почты определяют, как структурируются, кодируются и отображаются электронные сообщения.
Поддержка стандартов формата
| Стандарт | RFC | Статус | Описание |
|---|---|---|---|
| MIME | RFC 2045-2049 | ✅ Поддерживается | Многоцелевые расширения интернет-почты |
| SMTPUTF8 | RFC 6531 | ⚠️ Частично | Интернационализированные адреса электронной почты |
| EAI | RFC 6530 | ⚠️ Частично | Интернационализация адресов электронной почты |
| Формат сообщений | RFC 5322 | ✅ Поддерживается | Формат интернет-сообщений |
| Безопасность MIME | RFC 1847 | ✅ Поддерживается | Безопасные мультичасти для MIME |
MIME (Многоцелевые расширения интернет-почты)
MIME позволяет электронным письмам содержать несколько частей с разными типами содержимого (текст, HTML, вложения и т.д.).
Поддерживаемые функции MIME:
- Многочастные сообщения (mixed, alternative, related)
- Заголовки Content-Type
- Кодировки Content-Transfer-Encoding (7bit, 8bit, quoted-printable, base64)
- Встроенные изображения и вложения
- Богатый HTML-контент
SMTPUTF8 и интернационализация адресов электронной почты
Warning
Поддержка SMTPUTF8 частичная — не все функции реализованы полностью.
SMTPUTF8 позволяет адресам электронной почты содержать не-ASCII символы (например, 用户@例え.jp).
Текущий статус:
- ⚠️ Частичная поддержка интернационализированных адресов электронной почты
- ✅ UTF-8 содержимое в теле сообщений
- ⚠️ Ограниченная поддержка не-ASCII локальных частей
Протоколы календарей и контактов
Note
Forward Email обеспечивает полную поддержку CalDAV и CardDAV для синхронизации календарей и контактов.
Forward Email поддерживает CalDAV и CardDAV через библиотеку caldav-adapter:
| RFC | Название | Статус | Примечания по реализации |
|---|---|---|---|
| RFC 4791 | Расширения календарей для WebDAV (CalDAV) | ✅ Поддерживается | Доступ и управление календарём |
| RFC 6352 | CardDAV: расширения vCard для WebDAV | ✅ Поддерживается | Доступ и управление контактами |
| RFC 5545 | Основной объект спецификации интернет-календарей и планирования (iCalendar) | ✅ Поддерживается | Поддержка формата iCalendar |
| RFC 6350 | Спецификация формата vCard | ✅ Поддерживается | Поддержка формата vCard 4.0 |
| RFC 6638 | Расширения планирования для CalDAV | ✅ Поддерживается | Планирование в CalDAV с поддержкой iMIP. См. коммит c4d1629 |
| RFC 5546 | Протокол транспортно-независимой совместимости iCalendar (iTIP) | ✅ Поддерживается | Поддержка iTIP для методов REQUEST, REPLY, CANCEL и VFREEBUSY. См. коммит c4d1629 |
| RFC 6047 | Протокол совместимости на основе сообщений iCalendar (iMIP) | ✅ Поддерживается | Приглашения на календарь по электронной почте с ссылками для ответа. См. коммит c4d1629 |
CalDAV и CardDAV — это протоколы, которые позволяют получать доступ, обмениваться и синхронизировать данные календарей и контактов между устройствами.
Поддержка CalDAV и CardDAV
| Протокол | RFC | Статус | Описание |
|---|---|---|---|
| CalDAV | RFC 4791 | ✅ Поддерживается | Доступ и синхронизация календаря |
| CardDAV | RFC 6352 | ✅ Поддерживается | Доступ и синхронизация контактов |
| iCalendar | RFC 5545 | ✅ Поддерживается | Формат данных календаря |
| vCard | RFC 6350 | ✅ Поддерживается | Формат данных контактов |
| VTODO | RFC 5545 | ✅ Поддерживается | Поддержка задач/напоминаний |
| Планирование CalDAV | RFC 6638 | ✅ Поддерживается | Расширения планирования календаря |
| iTIP | RFC 5546 | ✅ Поддерживается | Транспортно-независимая совместимость |
| iMIP | RFC 6047 | ✅ Поддерживается | Приглашения на календарь по электронной почте |
CalDAV (Доступ к календарю)
CalDAV позволяет получать доступ и управлять календарями с любого устройства или приложения.
Основные возможности:
- Синхронизация между устройствами
- Общие календари
- Подписки на календари
- Приглашения на события и ответы на них
- Повторяющиеся события
- Поддержка часовых поясов
Совместимые клиенты:
- Apple Calendar (macOS, iOS)
- Mozilla Thunderbird
- Evolution
- GNOME Calendar
- Любой клиент, совместимый с CalDAV
CardDAV (Доступ к контактам)
CardDAV позволяет получать доступ и управлять контактами с любого устройства или приложения.
Основные возможности:
- Синхронизация между устройствами
- Общие адресные книги
- Группы контактов
- Поддержка фотографий
- Пользовательские поля
- Поддержка vCard 4.0
Совместимые клиенты:
- Apple Contacts (macOS, iOS)
- Mozilla Thunderbird
- Evolution
- GNOME Contacts
- Любой клиент, совместимый с CardDAV
Задачи и напоминания (CalDAV VTODO)
Tip
Forward Email поддерживает задачи и напоминания через CalDAV VTODO.
VTODO является частью формата iCalendar и позволяет управлять задачами через CalDAV.
Основные возможности:
- Создание и управление задачами
- Сроки выполнения и приоритеты
- Отслеживание выполнения задач
- Повторяющиеся задачи
- Списки/категории задач
Совместимые клиенты:
- Apple Reminders (macOS, iOS)
- Mozilla Thunderbird (с Lightning)
- Evolution
- GNOME To Do
- Любой клиент CalDAV с поддержкой VTODO
Поток синхронизации CalDAV/CardDAV
Расширения календаря, НЕ поддерживаемые
Следующие расширения календаря НЕ поддерживаются:
| RFC | Название | Причина |
|---|---|---|
| RFC 4918 | HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV) | CalDAV использует концепции WebDAV, но не реализует полный RFC 4918 |
| RFC 6578 | Collection Synchronization for WebDAV | Не реализовано |
| RFC 3744 | WebDAV Access Control Protocol | Не реализовано |
Фильтрация сообщений электронной почты
Important
Forward Email предоставляет полную поддержку Sieve и ManageSieve для серверной фильтрации электронной почты. Создавайте мощные правила для автоматической сортировки, фильтрации, пересылки и ответа на входящие сообщения.
Sieve (RFC 5228)
Sieve — это стандартизированный, мощный язык сценариев для серверной фильтрации электронной почты. Forward Email реализует всестороннюю поддержку Sieve с 24 расширениями.
Исходный код: helpers/sieve/
Основные поддерживаемые RFC для Sieve
| RFC | Название | Статус |
|---|---|---|
| RFC 5228 | Sieve: Язык фильтрации электронной почты | ✅ Полная поддержка |
| RFC 5429 | Sieve Email Filtering: Reject and Extended Reject Extensions | ✅ Полная поддержка |
| RFC 5230 | Sieve Email Filtering: Vacation Extension | ✅ Полная поддержка |
| RFC 6131 | Sieve Vacation Extension: "Seconds" Parameter | ✅ Полная поддержка |
| RFC 5232 | Sieve Email Filtering: Imap4flags Extension | ✅ Полная поддержка |
| RFC 5173 | Sieve Email Filtering: Body Extension | ✅ Полная поддержка |
| RFC 5229 | Sieve Email Filtering: Variables Extension | ✅ Полная поддержка |
| RFC 5231 | Sieve Email Filtering: Relational Extension | ✅ Полная поддержка |
| RFC 4790 | Internet Application Protocol Collation Registry | ✅ Полная поддержка |
| RFC 3894 | Sieve Extension: Copying Without Side Effects | ✅ Полная поддержка |
| RFC 5293 | Sieve Email Filtering: Editheader Extension | ✅ Полная поддержка |
| RFC 5260 | Sieve Email Filtering: Date and Index Extensions | ✅ Полная поддержка |
| RFC 5435 | Sieve Email Filtering: Extension for Notifications | ✅ Полная поддержка |
| RFC 5183 | Sieve Email Filtering: Environment Extension | ✅ Полная поддержка |
| RFC 5490 | Sieve Email Filtering: Extensions for Checking Mailbox Status | ✅ Полная поддержка |
| RFC 8579 | Sieve Email Filtering: Delivering to Special-Use Mailboxes | ✅ Полная поддержка |
| RFC 7352 | Sieve Email Filtering: Detecting Duplicate Deliveries | ✅ Полная поддержка |
| RFC 5463 | Sieve Email Filtering: Ihave Extension | ✅ Полная поддержка |
| RFC 5233 | Sieve Email Filtering: Subaddress Extension | ✅ Полная поддержка |
| draft-ietf-sieve-regex | Sieve Email Filtering: Regular Expression Extension | ✅ Полная поддержка |
Поддерживаемые расширения Sieve
| Расширение | Описание | Интеграция |
|---|---|---|
fileinto |
Помещать сообщения в определённые папки | Сообщения сохраняются в указанной папке IMAP |
reject / ereject |
Отклонять сообщения с ошибкой | Отклонение SMTP с сообщением о возврате |
vacation |
Автоматические ответы в отпуске/вне офиса | Очередь через Emails.queue с ограничением скорости |
vacation-seconds |
Точные интервалы ответов в отпуске | Время жизни из параметра :seconds |
imap4flags |
Устанавливать флаги IMAP (\Seen, \Flagged и др.) | Флаги применяются при сохранении сообщения |
envelope |
Проверять отправителя/получателя конверта | Доступ к данным SMTP конверта |
body |
Проверять содержимое тела сообщения | Полное совпадение текста тела |
variables |
Хранить и использовать переменные в скриптах | Расширение переменных с модификаторами |
relational |
Реляционные сравнения | :count, :value с gt/lt/eq |
comparator-i;ascii-numeric |
Числовые сравнения | Сравнение числовых строк |
copy |
Копировать сообщения при переадресации | Флаг :copy для fileinto/redirect |
editheader |
Добавлять или удалять заголовки сообщений | Заголовки изменяются перед сохранением |
date |
Проверять значения даты/времени | Тесты currentdate и даты заголовка |
index |
Доступ к конкретным вхождениям заголовков | :index для заголовков с несколькими значениями |
regex |
Сопоставление с регулярными выражениями | Полная поддержка регулярных выражений в тестах |
enotify |
Отправлять уведомления | Уведомления mailto: через Emails.queue |
environment |
Доступ к информации об окружении | Домен, хост, удалённый IP из сессии |
mailbox |
Проверять существование почтового ящика | Тест mailboxexists |
special-use |
Помещать в почтовые ящики специального назначения | Отображение \Junk, \Trash и др. в папки |
duplicate |
Обнаруживать дублирующиеся сообщения | Отслеживание дубликатов на основе Redis |
ihave |
Проверять доступность расширения | Проверка возможностей во время выполнения |
subaddress |
Доступ к частям адреса user+detail | Части адреса :user и :detail |
Расширения Sieve, НЕ поддерживаемые
| Расширение | RFC | Причина |
|---|---|---|
include |
RFC 6609 | Риск безопасности (инъекция скриптов), требуется глобальное хранение скриптов |
mboxmetadata / servermetadata |
RFC 5490 | Требуется расширение IMAP METADATA |
fcc |
RFC 8580 | Требуется интеграция с папкой Отправленные |
encoded-character |
RFC 5228 | Требуются изменения парсера для синтаксиса $ |
foreverypart / mime / extracttext |
RFC 5703 | Сложная обработка MIME-дерева |
Поток обработки Sieve
Функции безопасности
Реализация Sieve в Forward Email включает комплексные меры безопасности:
- Защита от CVE-2023-26430: предотвращает циклы перенаправления и атаки с почтовым бомбометанием
- Ограничение частоты: лимиты на перенаправления (10/сообщение, 100/день) и ответы отпуска
- Проверка в черном списке: адреса перенаправления проверяются по черному списку
- Защищённые заголовки: заголовки DKIM, ARC и аутентификации нельзя изменить через editheader
- Ограничения размера скрипта: применяется максимальный размер скрипта
- Тайм-ауты выполнения: скрипты прерываются при превышении лимита времени
Примеры скриптов Sieve
Поместить рассылки в папку:
require ["fileinto"];
if header :contains "List-Id" "newsletter" {
fileinto "Newsletters";
}
Автоответчик отпуска с точным временем:
require ["vacation", "vacation-seconds"];
vacation :seconds 3600 :subject "Out of Office"
"Я сейчас отсутствую и отвечу в течение 24 часов.";
Фильтрация спама с флагами:
require ["fileinto", "imap4flags"];
if header :contains "X-Spam-Status" "Yes" {
setflag "\\Seen";
fileinto "Junk";
}
Сложная фильтрация с переменными:
require ["variables", "fileinto", "regex"];
if header :regex "From" "(.+)@example\\.com" {
set :lower "sender" "${1}";
fileinto "Contacts/${sender}";
}
Tip
Для полной документации, примеров скриптов и инструкций по настройке смотрите FAQ: Поддерживаете ли вы фильтрацию почты Sieve?
ManageSieve (RFC 5804)
Forward Email предоставляет полную поддержку протокола ManageSieve для удалённого управления скриптами Sieve.
Исходный код: managesieve-server.js
| RFC | Название | Статус |
|---|---|---|
| RFC 5804 | Протокол для удалённого управления скриптами Sieve | ✅ Полная поддержка |
Конфигурация сервера ManageSieve
| Параметр | Значение |
|---|---|
| Сервер | imap.forwardemail.net |
| Порт (STARTTLS) | 2190 (рекомендуется) |
| Порт (Implicit TLS) | 4190 |
| Аутентификация | PLAIN (через TLS) |
Примечание: Порт 2190 использует STARTTLS (переход с plain на TLS) и совместим с большинством клиентов ManageSieve, включая sieve-connect. Порт 4190 использует implicit TLS (TLS с начала соединения) для клиентов, которые это поддерживают.
Поддерживаемые команды ManageSieve
| Команда | Описание |
|---|---|
AUTHENTICATE |
Аутентификация с использованием механизма PLAIN |
CAPABILITY |
Список возможностей и расширений сервера |
HAVESPACE |
Проверка возможности сохранить скрипт |
PUTSCRIPT |
Загрузка нового скрипта |
LISTSCRIPTS |
Список всех скриптов с указанием активного |
SETACTIVE |
Активация скрипта |
GETSCRIPT |
Загрузка скрипта |
DELETESCRIPT |
Удаление скрипта |
RENAMESCRIPT |
Переименование скрипта |
CHECKSCRIPT |
Проверка синтаксиса скрипта |
NOOP |
Поддержание соединения в активном состоянии |
LOGOUT |
Завершение сессии |
Совместимые клиенты ManageSieve
- Thunderbird: Встроенная поддержка Sieve через Sieve add-on
- Roundcube: Плагин ManageSieve
- KMail: Родная поддержка ManageSieve
- sieve-connect: Клиент командной строки
- Любой клиент, соответствующий RFC 5804
Процесс протокола ManageSieve
Веб-интерфейс и API
Помимо ManageSieve, Forward Email предоставляет:
- Веб-панель управления: Создавайте и управляйте скриптами Sieve через веб-интерфейс в Мой аккаунт → Домены → Псевдонимы → Скрипты Sieve
- REST API: Программный доступ к управлению скриптами Sieve через Forward Email API
Tip
Для подробных инструкций по настройке и конфигурации клиентов смотрите FAQ: Поддерживаете ли вы фильтрацию почты с помощью Sieve?
Оптимизация хранения
Important
Первая в отрасли технология хранения: Forward Email — единственный в мире почтовый провайдер, который сочетает дедупликацию вложений с компрессией Brotli для содержимого писем. Эта двухслойная оптимизация обеспечивает вам в 2-3 раза больше эффективного пространства хранения по сравнению с традиционными почтовыми провайдерами.
Forward Email реализует две революционные техники оптимизации хранения, которые значительно уменьшают размер почтового ящика при полном соблюдении RFC и сохранении целостности сообщений:
- Дедупликация вложений — устраняет дублирующиеся вложения во всех письмах
- Компрессия Brotli — уменьшает объем хранения на 46-86% для метаданных и на 50% для вложений
Архитектура: двухслойная оптимизация хранения
Дедупликация вложений
Forward Email реализует дедупликацию вложений на основе проверенного подхода WildDuck, адаптированного для хранения в SQLite.
Note
Что дедуплицируется: «Вложение» означает закодированное содержимое MIME-узла (base64 или quoted-printable), а не декодированный файл. Это сохраняет валидность подписей DKIM и GPG.
Как это работает
Оригинальная реализация WildDuck (MongoDB GridFS):
IMAP-сервер Wild Duck выполняет дедупликацию вложений. «Вложение» в данном случае означает содержимое MIME-узла, закодированное в base64 или quoted-printable, а не декодированный файл. Хотя использование закодированного содержимого приводит к множеству ложных отрицательных срабатываний (один и тот же файл в разных письмах может считаться разными вложениями), это необходимо для гарантии корректности различных схем подписей (DKIM, GPG и т.д.). Сообщение, полученное из Wild Duck, выглядит точно так же, как и сохраненное, несмотря на то, что Wild Duck разбирает сообщение в древовидный объект и восстанавливает сообщение при получении. Реализация SQLite в Forward Email:
Forward Email адаптирует этот подход для зашифрованного хранения в SQLite с помощью следующего процесса:
- Вычисление хэша: При обнаружении вложения вычисляется хэш с использованием библиотеки
rev-hashиз тела вложения - Поиск: Проверяется, существует ли вложение с совпадающим хэшем в таблице
Attachments - Подсчет ссылок:
- Если существует: Увеличивается счетчик ссылок на 1 и магический счетчик на случайное число
- Если новое: Создается новая запись вложения со счетчиком = 1
- Безопасность удаления: Используется система с двумя счетчиками (ссылки + магический) для предотвращения ложных срабатываний
- Сборка мусора: Вложения удаляются сразу, когда оба счетчика достигают нуля
Исходный код: helpers/attachment-storage.js
Поток дедупликации
Система магических чисел
Forward Email использует систему "магических чисел" WildDuck (вдохновленную Mail.ru) для предотвращения ложных срабатываний при удалении:
- Каждому сообщению присваивается случайное число
- Магический счетчик вложения увеличивается на это случайное число при добавлении сообщения
- Магический счетчик уменьшается на то же число при удалении сообщения
- Вложение удаляется только когда оба счетчика (ссылок + магический) достигают нуля
Эта система с двумя счетчиками гарантирует, что если что-то пойдет не так при удалении (например, сбой, ошибка сети), вложение не будет удалено преждевременно.
Ключевые отличия: WildDuck vs Forward Email
| Особенность | WildDuck (MongoDB) | Forward Email (SQLite) |
|---|---|---|
| Хранилище | MongoDB GridFS (разбитое) | SQLite BLOB (прямое) |
| Алгоритм хэширования | SHA256 | rev-hash (на основе SHA-256) |
| Подсчет ссылок | ✅ Да | ✅ Да |
| Магические числа | ✅ Да (вдохновлено Mail.ru) | ✅ Да (та же система) |
| Сборка мусора | Отложенная (отдельная задача) | Немедленная (при нулевых счетчиках) |
| Сжатие | ❌ Нет | ✅ Brotli (см. ниже) |
| Шифрование | ❌ Опционально | ✅ Всегда (ChaCha20-Poly1305) |
Сжатие Brotli
Important
Первое в мире: Forward Email — единственный в мире почтовый сервис, который использует сжатие Brotli для содержимого писем. Это обеспечивает экономию места от 46 до 86% поверх дедупликации вложений.
Forward Email реализует сжатие Brotli как для тел вложений, так и для метаданных сообщений, обеспечивая значительную экономию места при сохранении обратной совместимости.
Реализация: helpers/msgpack-helpers.js
Что сжимается
1. Тела вложений (encodeAttachmentBody)
- Старые форматы: Строка в шестнадцатеричном формате (увеличение размера в 2 раза) или сырой Buffer
- Новый формат: Buffer, сжатый Brotli с магической шапкой "FEBR"
- Решение о сжатии: Сжимается только если это экономит место (учитывая 4-байтовый заголовок)
- Экономия места: До 50% (hex → нативный BLOB)
2. Метаданные сообщения (
encodeMetadata)
Включает: mimeTree, headers, envelope, flags
- Старый формат: JSON строка текста
- Новый формат: Buffer, сжатый Brotli
- Экономия места: 46-86% в зависимости от сложности сообщения
Конфигурация сжатия
// Опции сжатия Brotli, оптимизированные для скорости (уровень 4 — хороший баланс)
const BROTLI_COMPRESS_OPTIONS = {
params: {
[zlib.constants.BROTLI_PARAM_QUALITY]: 4
}
};
Почему уровень 4?
- Быстрое сжатие/распаковка: обработка за доли миллисекунды
- Хорошее сжатие: экономия 46-86%
- Сбалансированная производительность: оптимально для операций с электронной почтой в реальном времени
Магический заголовок: "FEBR"
Forward Email использует 4-байтовый магический заголовок для идентификации сжатых тел вложений:
"FEBR" = Forward Email BRotli
Hex: 0x46 0x45 0x42 0x52
Зачем нужен магический заголовок?
- Определение формата: мгновенно отличать сжатые данные от несжатых
- Обратная совместимость: старые hex-строки и необработанные Buffers продолжают работать
- Избежание коллизий: "FEBR" маловероятно встретится в начале легитимных данных вложений
Процесс сжатия
Процесс распаковки
Обратная совместимость
Все функции декодирования автоматически определяют формат хранения:
| Формат | Метод определения | Обработка |
|---|---|---|
| Сжатый Brotli | Проверка магического заголовка "FEBR" | Распаковка с помощью zlib.brotliDecompressSync() |
| Необработанный Buffer | Buffer.isBuffer() без магии |
Возврат как есть |
| Hex-строка | Проверка чётной длины + символов [0-9a-f] | Декодирование через Buffer.from(value, 'hex') |
| JSON-строка | Проверка первого символа { или [ |
Парсинг через JSON.parse() |
Это гарантирует нулевую потерю данных при миграции со старых на новые форматы хранения.
Статистика экономии места
Измеренная экономия на производственных данных:
| Тип данных | Старый формат | Новый формат | Экономия |
|---|---|---|---|
| Тела вложений | Hex-кодированная строка (2x) | Сжатый Brotli BLOB | 50% |
| Метаданные сообщений | JSON текст | Сжатый Brotli BLOB | 46-86% |
| Флаги почтового ящика | JSON текст | Сжатый Brotli BLOB | 60-80% |
Источник: helpers/migrate-storage-format.js
Процесс миграции
Forward Email предоставляет автоматическую, идемпотентную миграцию со старых на новые форматы хранения: // Отслеживаемая статистика миграции: { attachmentsMigrated: 0, messagesMigrated: 0, mailboxesMigrated: 0, bytesSaved: 0 // Общее количество байт, сэкономленных за счет сжатия }
**Шаги миграции:**
1. Тела вложений: шестнадцатеричное кодирование → нативный BLOB (экономия 50%)
2. Метаданные сообщений: JSON-текст → BLOB, сжатый Brotli (экономия 46-86%)
3. Флаги почтового ящика: JSON-текст → BLOB, сжатый Brotli (экономия 60-80%)
**Источник:** [`helpers/migrate-storage-format.js`](https://github.com/forwardemail/forwardemail.net/blob/master/helpers/migrate-storage-format.js)
---
### Эффективность комбинированного хранения {#combined-storage-efficiency}
> \[!TIP]
> **Реальное влияние:** Благодаря дедупликации вложений и сжатию Brotli пользователи Forward Email получают **в 2-3 раза более эффективное хранение**, чем у традиционных почтовых провайдеров.
**Пример сценария:**
Традиционный почтовый провайдер (почтовый ящик 1 ГБ):
* 1 ГБ дискового пространства = 1 ГБ писем
* Нет дедупликации: одно и то же вложение хранится 10 раз = 10-кратная потеря места
* Нет сжатия: полные JSON-метаданные хранятся = 2-3-кратная потеря места
Forward Email (почтовый ящик 1 ГБ):
* 1 ГБ дискового пространства ≈ **2-3 ГБ писем** (эффективное хранение)
* Дедупликация: одно и то же вложение хранится один раз, ссылаются 10 раз
* Сжатие: экономия 46-86% на метаданных, 50% на вложениях
* Шифрование: ChaCha20-Poly1305 (без накладных расходов на хранение)
**Таблица сравнения:**
| Провайдер | Технология хранения | Эффективное хранение (почтовый ящик 1 ГБ) |
| ----------------- | -------------------------------------------- | ----------------------------------------- |
| Gmail | Нет | 1 ГБ |
| iCloud | Нет | 1 ГБ |
| Outlook.com | Нет | 1 ГБ |
| Fastmail | Нет | 1 ГБ |
| ProtonMail | Только шифрование | 1 ГБ |
| Tutanota | Только шифрование | 1 ГБ |
| **Forward Email** | **Дедупликация + Сжатие + Шифрование** | **2-3 ГБ** ✨ |
### Технические детали реализации {#technical-implementation-details}
**Производительность:**
* Brotli уровень 4: сжатие/распаковка за доли миллисекунды
* Нет потерь производительности из-за сжатия
* SQLite FTS5: поиск менее 50 мс на NVMe SSD
**Безопасность:**
* Сжатие происходит **после** шифрования (база данных SQLite зашифрована)
* Шифрование ChaCha20-Poly1305 + сжатие Brotli
* Нулевая осведомленность: пароль для расшифровки есть только у пользователя
**Соответствие RFC:**
* Получаемые сообщения выглядят **точно так же**, как и сохранённые
* Подписи DKIM остаются валидными (кодированный контент сохранён)
* Подписи GPG остаются валидными (контент, подписанный, не изменён)
### Почему ни один другой провайдер этого не делает {#why-no-other-provider-does-this}
**Сложность:**
* Требуется глубокая интеграция с уровнем хранения
* Обеспечение обратной совместимости сложно
* Миграция со старых форматов сложна
**Проблемы с производительностью:**
* Сжатие добавляет нагрузку на CPU (решено с помощью Brotli уровня 4)
* Распаковка при каждом чтении (решено кэшированием SQLite)
**Преимущество Forward Email:**
* Создан с нуля с учётом оптимизации
* SQLite позволяет напрямую работать с BLOB
* Зашифрованные базы данных на пользователя обеспечивают безопасное сжатие
---
---
## Современные функции {#modern-features}
## Полный REST API для управления электронной почтой {#complete-rest-api-for-email-management}
> \[!TIP]
> Forward Email предоставляет полный REST API с 39 конечными точками для программного управления электронной почтой.
> \[!TIP]
> **Уникальная особенность отрасли:** В отличие от всех остальных почтовых сервисов, Forward Email предоставляет полный программный доступ к вашему почтовому ящику, календарю, контактам, сообщениям и папкам через полный REST API. Это прямое взаимодействие с вашим зашифрованным файлом базы данных SQLite, в котором хранятся все ваши данные.
Forward Email предлагает полный REST API, обеспечивающий беспрецедентный доступ к вашим данным электронной почты. Ни один другой почтовый сервис (включая Gmail, iCloud, Outlook, ProtonMail, Tuta или Fastmail) не предлагает такого уровня комплексного прямого доступа к базе данных.
**Документация API:** <https://forwardemail.net/en/email-api>
### Категории API (39 конечных точек) {#api-categories-39-endpoints}
**1. API сообщений** (5 конечных точек) - Полные операции CRUD с электронными сообщениями:
* `GET /v1/messages` - Список сообщений с 15+ расширенными параметрами поиска (никакой другой сервис этого не предлагает)
* `POST /v1/messages` - Создание/отправка сообщений
* `GET /v1/messages/:id` - Получение сообщения
* `PUT /v1/messages/:id` - Обновление сообщения (флаги, папки)
* `DELETE /v1/messages/:id` - Удаление сообщения
*Пример: Найти все счета за последний квартал с вложениями:*
```bash
curl -u "alias@domain.com:password" \
"https://api.forwardemail.net/v1/messages?q=subject:invoice+has:attachment+after:2024-01-01+before:2024-04-01"
См. Документация по расширенному поиску
2. API папок (5 конечных точек) - Полное управление папками IMAP через REST:
GET /v1/folders- Список всех папокPOST /v1/folders- Создание папкиGET /v1/folders/:id- Получение папкиPUT /v1/folders/:id- Обновление папкиDELETE /v1/folders/:id- Удаление папки
3. API контактов (5 конечных точек) - Хранение контактов CardDAV через REST:
GET /v1/contacts- Список контактовPOST /v1/contacts- Создание контакта (формат vCard)GET /v1/contacts/:id- Получение контактаPUT /v1/contacts/:id- Обновление контактаDELETE /v1/contacts/:id- Удаление контакта
4. API календарей (5 конечных точек) - Управление контейнерами календарей:
GET /v1/calendars- Список контейнеров календарейPOST /v1/calendars- Создание календаря (например, «Рабочий календарь», «Личный календарь»)GET /v1/calendars/:id- Получение календаряPUT /v1/calendars/:id- Обновление календаряDELETE /v1/calendars/:id- Удаление календаря
5. API событий календаря (5 конечных точек) - Планирование событий в календарях:
GET /v1/calendar-events- Список событийPOST /v1/calendar-events- Создание события с участникамиGET /v1/calendar-events/:id- Получение событияPUT /v1/calendar-events/:id- Обновление событияDELETE /v1/calendar-events/:id- Удаление события
Пример: Создать событие в календаре:
curl -u "alias@domain.com:password" \
-X POST \
-H "Content-Type: application/json" \
-d '{"title":"Командное собрание","start":"2024-12-20T10:00:00Z","attendees":["team@example.com"],"calendar_id":"calendar123"}' \
https://api.forwardemail.net/v1/calendar-events
Технические детали
- Аутентификация: Простая аутентификация
alias:password(без сложности OAuth) - Производительность: Время отклика менее 50 мс с использованием SQLite FTS5 и NVMe SSD
- Нулевая задержка сети: Прямой доступ к базе данных, без проксирования через внешние сервисы
Практические сценарии использования
-
Аналитика электронной почты: Создание пользовательских панелей для отслеживания объема писем, времени ответа, статистики отправителей
-
Автоматизация рабочих процессов: Запуск действий на основе содержимого писем (обработка счетов, заявки в поддержку)
-
Интеграция с CRM: Автоматическая синхронизация переписки с вашей CRM
-
Соответствие требованиям и поиск: Поиск и экспорт писем для юридических/комплаенс требований
-
Пользовательские почтовые клиенты: Создание специализированных интерфейсов электронной почты для вашего рабочего процесса
-
Бизнес-аналитика: Анализ коммуникационных паттернов, скорости ответов, вовлеченности клиентов
-
Управление документами: Автоматический извлечение и категоризация вложений
Forward Email предлагает современный REST API, который обеспечивает полный контроль над учетными записями электронной почты, доменами, алиасами и сообщениями. Этот API является мощной альтернативой JMAP и предоставляет функциональность, выходящую за рамки традиционных почтовых протоколов.
| Категория | Конечные точки | Описание |
|---|---|---|
| Управление аккаунтом | 8 | Пользовательские аккаунты, аутентификация, настройки |
| Управление доменом | 12 | Пользовательские домены, DNS, проверка |
| Управление алиасами | 6 | Почтовые алиасы, переадресация, catch-all |
| Управление сообщениями | 7 | Отправка, получение, поиск, удаление сообщений |
| Календари и контакты | 4 | Доступ CalDAV/CardDAV через API |
| Логи и аналитика | 2 | Логи почты, отчеты о доставке |
Основные возможности API
Расширенный поиск:
API предоставляет мощные возможности поиска с синтаксисом запросов, похожим на Gmail:
GET /v1/messages?q=subject:invoice+has:attachment+after:2024-01-01+before:2024-04-01
Поддерживаемые операторы поиска:
from:- Поиск по отправителюto:- Поиск по получателюsubject:- Поиск по темеhas:attachment- Сообщения с вложениямиis:unread- Непрочитанные сообщенияis:starred- Помеченные сообщенияafter:- Сообщения после датыbefore:- Сообщения до датыlabel:- Сообщения с меткойfilename:- Имя файла вложения
Управление событиями календаря:
GET /v1/calendar-events
POST /v1/calendar-events
PUT /v1/calendar-events/:id
DELETE /v1/calendar-events/:id
Интеграции с вебхуками:
API поддерживает вебхуки для уведомлений в реальном времени о событиях электронной почты (получено, отправлено, отклонено и т.д.).
Аутентификация:
- Аутентификация с помощью API ключа
- Поддержка OAuth 2.0
- Ограничение скорости: 1000 запросов в час
Формат данных:
- JSON запрос/ответ
- RESTful дизайн
- Поддержка пагинации
Безопасность:
- Только HTTPS
- Ротация API ключей
- Белый список IP (опционально)
- Подпись запросов (опционально)
Архитектура API
Push-уведомления iOS
Tip
Forward Email поддерживает нативные push-уведомления iOS через XAPPLEPUSHSERVICE для мгновенной доставки писем.
Important
Уникальная функция: Forward Email — один из немногих open-source почтовых серверов, поддерживающих нативные push-уведомления iOS для почты, контактов и календарей через расширение IMAP XAPPLEPUSHSERVICE. Это было реверс-инжиниринг протокола Apple и обеспечивает мгновенную доставку на устройства iOS без разряда батареи.
Forward Email реализует проприетарное расширение Apple XAPPLEPUSHSERVICE, обеспечивая нативные push-уведомления для устройств iOS без необходимости фонового опроса.
Как это работает
XAPPLEPUSHSERVICE — нестандартное расширение IMAP, позволяющее приложению Mail на iOS получать мгновенные push-уведомления при поступлении новых писем.
Forward Email реализует интеграцию с проприетарным сервисом Apple Push Notification (APNs) для IMAP, позволяя приложению Mail на iOS получать мгновенные push-уведомления при поступлении новых писем.
Ключевые особенности
Мгновенная доставка:
- Push-уведомления приходят в течение секунд
- Нет фонового опроса, разряжающего батарею
- Работает даже при закрытом почтовом приложении
-
Мгновенная доставка: Письма, события календаря и контакты появляются на вашем iPhone/iPad сразу, а не по расписанию опроса
-
Энергоэффективность: Использует инфраструктуру push Apple вместо постоянных IMAP-соединений
-
Push по темам: Поддержка push-уведомлений для конкретных почтовых ящиков, а не только INBOX
-
Без сторонних приложений: Работает с нативными приложениями iOS Mail, Calendar и Contacts Нативная интеграция:
-
Встроено в приложение iOS Mail
-
Не требуются сторонние приложения
-
Бесшовный пользовательский опыт
Ориентировано на конфиденциальность:
- Токены устройств зашифрованы
- Содержимое сообщений не передается через APNS
- Отправляется только уведомление о "новой почте"
Энергоэффективность:
- Нет постоянного опроса IMAP
- Устройство спит до получения уведомления
- Минимальное влияние на батарею
Что делает это особенным
Important
Большинство почтовых провайдеров не поддерживают XAPPLEPUSHSERVICE, заставляя устройства iOS опрашивать почту каждые 15 минут.
Большинство open-source почтовых серверов (включая Dovecot, Postfix, Cyrus IMAP) НЕ поддерживают push-уведомления iOS. Пользователи вынуждены либо:
- Использовать IMAP IDLE (поддерживает открытое соединение, расходует батарею)
- Использовать опрос (проверка каждые 15-30 минут, задержка уведомлений)
- Использовать проприетарные почтовые приложения с собственной инфраструктурой push
Forward Email обеспечивает такой же мгновенный опыт push-уведомлений, как коммерческие сервисы, например Gmail, iCloud и Fastmail.
Сравнение с другими провайдерами:
| Провайдер | Поддержка Push | Интервал опроса | Влияние на батарею |
|---|---|---|---|
| Forward Email | ✅ Нативный Push | Мгновенно | Минимальное |
| Gmail | ✅ Нативный Push | Мгновенно | Минимальное |
| iCloud | ✅ Нативный Push | Мгновенно | Минимальное |
| Yahoo | ✅ Нативный Push | Мгновенно | Минимальное |
| Outlook.com | ❌ Опрос | 15 минут | Среднее |
| Fastmail | ❌ Опрос | 15 минут | Среднее |
| ProtonMail | ⚠️ Только через Bridge | Через Bridge | Высокое |
| Tutanota | ❌ Только приложение | Н/Д | Н/Д |
Детали реализации
Ответ IMAP CAPABILITY:
* CAPABILITY IMAP4rev1 ... XAPPLEPUSHSERVICE ...
Процесс регистрации:
- Приложение iOS Mail обнаруживает возможность XAPPLEPUSHSERVICE
- Приложение регистрирует токен устройства в Forward Email
- Forward Email сохраняет токен и связывает его с аккаунтом
- При поступлении новой почты Forward Email отправляет push через APNS
- iOS пробуждает приложение Mail для получения новых сообщений
Безопасность:
- Токены устройств зашифрованы в состоянии покоя
- Токены истекают и обновляются автоматически
- Содержимое сообщений не раскрывается APNS
- Поддерживается сквозное шифрование
- Расширение IMAP:
XAPPLEPUSHSERVICE - Исходный код: WildDuck Issue #711
- Настройка: Автоматическая — не требует конфигурации, работает из коробки с приложением iOS Mail
Сравнение с другими сервисами
| Сервис | Поддержка iOS Push | Метод |
|---|---|---|
| Forward Email | ✅ Да | XAPPLEPUSHSERVICE (обратная разработка) |
| Gmail | ✅ Да | Проприетарное приложение Gmail + Google push |
| iCloud Mail | ✅ Да | Нативная интеграция Apple |
| Outlook.com | ✅ Да | Проприетарное приложение Outlook + Microsoft push |
| Fastmail | ✅ Да | XAPPLEPUSHSERVICE |
| Dovecot | ❌ Нет | Только IMAP IDLE или опрос |
| Postfix | ❌ Нет | Только IMAP IDLE или опрос |
| Cyrus IMAP | ❌ Нет | Только IMAP IDLE или опрос |
Push Gmail:
Gmail использует проприетарную систему push, которая работает только с приложением Gmail. Приложение iOS Mail должно опрашивать IMAP-серверы Gmail.
Push iCloud:
iCloud имеет нативную поддержку push, аналогичную Forward Email, но только для адресов @icloud.com.
Outlook.com не поддерживает XAPPLEPUSHSERVICE, поэтому iOS Mail опрашивает почту каждые 15 минут.
Fastmail:
Fastmail не поддерживает XAPPLEPUSHSERVICE. Пользователи должны использовать приложение Fastmail для push-уведомлений или принимать задержки при опросе каждые 15 минут.
Тестирование и проверка
Тесты возможностей протокола
Note
В этом разделе представлены результаты наших последних тестов возможностей протоколов, проведённых 22 января 2026 года.
В этом разделе содержатся фактические ответы CAPABILITY/CAPA/EHLO от всех протестированных провайдеров. Все тесты были проведены 22 января 2026 года.
Эти тесты помогают проверить заявленную и фактическую поддержку различных почтовых протоколов и расширений у основных провайдеров.
Методология тестирования
Тестовая среда:
- Дата: 22 января 2026 года, 02:37 UTC
- Местоположение: экземпляр AWS EC2
- IPv4: 54.167.216.197
- IPv6: 2600:4040:46da:9a00:b19e:3ad4:426c:2f48
- Инструменты: OpenSSL s_client, bash-скрипты
Тестируемые провайдеры:
- Forward Email
- Gmail
- Outlook.com
- iCloud
- Fastmail
- Yahoo/AOL (Verizon)
Тестовые скрипты
Для полной прозрачности ниже приведены точные скрипты, использованные для этих тестов.
Скрипт теста возможностей IMAP
#!/bin/bash
# IMAP Capability Test Script
# Tests IMAP CAPABILITY for various email providers
echo "========================================="
echo "IMAP CAPABILITY TEST"
echo "Date: $(date -u +"%Y-%m-%d %H:%M:%S UTC")"
echo "========================================="
echo ""
# Gmail
echo "--- Gmail (imap.gmail.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.gmail.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""
# Outlook.com
echo "--- Outlook.com (outlook.office365.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect outlook.office365.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""
# iCloud
echo "--- iCloud (imap.mail.me.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.mail.me.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""
# Fastmail
echo "--- Fastmail (imap.fastmail.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.fastmail.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""
# Yahoo
echo "--- Yahoo (imap.mail.yahoo.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.mail.yahoo.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""
# Forward Email
echo "--- Forward Email (imap.forwardemail.net:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.forwardemail.net:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""
echo "========================================="
echo "Test completed"
echo "========================================="
Скрипт теста возможностей POP3
#!/bin/bash
# POP3 Capability Test Script
# Tests POP3 CAPA for various email providers
echo "========================================="
echo "POP3 CAPABILITY TEST"
echo "Date: $(date -u +"%Y-%m-%d %H:%M:%S UTC")"
echo "========================================="
echo ""
# Gmail
echo "--- Gmail (pop.gmail.com:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect pop.gmail.com:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""
# Outlook.com
echo "--- Outlook.com (outlook.office365.com:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect outlook.office365.com:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""
# iCloud (Примечание: iCloud не поддерживает POP3)
echo "--- iCloud (No POP3 support) ---"
echo "iCloud не поддерживает POP3"
echo ""
# Fastmail
echo "--- Fastmail (pop.fastmail.com:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect pop.fastmail.com:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""
# Yahoo
echo "--- Yahoo (pop.mail.yahoo.com:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect pop.mail.yahoo.com:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""
# Forward Email
echo "--- Forward Email (pop3.forwardemail.net:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect pop3.forwardemail.net:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""
echo "========================================="
echo "Test completed"
echo "========================================="
Скрипт тестирования возможностей SMTP
#!/bin/bash
# Скрипт тестирования возможностей SMTP
# Тестирует SMTP EHLO для различных почтовых провайдеров
echo "========================================="
echo "ТЕСТ ВОЗМОЖНОСТЕЙ SMTP"
echo "Дата: $(date -u +"%Y-%m-%d %H:%M:%S UTC")"
echo "========================================="
echo ""
# Gmail
echo "--- Gmail (smtp.gmail.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.gmail.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""
# Outlook.com
echo "--- Outlook.com (smtp.office365.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.office365.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""
# iCloud
echo "--- iCloud (smtp.mail.me.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.mail.me.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""
# Fastmail
echo "--- Fastmail (smtp.fastmail.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.fastmail.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""
# Yahoo
echo "--- Yahoo (smtp.mail.yahoo.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.mail.yahoo.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""
# Forward Email
echo "--- Forward Email (smtp.forwardemail.net:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.forwardemail.net:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""
echo "========================================="
echo "Тест завершён"
echo "========================================="
Итоги тестирования
IMAP (ВОЗМОЖНОСТИ)
Forward Email
* CAPABILITY IMAP4rev1 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN CHILDREN ENABLE ID IDLE NAMESPACE QUOTA SASL-IR UNSELECT XLIST XAPPLEPUSHSERVICE
Gmail
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE
iCloud
* OK [CAPABILITY XAPPLEPUSHSERVICE IMAP4 IMAP4rev1 SASL-IR AUTH=ATOKEN AUTH=PLAIN AUTH=ATOKEN2 AUTH=XOAUTH2]
* CAPABILITY IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+
Fastmail
* CAPABILITY IMAP4rev1 ACL ANNOTATE-EXPERIMENT-1 CATENATE CONDSTORE ENABLE ESEARCH ESORT I18NLEVEL=1 ID IDLE LIST-EXTENDED LIST-STATUS LITERAL+ LOGINDISABLED MULTIAPPEND NAMESPACE QRESYNC QUOTA RIGHTS=ektx SASL-IR SORT SPECIAL-USE THREAD=ORDEREDSUBJECT UIDPLUS UNSELECT WITHIN X-RENAME XLIST
Yahoo/AOL (Verizon)
* CAPABILITY IMAP4rev1 IDLE NAMESPACE QUOTA ID XLIST CHILDREN UIDPLUS MOVE CONDSTORE ESEARCH ENABLE LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE UNSELECT XAPPLEPUSHSERVICE
POP3 (CAPA)
Forward Email
+OK
CAPA
TOP
USER
UIDL
EXPIRE 30
IMPLEMENTATION ForwardEmail
.
Gmail
+OK
CAPA
TOP
USER
UIDL
EXPIRE 30
IMPLEMENTATION Gpop
.
+OK
CAPA
TOP
USER
UIDL
SASL PLAIN XOAUTH2
.
Fastmail
+OK
CAPA
TOP
USER
UIDL
EXPIRE 30
IMPLEMENTATION Cyrus
.
SMTP (EHLO)
Forward Email
250-smtp.forwardemail.net
250-PIPELINING
250-SIZE 52428800
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 CHUNKING
Gmail
250-smtp.gmail.com at your service
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
250-SN4PR13CA0005.outlook.office365.com Hello [x.x.x.x]
250-SIZE 157286400
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250 SMTPUTF8
Fastmail
250-smtp.fastmail.com
250-PIPELINING
250-SIZE 78643200
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 CHUNKING
Yahoo/AOL (Verizon)
250-smtp.mail.yahoo.com
250-PIPELINING
250-SIZE 41943040
250-8BITMIME
250-ENHANCEDSTATUSCODES
250-STARTTLS
Подробные результаты тестирования
Результаты тестирования IMAP
Gmail:
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN AUTH=OAUTHBEARER
Outlook.com:
* CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+
iCloud:
* CAPABILITY XAPPLEPUSHSERVICE IMAP4 IMAP4rev1 SASL-IR AUTH=ATOKEN AUTH=PLAIN AUTH=ATOKEN2 AUTH=XOAUTH2
Fastmail: Время ожидания соединения истекло. См. примечания ниже.
Yahoo:
* CAPABILITY IMAP4rev1 SASL-IR AUTH=PLAIN AUTH=XOAUTH2 AUTH=OAUTHBEARER ID MOVE NAMESPACE XYMHIGHESTMODSEQ UIDPLUS LITERAL+ CHILDREN UNSELECT X-MSG-EXT OBJECTID IDLE ENABLE UIDONLY X-ALL-MAIL X-UIDONLY LIST-EXTENDED LIST-STATUS SPECIAL-USE PARTIAL APPENDLIMIT=41697280
Forward Email:
* CAPABILITY XAPPLEPUSHSERVICE IMAP4rev1 APPENDLIMIT=52428800 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN CHILDREN CONDSTORE ENABLE ID IDLE MOVE NAMESPACE QUOTA SASL-IR SPECIAL-USE UIDPLUS UNSELECT UTF8=ACCEPT XLIST
Результаты тестирования POP3
Gmail: Соединение не вернуло ответ CAPA без аутентификации.
Outlook.com: Соединение не вернуло ответ CAPA без аутентификации.
iCloud: Не поддерживается.
Fastmail: Время ожидания соединения истекло. См. примечания ниже.
Yahoo:
+OK CAPA list follows... SASL PLAIN XOAUTH2
Forward Email: Соединение не вернуло ответ CAPA без аутентификации.
Результаты тестирования SMTP
Gmail:
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
Outlook.com:
250-DSN
iCloud:
250-DSN
Fastmail:
250 AUTH PLAIN LOGIN XOAUTH2 OAUTHBEARER
Yahoo:
250 AUTH PLAIN LOGIN XOAUTH2 OAUTHBEARER
Forward Email:
250-DSN, 250-REQUIRETLS
Примечания к результатам тестирования
Note
Важные наблюдения и ограничения, выявленные в ходе тестирования.
-
Тайм-ауты Fastmail: Соединения с Fastmail прерывались по тайм-ауту во время тестирования, вероятно, из-за ограничения скорости или ограничений брандмауэра с IP-адреса тестового сервера. Из документации известно, что Fastmail имеет надежную поддержку IMAP/POP3/SMTP.
-
Ответы CAPA для POP3: Несколько провайдеров (Gmail, Outlook.com, Forward Email) не возвращали ответы CAPA без аутентификации. Это распространённая практика безопасности для POP3 серверов.
-
Поддержка DSN: Только Outlook.com, iCloud и Forward Email явно указывают поддержку DSN в ответах SMTP EHLO. Это не означает, что другие провайдеры не поддерживают DSN, но они не рекламируют это.
-
REQUIRETLS: Только Forward Email явно указывает поддержку REQUIRETLS с пользовательским флажком для принудительного использования TLS. Другие провайдеры могут поддерживать это внутренне, но не рекламируют в EHLO.
-
Тестовая среда: Тесты проводились с экземпляра AWS EC2 (IP: 54.167.216.197 IPv4, 2600:4040:46da:9a00:b19e:3ad4:426c:2f48 IPv6) 22 января 2026 года в 02:37 UTC.
Резюме
Forward Email обеспечивает всестороннюю поддержку протоколов RFC для всех основных стандартов электронной почты:
- IMAP4rev1: 16 поддерживаемых RFC с задокументированными намеренными отличиями
- POP3: 4 поддерживаемых RFC с постоянным удалением в соответствии с RFC
- SMTP: 11 поддерживаемых расширений, включая SMTPUTF8, DSN и PIPELINING
- Аутентификация: Полная поддержка DKIM, SPF, DMARC, ARC
- Безопасность транспорта: Полная поддержка MTA-STS и REQUIRETLS, частичная поддержка DANE
- Шифрование: Поддержка OpenPGP v6 и S/MIME
- Календарь: Полная поддержка CalDAV, CardDAV и VTODO
- Доступ к API: Полный REST API с 39 конечными точками для прямого доступа к базе данных
- Push-уведомления iOS: Родные push-уведомления для почты, контактов и календарей через
XAPPLEPUSHSERVICE
Ключевые отличия
Tip
Forward Email выделяется уникальными функциями, отсутствующими у других провайдеров.
Что делает Forward Email уникальным:
- Квантово-безопасное шифрование — единственный провайдер с зашифрованными почтовыми ящиками SQLite на ChaCha20-Poly1305
- Архитектура с нулевым знанием — ваш пароль шифрует почтовый ящик; мы не можем его расшифровать
- Бесплатные пользовательские домены — отсутствие ежемесячных платежей за почту на собственном домене
- Поддержка REQUIRETLS — пользовательский флажок для принудительного использования TLS на всем пути доставки
- Всесторонний API — 39 REST API конечных точек для полного программного управления
- Push-уведомления iOS — нативная поддержка XAPPLEPUSHSERVICE для мгновенной доставки
- Открытый исходный код — полный исходный код доступен на GitHub
- Ориентация на конфиденциальность — отсутствие майнинга данных, рекламы и отслеживания
- Изолированное шифрование: Единственный почтовый сервис с индивидуально зашифрованными SQLite почтовыми ящиками
- Соответствие RFC: Приоритет стандартизации над удобством (например, POP3 DELE)
- Полный API: Прямой программный доступ ко всем данным электронной почты
- Открытый исходный код: Полностью прозрачная реализация
Краткое описание поддержки протоколов:
| Категория | Уровень поддержки | Подробности |
|---|---|---|
| Основные протоколы | ✅ Отлично | Полная поддержка IMAP4rev1, POP3, SMTP |
| Современные протоколы | ⚠️ Частично | Частичная поддержка IMAP4rev2, JMAP не поддерживается |
| Безопасность | ✅ Отлично | DKIM, SPF, DMARC, ARC, MTA-STS, REQUIRETLS |
| Шифрование | ✅ Отлично | OpenPGP, S/MIME, шифрование SQLite |
| CalDAV/CardDAV | ✅ Отлично | Полная синхронизация календарей и контактов |
| Фильтрация | ✅ Отлично | Sieve (24 расширения) и ManageSieve |
| API | ✅ Отлично | 39 REST API эндпоинтов |
| Push | ✅ Отлично | Родные push-уведомления iOS |