reload

критично

Применить изменённую конфигурацию, не останавливаясь
Безопасная операция — отказ означает «ничего не изменилось»

Команда перечитывает конфигурацию и включает её. Руководство даёт к ней и предпочтение, и гарантию.

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

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

Именно поэтому перезагрузку безопасно пробовать. Худшее, что случится, — настройки не поменяются, и об этом будет сказано в выводе команды. Для системы, которая правит конфигурацию автоматически, такое поведение стоит дороже удобства: неудачная правка не оставляет узел в промежуточном состоянии.

Не всё подхватывается перезагрузкой. Немногим директивам нужен перезапуск, и каждая такая помечена в своём разделе руководства (config-reload).

Главная ловушка — считать, что успешная перезагрузка означает верную конфигурацию. Она означает только, что файл разобрался. Настройка, синтаксически правильная и написанная не в тот блок, применится молча: строка окажется не там, где задумана, и работать будет не то, что ожидали. Отдельная проверка разбора этого тоже не поймает — она проверяет ту же грамматику.
Что делает Хаб. Вызывает по SSH — pmta reload после каждой доставки файлов на узел. Отправка при этом не прерывается. Та же команда — операция «Перечитать конфигурацию» в управлении, через POST /command с ключом узла.

Перед перечитыванием Хаб прогоняет test config и при ошибке возвращает прежние файлы, а после — проверяет, что MTA отвечает. Гарантия «не применяется наполовину» и делает схему безопасной: если перечитывание не прошло, узел остался на прежней конфигурации.

Вывод команды Хаб читает — по нему и по коду возврата определяется, применилась правка или нет.

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

Порядок применения правки:

Шаг Зачем
проверка разбора узнать об ошибке до применения
перезагрузка включить настройки, не прерывая отправку
чтение вывода убедиться, что она прошла, а не только была вызвана
проверка действующих значений грамматика верна ещё не значит «попало куда надо»

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

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

Порядок применения — наша рекомендация. Из руководства здесь предпочтение перезагрузки перед перезапуском и гарантия того, что конфигурация с ошибкой не применяется частично.
Пример в конфигурации
# правильный порядок: проверить, применить, убедиться
pmta test config
pmta reloadpmta show settings gmail.com/mta-news-1
Выделенная строка применяет настройки. Верхняя ловит ошибку до применения, нижняя отвечает на вопрос, который не поймает ни та ни другая, — попала ли строка в ту очередь, для которой писалась.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Считают успешную перезагрузку доказательством верной настройки

§ 6.3.5

Чем чреватоУспех означает, что файл разобрался. Настройка, написанная не в тот блок, синтаксически верна и применится молча — работать будет не то, что задумано, а ошибки не будет.
Как заметитьПравка применена, поведение узла не изменилось.
Как правильноПосле применения спрашивать действующие значения командами настроек очереди и адреса — они и покажут, куда попала строка.

Перезапускают вместо перезагрузки

§ 3.1

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

Не читают вывод команды

§ 6.3.5

Чем чреватоПри ошибке разбора команда не проходит, и узел остаётся на прежних настройках. Без чтения вывода это выглядит как успешное применение — а правка не действует.
Как заметитьИзменение конфигурации не даёт никакого эффекта, файл при этом выглядит правильным.
Как правильноЧитать вывод или проверять код возврата. У автоматики это обязательный шаг, а не желательный.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
Убедиться, что перезагрузка прошла, а не только была вызвана:
pmta reload
pmta show status | tail -1
Команда печатает «Configuration reloaded.»; при ошибке в файле перечитывание не проходит, узел остаётся на прежней конфигурации, а вывод называет ошибку.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Жизненный цикл конфигурации
Важность
критично