http-delivery-extra-headers

<domain>

Файл с дополнительными заголовками запроса
в конфигурации это строкаhttp-delivery-extra-headersвнутри блока <domain>
Куда положить заголовок авторизации

Необязательная строка для очереди вида http-delivery (type). Называет файл, из которого узел берёт дополнительные заголовки и добавляет их к запросу с письмом. Каждый заголовок — своей строкой в файле.

Ради чего она существует. В адресе http-delivery-url учётные данные запрещены руководством, а обработчик почти всегда требует авторизации. Файл заголовков — единственный предусмотренный способ её передать.

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

Главная ловушка — права на файл. В нём лежит рабочий ключ доступа к вашему обработчику, а читается он службой при каждой перезагрузке конфигурации. Файл с правами по умолчанию виден всем на узле; ключ из него уносится одной командой.
Что делает Хаб. Не пишет: очередей этого вида не заводит. Если заведёт, сюда ляжет ключ доступа к его собственному обработчику — и закрыть файл надо так же, как уже закрыт файл заголовков вебхука телеметрии /etc/pmta/mtahub-headers.txt: владелец — пользователь службы, права 600.
Рекомендуемые значения

Права 600 и владелец — пользователь службы. В файле рабочий ключ, и это не преувеличение.

Один файл на обработчик, а не на очередь. Если очередей вида http-delivery несколько и обработчик у них один, ключ незачем размножать по файлам — его придётся менять во всех.

Строка необязательна. Без неё запрос уйдёт без дополнительных заголовков; для открытого обработчика этого достаточно.

Требования к правам и к одному файлу на обработчик — наши. Из руководства здесь необязательность строки, формат файла «по заголовку на строку» и пример с заголовком авторизации.
Пример в конфигурации
# ключ доступа лежит в файле — в адресе его держать нельзя
<domain feedback.example.com>
    type http-delivery
    http-delivery-url https://hub.example.com/api/v1/feedback
    http-delivery-extra-headers /etc/pmta/http-delivery-headers.txt</domain>
Внутри файла — по заголовку на строку, например строка с Authorization. Права на файл должны быть закрыты: узел читает его сам, а больше он никому не нужен.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Оставляют файл с открытыми правами

наш опыт

Чем чреватоКлюч доступа к обработчику читает любой пользователь узла. На узле, где есть посторонние учётные записи, это утечка в чистом виде.
Как заметитьls -l показывает права шире 600.
Как правильноЗакрыть файл: владелец — пользователь службы, права 600.

Меняют ключ и ждут, что он подхватится

§ 3.3.10.112.2

Чем чреватоФайл читается вместе с конфигурацией. Новый ключ лежит на диске, а узел продолжает слать старый, пока не перезагрузить настройки.
Как заметитьПосле смены ключа обработчик отвечает ошибкой авторизации, очередь растёт.
Как правильноПосле правки файла выполнить pmta reload.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
http-delivery-extra-headers <path>
Значения
путь к файлу; в файле по одному заголовку на строку
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<domain>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Значение сливается по блокам <domain> от общего к частному: побеждает наиболее подходящий блок, а не последний по файлу. В очереди другого вида строка игнорируется. Подхватывается по pmta reload — и файл перечитывается тогда же: сменив ключ, конфигурацию всё равно нужно перезагрузить.
Как проверить на узле
Путь печатает команда настроек очереди; права на сам файл проверяются в системе:
pmta show settings feedback.example.com/vmta1 | grep -i extra-headers
ls -l /etc/pmta/http-delivery-headers.txt
Права шире 600 означают, что ключ доступа к обработчику виден всем на узле. Хаб очередей этого вида не заводит.
В Хабе
Цена ошибки
опасно: последствия переживут откат
Сценарии
Подключить платформу отправки