Запуск и остановка MTA

PowerMTA startup and shutdown
Останавливается доставка, а не письма

MTA запускается штатными средствами платформы: службой на Windows, скриптом запуска на Unix.

После запуска процессов должно быть два. Сам MTA и сторож, который поднимет его после падения (pmtawatch). Если сторожа нет, узел теряет способность вставать самостоятельно — а заметить это можно только проверив.

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

Запуск с неверной конфигурацией не проходит. MTA не берёт «последнюю рабочую» и не стартует с умолчаниями — он просто не поднимается, а причину пишет в отдельный файл (startup-error-log).

Главная ловушка — остановить узел и забыть про срок отказа. Письма в спуле переживут остановку, но их срок продолжает идти: узел, простоявший дольше, чем задан срок отказа, вернётся к очереди, часть которой уже нельзя доставить — она отобьётся по времени сразу после запуска. Короткая остановка безобидна, многочасовая — нет.
Что делает Хаб. Правки применяет перезагрузкой настроек, которая доставку не прерывает (config-reload). Остановить, запустить и перезапустить службу MTA можно из кабинета — раздел «Управление», кнопки «Остановить службу MTA», «Запустить службу MTA» и «Перезапустить службу MTA»: Хаб выполняет systemctl на узле по SSH и проверяет, что служба пришла в нужное состояние.

Сам по себе Хаб службу не перезапускает — и директив, которые требуют перезапуска службы, в его шаблонах нет. Строки веб-монитора требуют перезапуска монитора, и его Хаб делает сам после каждого применения.

⚠️ Проверка, что сторож поднялся вместе с MTA, остаётся ручной: в телеметрии есть только сам MTA.

Рекомендуемые значения

Что помнить про остановку:

Что Как ведёт себя
письма в очереди остаются на диске, подхватываются при запуске
срок отказа продолжает идти, пока узел стоит
входящие соединения не принимаются, подающая сторона получит отказ
сторож должен подняться вместе с MTA — проверять

Длину остановки соизмерять со сроком отказа. Простой в четверть срока безобиден; простой длиннее срока означает, что часть очереди отобьётся сразу после старта.

Подающую сторону предупреждать. Пока узел стоит, площадки получают отказ на подаче — и что они с ним сделают, зависит от них.

Разбор поведения при остановке и совет про соизмерение со сроком наши. Из руководства здесь способы запуска на обеих платформах, требование проверить наличие сторожа и то, что письма остаются на диске.
Пример в конфигурации
# после запуска процессов должно быть два
/etc/init.d/pmta start
ps -ef | grep -E '[p]mtad|[p]mtawatch'
Выделенная строка и есть проверка, которую пропускают чаще всего. Один процесс вместо двух означает, что узел потерял способность подниматься после падения сам.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

Типичные ошибки и проблемы

что делают не так и чем это кончается3 ошибки▶

Останавливают узел дольше срока отказа

§ 4.1

Чем чреватоПисьма переживут остановку, но их срок продолжает идти. Узел, простоявший дольше срока отказа, вернётся к очереди, часть которой отобьётся по времени сразу после запуска.
Как заметитьСразу после старта всплеск отказов по истечении срока, при этом приёмники в порядке.
Как правильноСоизмерять длину остановки со сроком отказа. Для правок конфигурации использовать перезагрузку — она не прерывает доставку вовсе.

Не проверяют, поднялся ли сторож

§ 4.1

Чем чреватоУзел работает, но лишается способности вставать после падения сам. Обнаружится это в момент первого падения — то есть тогда, когда узел просто останется лежать.
Как заметитьПроцессов один вместо двух; узел не поднялся после сбоя.
Как правильноПроверять оба процесса после каждого запуска.

Ждут, что при сломанной конфигурации узел стартует на умолчаниях

§ 4.2.1

Чем чреватоНе стартует вовсе. MTA не берёт последнюю рабочую конфигурацию и не подставляет умолчания — он останавливается и пишет причину в отдельный файл.
Как заметитьПосле правки конфигурации узел не поднимается, в сводке он недоступен.
Как правильноПроверять разбор до запуска. При отказе читать файл отказов запуска, а не основной журнал.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
⇄

Связанные записи

3 связи

Как проверить на узле
Проверка после запуска — три вопроса подряд:
ps -ef | grep -E '[p]mtad|[p]mtawatch'
pmta show status
Первая отвечает, поднялся ли сторож. Вторая — что MTA работает, когда запущен и сколько получателей в очередях: если остановка была долгой, часть писем отобьётся по сроку сразу после старта.
В Хабе
Цена ошибки
с перерывом: применение прерывает работу узла
Сценарии
Жизненный цикл конфигурации · Аварийная остановка