Как устроено
Из чего состоит узел, как письмо проходит от отправителя до ящика и почему состояние хранится в базе.
Компоненты
| Компонент | Роль |
|---|---|
| Postfix | принимает почту по 25 порту, проверяет получателя по базе доменов, отдаёт Dovecot по LMTP, отправляет наружу |
| OpenDKIM | подписывает исходящие письма ключом домена |
| rspamd | проверяет входящие: спам, DKIM, SPF, DMARC, антивирус |
| Dovecot | хранит письма в Maildir, отдаёт по IMAP, проверяет пароли, считает квоты, применяет Sieve |
| Caddy | держит сертификаты, публикует панель, веб-почту и календари |
| mailpanel | панель управления, локальный порт 8780 |
| Roundcube | веб-почта |
| Radicale | CalDAV и CardDAV, доступ через шлюз |
| SQLite | единственный источник правды о состоянии |
Путь входящего письма
- Чужой сервер соединяется с портом 25, Postfix проверяет, существует ли получатель в базе доменов.
- Письмо проходит milter rspamd: баллы спама, проверка DKIM/SPF/DMARC отправителя, антивирус.
- Если баллов больше порога, письмо помечается (и при включённом фильтре уходит в Junk).
- Postfix отдаёт письмо Dovecot по LMTP, тот проверяет квоту и раскладывает по папкам по Sieve.
- Клиент забирает письмо по IMAP с 993 порта.
Путь исходящего письма
- Клиент отправляет на 465 или 587 с логином и паролем.
- Postfix проверяет, что отправитель — существующий ящик или алиас своего домена.
- OpenDKIM подписывает письмо ключом домена отправителя.
- Postfix ищет MX получателя и отправляет; при отказе письмо остаётся в очереди и повторяется.
Почему база, а не файлы
Классический Postfix хранит домены в текстовых файлах, Dovecot — своих. Чтобы перенести сервер, надо собрать десяток файлов и не забыть ключи. Здесь состояние живёт в одном SQLite: экспорт — это архив с базой и ключами, импорт — распаковка и пересборка конфигов.
Побочный плюс: одинаковое состояние на нескольких узлах даёт одинаковые ключи DKIM, а значит DNS-записи не меняются при переезде.
Куда смотреть дальше
Порты и сеть — отдельная страница. Журналы, проверки и алерты — «Наблюдение». Файлы, службы и настройки — «Настройки и файлы».
Ограничения архитектуры
- один узел — один Postfix, балансировки внутри нет;
- нет кластерной файловой системы: письма живут на локальном диске и копируются репликацией;
- состояние меняется только через утилиту или панель, прямые правки конфигов затираются;
- антивирус ClamAV требует внешней загрузки баз; при блокировке зеркал он выключается, остальное работает.