dkim-body-canon

<domain>

Насколько терпима подпись к правке тела письма в пути
в конфигурации это строкаdkim-body-canon relaxedвнутри блока <domain>
Что считать изменением тела

Та же развилка, что у dkim-headers-canon, но для тела письма. Умолчание — relaxed.

Прощается немногое. Для тела relaxed терпит пробелы в конце строк и повторы пробелов внутри строки — ровно то, что меняют по пути почтовые узлы и шлюзы. Лишние пустые строки в конце письма не в счёт при обоих значениях. Всё остальное: добавленная строка, изменённый символ, приписка внизу — ломает подпись при любом значении.

Приписка внизу — отдельный разговор. Разрешить её можно только через dkim-add-body-limit, и это уже не про терпимость к оформлению, а про то, какую часть тела подпись вообще покрывает.

Главная ловушка — ждут, что relaxed спасёт от приписки. Не спасёт. Шлюз, добавляющий внизу строку «проверено антивирусом» или подпись компании, ломает подпись при обоих значениях. Терпимость канонизации кончается на пробелах.
Что делает Хаб. Не пишет — остаётся вендорское relaxed. Это верное значение: путь письма нам не подконтролен, а simple не даёт ничего, кроме дополнительных провалов проверки.
Рекомендуемые значения

Оставьте relaxed. Разница между значениями — только в пробелах, и терпимость тут ничего не стоит.

simple — только для контролируемого пути. В рассылке такого не бывает.

От приписок канонизация не защищает. Если внизу писем появляется чужой текст, смотреть надо на предел длины тела, а не сюда.

Разграничение «пробелы против приписок» — наше. Из руководства здесь оба значения и умолчание.
Пример в конфигурации
# умолчание оставлено намеренно
<domain *>
    dkim-headers-canon relaxed
    dkim-body-canon relaxed</domain>
В подписи это выглядит как c=relaxed/relaxed: первым способ для заголовков, вторым для тела.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
▲

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

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

Ставят simple ради строгости

наш опыт

Чем чреватоПодпись перестаёт прощать даже пробел в конце строки — а его добавляют по пути обычные почтовые узлы. Доля провалов растёт без всякой пользы.
Как заметитьПровалы проверки у части получателей при верном ключе.
Как правильноВернуть relaxed.

Правят канонизацию из-за приписок внизу писем

наш опыт

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