Политика приёмника внутри адреса

VirtualMTA domain operations
Самый узкий уровень слияния

Создаёт, читает, дополняет и удаляет блоки <domain> внутри адреса отправки, заведённого через API.

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

Имя домена может содержать макросы — они не раскрываются, а переносятся в сгенерированный файл как есть. Звёздочка тоже годится: …/domains/*.

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

Сначала включают http-enable-api-config; изменение — только с ключом из http-api-key.

Главная ловушка — ждать раскрытия макроса в API. Имя вида yahoo.$tld хранится и отдаётся буквально, а раскрывает его MTA, читая сгенерированный файл, — по объявлению domain-macro. Перечень GET …/domains покажет одну строку с макросом, а не домены, которые она накроет.
Что делает Хаб. Не пользуется: блоки приёмника Хаб пишет в файлы конфигурации, а http-enable-api-config на узлах не включён.
Рекомендуемые значения

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

Метод Путь Действие
GET /config/vmtas/имя/domains домены адреса
GET …/domains/домен строки блока
POST …/domains/домен создать; если блок есть — ошибка
PUT …/domains/домен заменить строки целиком
PATCH …/domains/домен дописать строки
DELETE …/domains/домен удалить блок
DELETE …/domains/домен/key/директива убрать все строки директивы
Пути, методы и обращение с макросами — из руководства (§ 8.3.3.8–8.3.3.14); действие блока только для своего адреса и перекрытие пула — § 3.3.12–3.3.13. Разбор ловушки — наш.
Пример в конфигурации
# запретить подпись для одного приёмника внутри адреса отправки
curl -s -X PATCH 'http://127.0.0.1:8080/config/vmtas/vmta1/domains/example.com' -H 'X-API-Key: KEY' -H 'Content-Type: application/json' -d '{"directives":["dkim-sign no"]}'
PATCH дописывает строки в существующий блок; если блока ещё нет, его создают POST.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
Посмотреть блоки приёмника у адреса:
curl -s 'http://127.0.0.1:8080/config/vmtas/vmta1/domains'
curl -s 'http://127.0.0.1:8080/config/vmtas/vmta1/domains/example.com'
Ошибка «адреса нет» для адреса, который на узле работает, значит, что он заведён в файле: API видит только свои адреса и блок в чужой не вложит.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Настроить темп под провайдера