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

Обновления и откат

Обновление — одна команда. Архив, контрольная сумма и манифест лежат на сайте проекта 0e5.ru, запасная копия — на зеркале fthost.ru.

Проверить, есть ли новое

mailnode update --check

Ответ вида установлено: 1.0.5, доступно: 1.0.6. Если версии равны — обновляться некуда.

Обновиться

mailnode update

Что происходит по шагам:

  1. читается манифест latest.json (сайт проекта, затем зеркало);
  2. скачивается архив релиза, проверяется SHA256;
  3. старые файлы копируются в /opt/mailnode/state/backup-ГГГГММДД-ЧЧММСС;
  4. подменяются mailnode.py, mailpanel.py, caldav_gateway.py;
  5. конфиги пересобираются, службы перезапускаются.
Если скачивание рвётся Команда пробует несколько источников: адрес из манифеста, сайт проекта 0e5.ru, зеркало fthost.ru. Если ни один не отдал архив — обновление отменяется, ничего не меняется.

Принудительно и без пересборки

mailnode update --force            # поставить ту же версию заново
mailnode update --no-render        # только файлы, конфиги не трогать
mailnode update --source https://свой-сервер/update

Свой канал обновлений задаётся настройкой update_source — удобно, когда серверы не имеют выхода в интернет.

Откат

Файлы предыдущей версии лежат в /opt/mailnode/state/backup-*:

ls -1 /opt/mailnode/state/ | grep backup
cp /opt/mailnode/state/backup-20261026-150100/*.py /opt/mailnode/
install -m755 /opt/mailnode/mailnode.py /opt/mailnode/mailpanel.py /usr/local/bin/
mailnode render
systemctl restart mailpanel
Откат кода не откатывает базу Схема базы обновляется вперёд и совместима: старый код читает новую базу, но новые поля игнорирует. Если откатываетесь на версию младше 1.0, сначала сделайте бэкап базы: cp /opt/mailnode/state/mailnode.db /root/mailnode.db.bak

Автоматические обновления

По умолчанию установщик ставит таймер mailnode-update.timer — воскресенье 04:40. Проверить и выключить:

systemctl list-timers | grep mailnode-update
systemctl disable --now mailnode-update.timer

Где смотреть, что изменилось

Список релизов: 0e5.ru/update. В каждом релизе — архив, контрольная сумма и короткое описание изменений.