Перейти к основному содержимому

Почта

Актуально для: SimpleTwo 0.9.x, mail 0.43 · Проверено: 27.09.2026

Почта SimpleTwo — две роли. mail держит ящики, очередь и базу; к нему подключаются клиенты. mx — граница: принимает почту из интернета, отправляет наружу, подписывает её DKIM и проверяет входящую. У mx нет ни базы, ни ящиков, только очередь на своём диске. Между ними — LMTP (в mail) и порт 2525 (в mx), закрытые для всех, кроме друг друга.

До записи MX в DNS

Пока в DNS нет записи MX на узел mx, почта из интернета к вам не идёт — и это правильно, пока не назначен ответственный за жалобы на злоупотребления (адреса abuse@ и postmaster@). Заведите их алиасами в identity на живых людей до того, как опубликуете MX.

1. Записи DNS и ключи DKIM​

Консоль → Почта → DNS почты показывает для каждого почтового домена записи, которые он должен опубликовать — MX, SPF, DMARC, DKIM, SRV, MTA-STS и TLS-RPT, — и проверяет каждую в DNS.

Ключи DKIM создаёт координатор: пару ed25519 и RSA 2048 на домен. Смена ключа — три шага:

  1. Новый ключ DKIM — появляется новая пара; опубликуйте её две записи.
  2. Активировать новый ключ — кнопка доступна, только когда новые записи видны в DNS.
  3. Старая пара выводится из работы; её записи можно удалить через семь дней, дата видна на карточке.

2. Устройства без пароля​

МФУ, ERP и системы мониторинга, которые не умеют входить с паролем, настраиваются в Консоль → Почта → Устройства почты: имя, сети, из которых машины подключаются к mx на порт 25, адреса, от имени которых им можно писать, и куда (только внутрь организации или куда угодно). Всё остальное подключается по паролю приложения на порты 587/465.

3. Фильтры содержимого​

Фильтры задаются переменной MX_FILTERS на узле mx — список JSON в порядке проверки:

[
{"name": "rspamd", "transport": "milter", "address": "inet:127.0.0.1:11332", "on_error": "open"},
{"name": "av", "transport": "icap", "address": "icap://av.corp.example:1344/respmod", "on_error": "closed"}
]
  • milter — rspamd, clamav-milter, spamass-milter. Письмо, которое фильтр пометил как спам (X-Spam: Yes и подобные, поле spam_signal), уходит в «Спам»; заголовки фильтра видны в служебных заголовках письма, сами байты письма не меняются.
  • icap — антивирус по RFC 3507. Чем продукт сообщает о находке, настраивается полем verdict (headers, header_patterns, on_modified_body, status_codes).
  • on_error — что делать, если фильтр не ответил: open — пропустить письмо без него (умолчание для антиспама), closed — ответить отправителю 451, чтобы он повторил позже (для антивируса).
  • on_virus — находка антивируса: quarantine (у ICAP по умолчанию) или reject.

Неверный список останавливает службу: фильтр, который настроен и молча не работает, — это почта, которую никто не проверил. Greylisting — модуль greylist rspamd с общим Redis для всех узлов mx; своего greylisting у mx нет.

4. DNS-списки блокировки​

Каждый клиент порта 25 проверяется по спискам MX_DNSBL_ZONES (по умолчанию zen.spamhaus.org). Клиент из списка получает 554 5.7.1 … blocked using <зона> на каждую команду MAIL. Адреса из MX_DNSWL_ZONES не проверяются.

Каждая зона проходит самопроверку при старте и раз в час. Зона, которая перестала отвечать как положено, отключается, и /healthz узла mx пишет причину. Чаще всего это запрос через публичный резолвер: Spamhaus такие отвергает. Резолвер узла должен быть своим. Для коммерческого использования Spamhaus нужен ключ DQS.

5. Карантин​

Письмо, в котором антивирус нашёл вирус, и письмо, которое фильтр отправил в карантин, задерживаются на сервере. Отправитель получает ответ, что письмо принято. Каждый получатель получает уведомление от postmaster: от кого письмо, тема, дата, причина и номер, который нужно назвать администратору.

Консоль → Почта → Карантин показывает задержанные письма. Выпустить письмо получателям или удалить его может только администратор. Каждое действие попадает в журнал аудита вместе с именем администратора. То, по чему никто не решил, удаляется через 30 дней (MAIL_QUARANTINE_DAYS).

6. Группы с внешними участниками​

Если в группе есть внешние адреса (партнёры), каждый из них получает свою копию письма. У копии обратный путь — служебный адрес группы вида sales+bounce.<токен>@corp.example, поэтому отказы внешних получателей возвращаются группе, а не тому, кто написал в группу.

  • Возврат записывается в журнал доставки на путь копии. Если в домене есть ящик postmaster@, возврат попадает в него.
  • Не пересылаются наружу: уведомления о недоставке, письма со спам-вердиктом, задержанные письма, а также вся почта группы, если у установки нет узла mx.
  • После пяти отказов подряд (в пределах недели друг от друга) внешний участник отключается: копии ему больше не уходят, журнал говорит почему. Включить его обратно может администратор.
  • Если отправитель подписывает почту только SPF и у его домена p=reject, получатель вне организации может отвергнуть копию. Это известное ограничение списков рассылки.

7. MTA-STS​

Если домен получателя публикует политику MTA-STS в режиме enforce, mx отправляет ему почту только на перечисленные в политике серверы, только по TLS и только при сертификате, действительном для имени сервера. Если это невозможно, письмо не уходит в открытом виде, а откладывается и повторяется. Политики хранятся на диске узла mx, их число видно в /healthz.

Свою политику домен публикует через координатор. Для этого в DNS почты есть три записи:

  • _mta-sts.<домен> — TXT с номером текущей политики. Номер меняется вместе с политикой, и запись нужно обновить.
  • mta-sts.<домен> — CNAME на координатор. Координатор сам получает сертификат для этого имени и отдаёт политику по https://mta-sts.<домен>/.well-known/mta-sts.txt. В политике перечислены все узлы mx.
  • _smtp._tls.<домен> — TXT для отчётов TLS-RPT на адрес tls-reports@<домен>. Заведите этот адрес алиасом на того, кто читает отчёты.

Режим политики выбирается там же. Начинайте с testing: отправители сообщают о сбоях, но почту доставляют. enforce включайте, когда отчёты неделю не показывают сбоев. При enforce отправитель хранит политику неделю и отправляет почту только на перечисленные в ней узлы. Новый узел mx он примет, когда увидит новый номер в _mta-sts. Поэтому, добавив узел, сразу обновите эту запись.

8. Журнал доставки​

Путь любого письма — от приёма на mx до ящика или удалённого сервера — ищется по номеру очереди любой стороны или по адресу. События mx накапливаются на диске узла и доходят до журнала, даже если кластер mail был недоступен.