Заголовок письма, которым подающая сторона правит подпись

X-DKIM-Options header
Решение о подписи, принятое подающим

Обычно всё о подписи решает конфигурация узла. Этот механизм отдаёт часть решений письму: подающая сторона ставит заголовок X-DKIM-Options, и он перекрывает настройки для одного этого сообщения.

Параметров пять, записываются через точку с запятой, как теги в самой подписи: s — селектор, d — домен, i — имя подписи, q — способ запроса ключа, key-list — имя списка, из которого брать ключ.

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

Главная ловушка — заголовок приходит извне. Включив его обработку, вы позволяете подающей стороне выбирать, каким ключом подписать письмо. Если источник подачи открыт шире, чем следует, это способ подписать чужое письмо любым вашим ключом — тем самым, которому получатели доверяют.
Что делает Хаб. Не задействует: подпись у него определяется потоком отправки, а не заголовком письма. Механизм пригодится, если через один узел пойдёт почта нескольких клиентов и выбирать ключ будет подающая сторона.
Пример в конфигурации
# два ключа на один домен — письмо выбирает второй
domain-key key1, example.com, /etc/pmta/key1.example.com.pem
domain-key key2, example.com, /etc/pmta/key2.example.com.pem

# и в самом письме:
X-DKIM-Options: s=key2
Выбор идёт среди объявленных ключей: селектора, которого нет в конфигурации, заголовок не создаст — письмо просто останется без подписи.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Включают обработку на широком источнике

наш опыт

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

Ждут, что заголовок принесёт собственный ключ

§ 10.3.3

Чем чреватоОн только выбирает среди объявленных. Селектор или домен, которых нет в конфигурации, приводят к тому, что письмо уходит без подписи.
Как заметитьПисьма с заголовком не подписаны, остальные подписаны.
Как правильноОбъявить нужный ключ в конфигурации либо в списке, названном параметром key-list.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
Включена ли обработка заголовка, задаётся у источника; что вышло — видно по селектору в самой подписи:
grep -n process-x-dkim-options /etc/pmta/config
grep -i 'DKIM-Signature' /var/log/pmta/pmta.log | tail -3
Поле s= в подписи показывает выбранный селектор: по нему и видно, подействовал ли заголовок письма. Хаб этот механизм не задействует.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Подпись и аутентификация писем