Phoenix Mailдокументация

Как устроено

Из чего состоит узел, как письмо проходит от отправителя до ящика и почему состояние хранится в базе.

Компоненты

КомпонентРоль
Postfixпринимает почту по 25 порту, проверяет получателя по базе доменов, отдаёт Dovecot по LMTP, отправляет наружу
OpenDKIMподписывает исходящие письма ключом домена
rspamdпроверяет входящие: спам, DKIM, SPF, DMARC, антивирус
Dovecotхранит письма в Maildir, отдаёт по IMAP, проверяет пароли, считает квоты, применяет Sieve
Caddyдержит сертификаты, публикует панель, веб-почту и календари
mailpanelпанель управления, локальный порт 8780
Roundcubeвеб-почта
RadicaleCalDAV и CardDAV, доступ через шлюз
SQLiteединственный источник правды о состоянии

Путь входящего письма

  1. Чужой сервер соединяется с портом 25, Postfix проверяет, существует ли получатель в базе доменов.
  2. Письмо проходит milter rspamd: баллы спама, проверка DKIM/SPF/DMARC отправителя, антивирус.
  3. Если баллов больше порога, письмо помечается (и при включённом фильтре уходит в Junk).
  4. Postfix отдаёт письмо Dovecot по LMTP, тот проверяет квоту и раскладывает по папкам по Sieve.
  5. Клиент забирает письмо по IMAP с 993 порта.

Путь исходящего письма

  1. Клиент отправляет на 465 или 587 с логином и паролем.
  2. Postfix проверяет, что отправитель — существующий ящик или алиас своего домена.
  3. OpenDKIM подписывает письмо ключом домена отправителя.
  4. Postfix ищет MX получателя и отправляет; при отказе письмо остаётся в очереди и повторяется.

Почему база, а не файлы

Классический Postfix хранит домены в текстовых файлах, Dovecot — своих. Чтобы перенести сервер, надо собрать десяток файлов и не забыть ключи. Здесь состояние живёт в одном SQLite: экспорт — это архив с базой и ключами, импорт — распаковка и пересборка конфигов.

Побочный плюс: одинаковое состояние на нескольких узлах даёт одинаковые ключи DKIM, а значит DNS-записи не меняются при переезде.

Куда смотреть дальше

Порты и сеть — отдельная страница. Журналы, проверки и алерты — «Наблюдение». Файлы, службы и настройки — «Настройки и файлы».

Ограничения архитектуры