Порядок действий здесь важнее самих действий. Он существует в такой форме потому, что настройки применяются без остановки узла: оба ключа могут стоять в конфигурации одновременно, и переход ничего не стоит.
Новый ключ добавляется и включается раньше, чем трогают старый. Не наоборот. Сначала он появляется в конфигурации под другим селектором, настройки применяются, подпись переключается на него.
Удаление ждёт очередь. Старый ключ убирается только тогда, когда ни одно письмо в очереди на него больше не рассчитывает. Руководство приводит пример: письмо, выбравшее ключ своим заголовком, — ждать надо, пока такие письма не будут доставлены или отбиты.
Тот же порядок годится и для другого криптографического материала. Руководство называет сертификат TLS: форма процедуры та же — добавить, переключиться, дождаться, убрать.
Закрытые части Хаб кладёт на узел сам, в закрытый каталог (/etc/pmta/dkim, права 700, ключи 600), и правит строку подписи в блоке адреса отправки.
⚠️ Ошибка «подпись плохая» сразу после ротации — почти всегда кэш DNS, а не дефект. Это уже встречалось: проверять надо время жизни записи, а не искать поломку в подписи.
Порядок и сроки:
| Шаг | Когда |
|---|---|
| опубликовать открытую часть в DNS | заранее, за время жизни записи до переключения |
| добавить ключ в конфигурацию под новым селектором | после публикации |
| применить настройки | перезагрузкой, не перезапуском |
| переключить подпись на новый ключ | сразу после применения |
| убрать старый ключ | когда очередь не держит писем, зависящих от него |
Селектор обязан отличаться. Два ключа под одним селектором — это не ротация, а замена: старая подпись перестанет проверяться мгновенно.
Как понять, что ждать закончили. Писем, выбравших старый ключ заголовком, в очереди быть не должно; проще всего дождаться, пока очередь этого домена опустеет или письма отобьются по сроку.
# оба ключа стоят рядом, пока очередь не опустеет <virtual-mta mta-news-1> domain-key sel2,example.com,/etc/pmta/dkim/private_key_example.com.txt domain-key sel1,example.com,/etc/pmta/dkim/private_key_old.txt </virtual-mta>
что делают не так и чем это кончается3 ошибки▶
§ 1.6.2
§ 1.6.2
§ 1.6.2
4 связи
domain-keyGlobalТа строка, которой ключ и подключается; при ротации их временно две. § 1.6.2Применить изменённую конфигурацию, не останавливаясьОдна и та же команда применяет и добавление нового ключа, и удаление старого. § 1.6.2
smtp-server-tls-certificateGlobalСоседняя задача с тем же ритмом: срок действия кончается, и замену надо готовить заранее. § 1.6.2http-api-keyGlobalСмена ключа устроена так же, как смена ключа подписи: новый пишется, старый перестаёт действовать при применении. inferenceСбросить кэш имёнРазбор, в котором эта команда — один из шагов. inferenceКак узел подписывает письма и выбирает ключСмена ключа — это новый селектор, поэтому селектор и входит в объявление отдельным значением. § 10.3.2
dig +short sel2._domainkey.example.com TXT pmta show queues '*/mta-news-1'
3 статьи
◇Как узел подписывает письма и выбирает ключКлюч выбирается по домену отправки из заголовков, перебором объявлений сверху вниз.◇Не отправлять то, что не пройдёт проверку у получателяУзел сам проверяет SPF своей почты перед отправкой: не прошло — отбивает, не дожидаясь чужого отказа.◇Заголовок письма, которым подающая сторона правит подписьПять параметров в X-DKIM-Options: селектор, домен, имя подписи, способ запроса и список ключей.