Сообщение об ошибке
dkim=permerror
Также выводится как
- dkim=neutral (signature syntax error)
OpenDKIM пишет просто `dkim=permerror` без причины (воспроизведено на подписях без `bh=`, с `v=2`, с неизвестным `a=` и с `i=` за пределами `d=`). mailauth при синтаксических проблемах выдаёт `dkim=neutral` с комментарием, где названа проблема; если точнее назвать её нельзя, в комментарии будет «signature syntax error».
Что это означает
DKIM-подпись вообще не удалось оценить, и повторная попытка не поможет: заголовок `DKIM-Signature` синтаксически некорректен или нарушает правила RFC 6376 (нет обязательного тега, например `bh=` или `b=`; неизвестная версия; неподдерживаемый алгоритм; идентификатор `i=` за пределами домена `d=`; `From` нет среди подписанных заголовков), либо запись с открытым ключом непригодна. RFC 8601 называет это постоянной ошибкой. Для DMARC такой результат не считается успешным (pass).
Почему это происходит
Заголовок DKIM-Signature повреждён или обрезан
частоСамописный код подписи, который пропускает теги, ретрансляторы, которые неправильно переносят или обрезают длинные заголовки, или заголовок подписи, повреждённый почтовым клиентом, который его перекодировал.
Проверяющая сторона не поддерживает алгоритм
иногда`a=rsa-sha1` (признан устаревшим в RFC 8301) или `ed25519-sha256` у старого получателя. Если подписывать одновременно RSA-SHA256 и Ed25519, подпись сможет проверить любой получатель.
i= за пределами домена подписи
иногдаИдентификатор агента `i=` должен относиться к домену `d=` или к его поддомену. Сочетание `d=example.com; i=@example.org` недопустимо.
Заголовок From не подписан
иногдаRFC 6376 требует, чтобы `From` был в `h=`. Подписант с собственным списком заголовков, в котором нет этого заголовка, создаёт подписи, которые получатели отклоняют.
Как исправить
- 1.
Посмотрите теги подписи
Объедините перенесённые строки заголовка и проверьте обязательные теги и их значения; отладчик DKIM делает это сам и называет проблемный тег.
bash # Show the DKIM-Signature as one line and list its tags awk '/^DKIM-Signature:/{p=1} p&&/^[^ \t]/&&!/^DKIM-Signature:/{p=0} p' message.eml | tr -d '\r\n\t' | tr ';' '\n' # required: v=1 a= b= bh= d= h= (containing "from") s= - 2.
Используйте стандартную конфигурацию подписанта
RSA-SHA256 (при желании вместе с Ed25519), подписанный `From` (с oversigning) и поддерживаемая реализация подписи вместо самописного кода.
text # OpenDKIM signer: standard algorithm, From always signed SignatureAlgorithm rsa-sha256 OversignHeaders From Canonicalization relaxed/simple
Связанные ошибки
dkim=fail reason="signature verification failed"OpenDKIM (Authentication-Results header added by the opendkim milter); mailauth reports the same as "bad signature"dkim=fail reason="key not found in DNS"OpenDKIM (Authentication-Results); mailauth reports it as dkim=neutral (no key)dkim=fail (body hash did not verify)DKIM verifiers (Gmail, mailauth, Rspamd…)