Сторож, который перезапускает MTA

pmtawatch
Узел может упасть и вернуться, а вы об этом не узнаете

Руководство упоминает сторожа мимоходом — в объяснении, зачем обязательно задавать адрес ответственного. Но следствие из этой фразы гораздо больше её самой.

Узел умеет падать и подниматься самостоятельно. Сторож замечает падение и запускает MTA заново; отправка возобновляется без вмешательства человека.

И единственное документированное уведомление об этом — письмо. Отчёт о падении уходит на адрес ответственного, заданный директивой postmaster. Больше нигде это событие не отражается: в сводке состояния узел выглядит работающим, потому что он и правда работает.

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

Главная ловушка — некому читать письмо. Адрес ответственного либо не задан вовсе, либо указывает на ящик, который никто не открывает. Тогда отчёты о падениях уходят в никуда, и падения просто не существуют для тех, кто следит за парком. Причём адрес должен быть вне этого узла: отчёт о падении отправляет то, что упало, и локальный ящик может оказаться недоступен ровно в нужный момент.
Что делает Хаб. 🔴 Адрес ответственного не задаёт — директивы postmaster в конфигурации нет.

Значит отчётам сторожа уходить некуда: узел, упавший и поднявшийся, в кабинете не отличается от работавшего непрерывно. Телеметрия увидит разве что дыру в опросе, если падение попало между двумя замерами.

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

Хаб принимает почту на роль-адреса (postmaster@, abuse@, dmarc@) и гасит её — но это про входящие письма чужих систем, а не про исходящие отчёты сторожа.

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

Что нужно, чтобы механизм работал:

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

Адрес вне узла — не придирка. Отчёт о падении отправляет машина, которая только что падала; если письмо идёт через неё же, оно может не уйти вовсе.

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

Разбор про адрес вне узла и оценка «письмо — не лучший канал для парка» наши. Из руководства здесь само существование сторожа, автоматический перезапуск и отправка отчёта на адрес ответственного.
Пример в конфигурации
# единственное, что нужно сторожу, — куда писать
postmaster admin@example.net
Выделенная строка обязана указывать на ящик вне этого узла. Отчёт отправляет то, что упало, — путь до получателя не должен проходить через него же.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Оставляют адрес ответственного незаданным

§ 2.3

Чем чреватоОтчёты о падениях уходить некуда. Узел, падающий регулярно и поднимающийся за секунды, снаружи выглядит здоровым — и остаётся таким для всех, кто следит за парком.
Как заметитьВ отправке периодические короткие провалы без видимой причины, сводка состояния при этом в порядке.
Как правильноЗадать адрес ответственного — ящиком вне этого узла. Проверить время непрерывной работы: оно и покажет недавние подъёмы.

Указывают адрес на том же узле

§ 2.3

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

Считают работающий узел не падавшим

§ 2.3

Чем чреватоСторож поднимает MTA сам, и в сводке состояния узел выглядит работающим — потому что он работает. Падение видно только по времени непрерывной работы и по провалу в отправке.
Как заметитьОтчёты показывают дыры в отправке, узел при этом «в порядке».
Как правильноСмотреть время непрерывной работы, а не только состояние. И завести канал уведомления, который читают.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Наследование
Наследования у сторожа нет — он либо работает на узле, либо нет. Наследуется адрес ответственного: директива задаётся на уровне узла и области не имеет.
Как проверить на узле
Проверить, задан ли канал и не падал ли узел:
grep -n '^postmaster' /etc/pmta/config
pmta show status | grep -i 'uptime\|started'
Пустой вывод первой означает, что отчётам сторожа уходить некуда. Вторая покажет, сколько узел работает без перерыва: время меньше ожидаемого и есть след недавнего падения с автоматическим подъёмом.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Разобраться с доставляемостью · Разобрать зависшую очередь