dkim-expire-after

<domain>

Через сколько подпись перестаёт считаться действительной
в конфигурации это строкаdkim-expire-after neverвнутри блока <domain>
Срок годности подписи

Добавляет в подпись поле с моментом, после которого она считается просроченной. Умолчание — never, срока нет.

Зачем ограничивать. Подписанное письмо можно сохранить и разослать заново через месяц: подпись останется верной, получатель ей поверит. Срок закрывает это окно — просроченная подпись приёмником не принимается.

Отсчёт идёт от подписи, а не от доставки. Письмо, застрявшее в очереди дольше срока, приедет с просроченной подписью — и это главное соображение при выборе величины.

Главная ловушка — срок короче жизни письма в очереди. bounce-after по умолчанию четверо с половиной суток, а срок подписи ставят обычно днём. Письмо, которое приёмник задержал на двое суток, приедет с просроченной подписью — и провалит проверку не по вашей вине.
Что делает Хаб. Не пишет — остаётся вендорское never. Срок имеет смысл там, где подписанное письмо может быть использовано повторно; для обычной рассылки риск невелик, а цена ошибки в величине — провалы проверки на задержанных письмах.
Рекомендуемые значения

Считайте от срока жизни письма. Срок подписи должен быть заметно больше bounce-after, иначе задержанные письма приедут просроченными.

Сутки — обычная величина, но только вместе с укороченным сроком жизни письма.

Умолчание оставляют осознанно. Отсутствие срока — не изъян: для обычной рассылки риск повторного использования невелик. А dkim-disallow-adding-headers закрывает другую дорогу — дописывание заголовков, — и срок её не заменяет.

Правило считать от срока жизни письма — наше. Из руководства здесь оба вида значения и умолчание.
Пример в конфигурации
# срок подписи заметно больше срока жизни письма
<domain *>
    bounce-after 1d
    dkim-expire-after 3d</domain>
Порядок величин именно такой: письмо успеет уйти в отказ раньше, чем его подпись просрочится.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Ставят срок короче срока жизни письма

наш опыт

Чем чреватоЗадержанное приёмником письмо приезжает с просроченной подписью и проваливает проверку. Виноватым выглядит ключ или запись в DNS, а причина — в двух строках рядом.
Как заметитьПровалы проверки только у писем, доставленных с задержкой.
Как правильноСделать срок подписи заметно больше bounce-after.

Ставят срок вместо защиты от подмены

наш опыт

Чем чреватоСрок ограничивает окно повторного использования, но не мешает дополнить письмо вторым заголовком прямо сейчас. От подмены защищает другая строка.
Как заметитьСрок задан, dkim-disallow-adding-headers нет.
Как правильноЗадать обе: они закрывают разные дороги.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Справочные данные
Синтаксис
dkim-expire-after <time-interval>
Значения
интервал времени либо слово never — срока нет
Умолчание
never § 3.3.10.24
Применение
reload, перезапуск не нужен
Очередь
уже поставленное в очередь не затронет
Где писать
<domain>
Сколько раз
один раз в блоке
Всё здесь — из руководства, с разделом.
Наследование
Значение сливается по блокам <domain> от общего к частному: побеждает наиболее подходящий блок, а не последний по файлу. Отсчёт идёт от момента подписи, то есть от отправки, а не от подачи письма. Подхватывается по pmta reload.
Как проверить на узле
Действующее значение печатает команда настроек очереди; что вышло — видно в поле x= подписи:
pmta show settings gmail.com/vmta1 | grep -i expire-after
grep -i 'DKIM-Signature' /var/log/pmta/pmta.log | tail -3
Поле x= в подписи и есть момент истечения; без строки его нет вовсе. Хаб этой строки не пишет.
В Хабе
Цена ошибки
обратимо: вредит, пока стоит
Сценарии
Подпись и аутентификация писем