Адреса отправки через API настройки

VirtualMTA operations
Тот же конструкт, управляемый по HTTP

Создаёт, читает, дополняет и удаляет адреса отправки запросами: адрес описывается набором строк директив в JSON.

Пути. GET /config/vmtas — имена адресов, заведённых через API; GET, POST, PUT, PATCH и DELETE на /config/vmtas/имя — прочитать, создать, заменить, дополнить и удалить адрес вместе с вложенными доменами; DELETE /config/vmtas/имя/key/директива — убрать все строки одной директивы.

Строки ложатся в порядке добавления, и одна директива может повторяться.

Сначала включают: http-enable-api-config yes, по умолчанию выключено. Каждое изменение MTA проверяет перечитыванием и, если оно не прошло, изменение отклоняет.

Тот же <virtual-mta>, что и в файле, только заведённый запросом, — и править его дальше можно только запросом.

Чтение пройдёт без ключа с адреса уровня operator и выше в http-access; изменение — только с ключом из http-api-key.

Главная ловушка — имя, уже занятое в файле. Перечень GET /config/vmtas показывает только адреса, заведённые через API: по нему нельзя проверить, свободно ли имя, — только по конфигурации целиком.
Что делает Хаб. Не пользуется: адреса отправки Хаб пишет в файл /etc/pmta/virtualhost.txt и перечитывает конфигурацию, а http-enable-api-config на узлах не включён.
Рекомендуемые значения

Какой метод что делает:

Метод Путь Действие
GET /config/vmtas имена адресов, заведённых через API
GET …/имя строки директив адреса
POST …/имя создать; если адрес есть — ошибка
PUT …/имя заменить строки целиком
PATCH …/имя дописать строки
DELETE …/имя удалить вместе со вложенными доменами
DELETE …/имя/key/директива убрать все строки директивы
Пути, методы, порядок строк и проверка перечитыванием — из руководства (§ 8.3, § 8.3.3). Разбор про имена из файла — наш.
Пример в конфигурации
# завести адрес отправки запросом
curl -s -X POST 'http://127.0.0.1:8080/config/vmtas/vmta1' -H 'X-API-Key: KEY' -H 'Content-Type: application/json' -d '{"directives":["smtp-source-host 192.0.2.10 mta1.example.com"]}'
Каждый элемент массива — строка директивы, как в файле. MTA перечитает конфигурацию сам и при ошибке отклонит изменение.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
Посмотреть, что заведено через API:
curl -s 'http://127.0.0.1:8080/config/vmtas'
curl -s 'http://127.0.0.1:8080/config/vmtas/vmta1'
Первый ответ — имена адресов из API, второй — их строки. Адресов из файла конфигурации здесь нет.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Ротация адресов отправки · Прогрев адресов