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

Второй узел и репликация

Второй сервер даёт две вещи: копию состояния (домены, ящики, ключи) и копию писем. Состояние переносится бандлом, письма — синхронизацией Dovecot.

Когда это нужно

Шаг 1. Подготовка

Второй сервер ставится тем же установщиком с тем же почтовым доменом. Ключи DKIM будут другие — это нормально, дальше они перезапишутся из бандла.

# на первом узле
mailnode nodes add mx2 root@10.0.0.2
mailnode sync

sync экспортирует состояние и разворачивает его на втором узле по ssh. Нужен доступ по ключу без пароля и те же пути (/opt/mailnode).

Шаг 2. Письма

mailnode replicate                 # все ящики на все узлы
mailnode replicate --target mx2    # только на конкретный
mailnode replicate --dry-run       # показать, что будет делать

Работает через doveadm sync: копируются папки и флаги, удаления передаются, если синхронизация двусторонняя. Первый прогон долгий — копируется вся почта.

Шаг 3. Расписание

Установщик ставит таймер mailnode-replicate.timer, если при установке указан второй узел. Он гоняет репликацию раз в час. Проверить:

systemctl list-timers | grep mailnode
journalctl -u mailnode-replicate -n 30

Ограничения, о которых надо знать

Глобальный фильтр спама ломает репликацию На Dovecot 2.4 глобальный sieve_script приводит к ошибке Mailbox attribute iteration failed. Перед включением репликации выполните:
mailnode config set spam_to_junk 0
mailnode render
После этого спам помечается заголовком, но не раскладывается по Junk автоматически.

Переключение на второй узел

  1. Убедитесь, что последняя репликация прошла: mailnode replicate --dry-run показывает пусто.
  2. Поменяйте A-запись mail.example.ru на IP второго сервера.
  3. Проверьте сертификат: mailnode tls show, при необходимости mailnode tls caddy.
  4. Проверьте отправку и приём.

Проверка, что всё сошлось

mailnode nodes ls
mailnode bundle-info /root/node.tar.gz
doveadm sync -u ivan@example.ru ssh root@10.0.0.2 doveadm dsync-server -u ivan@example.ru

Последняя команда — то же, что делает replicate, но для одного ящика: удобно, когда надо быстро проверить связь.