Настройка через API и файл не сходятся

критично

Configuration API semantics
Два источника правды — и они не мирятся

Настройку узла можно менять двумя способами — файлом и запросами к API настройки, — и совмещать их нельзя: то, что заведено запросом, правится только запросом и в файле конфигурации не видно.

Каждое изменение проверяет себя само: после него MTA перечитывает конфигурацию, и если перечитывание не прошло, изменение отклоняется, а ошибка возвращается в ответе. Изменение либо действует, либо его нет.

Состояние API хранится отдельно — в /var/lib/pmta/config-api, записывается при запуске и каждом перечитывании. Выключенный API игнорирует заведённое, но не удаляет: включат снова — оно вернётся.

Главная ловушка — заводить одно и то же двумя способами. Список или адрес отправки, заведённый запросом, файлом не виден и файлом не правится: правки «одного» объекта живут в разных местах, и ни одно не описывает узел целиком.
Что делает Хаб. Правит только файл и хранит его версии; объекты, заведённые через API, в эти версии и откат не попали бы — поэтому смешивать два способа нельзя.
Рекомендуемые значения

Файл и API настройки:

Свойство Файл API настройки
правка файлом целиком по объекту
проверка отдельным шагом перечитывание при каждом изменении
хранение /etc/pmta /var/lib/pmta/config-api
что охватывает всё списки адресов и адреса отправки с доменами
Правка только через API, автоматическое перечитывание, отказ при ошибке, хранение и поведение при выключении — из руководства (§ 8.3). Сравнение с файлом — наше.
Пример в конфигурации
# включить API настройки
http-enable-api-config yes
По умолчанию API выключен; для любых изменений нужен ключ из http-api-key.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
Посмотреть, что заведено через API:
ls -l /var/lib/pmta/config-api/
Файлы в этом каталоге — вся настройка, созданная запросами; в /etc/pmta её нет.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Жизненный цикл конфигурации · Подавление адресов · Разделение отправителей
Важность
критично