Секреты во внешнем хранилище

Vault support
Ссылка в конфигурации вместо ключа

Ключи подписи домена можно хранить в HashiCorp Vault вместо файлов: в domain-key пишется путь вида {vault}:/v1/…:поле, а доступ к хранилищу описывает блок <vault>.

Ключ не лежит на диске узла: MTA берёт его из хранилища по HTTP или HTTPS, держит в памяти заданное время и на диск не пишет. Ненайденный ключ запоминается как отсутствующий на час.

Ключи можно менять без правки конфигурации — например, при ротации; поддерживаются только MTA секретов версии 2.

Главная ловушка — сменить ключ и ждать мгновенного эффекта. MTA держит полученный ключ в памяти заданное время, а ненайденный — час: после ротации в хранилище узел может ещё подписывать старым. Кэш сбрасывает clear secretscache.
Что делает Хаб. Не используется: ключи подписи лежат на узле файлами, в закрытом каталоге.
Рекомендуемые значения

Что где:

Что Как
где лежит ключ путь {vault}:/v1/…:поле в domain-key
как MTA ходит в хранилище блок <vault>, HTTP или HTTPS
сбросить кэш после ротации clear secretscache
Назначение, кэш в памяти, час для ненайденного ключа, запрет записи на диск и версия MTA секретов — из руководства (§ 11.4). Разбор ловушки — наш.
Пример в конфигурации
# ключ домена из хранилища вместо файла
domain-key sel, example.com, {vault}:/v1/p25/data/domain-keys/example.com:k1
Пример руководства: k1 — имя поля, под которым ключ сохранён в хранилище.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
После смены ключа в хранилище сбросить кэш и посмотреть журнал:
pmta clear secretscache
grep -i vault /var/log/pmta/log | tail -20
После сброса кэша MTA запросит ключ заново; ошибки доступа к хранилищу ищут в журнале.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Ротация ключей · Безопасность узла