FreeBSD: Устранение ошибки DKIM-подписания в Amavisd-New 2.11.0

Устранение ошибок Я уже говорил, что мы выполняем DKIM-подписание исходящей корреспонденции с помощью Postfix и Amavisd-New. Невзирая на то, что указанная инструкция была написана давным-давно, содержащиеся в ней рекомендации продолжают быть актуальными по сей день. При этом многократные обновления всего программного обеспечения, включая операционную систему, никогда не нарушили работоспособность DKIM-подписания. Первое исключение из этого «правила» возникло после установки Amavisd-New версии 2.11.0 из коллекции портов.

Проблема, которой посвящена эта коротенькая заметка, заключалась в том, что Amavisd-New, обновленный до версии 2.11.0, перестал добавлять DKIM-подписи в отправляемые сообщения, обрабатываемые правилами банка политики ORIGINATING. При этом результаты выполнения команд amavisd showkeys и amavisd testkeys, а также содержимое /var/log/maillog (даже в режиме максимальной детальности) говорили об отсутствии каких-либо ошибок, связанных с ключами DKIM или операциями DKIM-подписания. Благодаря тому, что в нашем домене используется практика (она же — политика) подписания всех исходящих сообщений (в соответствующей DNS-зоне присутствует TXT-запись _adsp._domainkey.company.com со значением dkim=all), мы быстро узнали о возникновении проблем с отправкой почты некоторым корреспондентам и получении от них сообщений об ошибке 550 5.7.0 Message rejected per DKIM policy.

Для подтверждения того, что источником неприятностей является обновленный Amavisd-New, пришлось откатить его до предыдущей версии командами:

svn up -r 415742 /usr/ports/security/amavisd-new
portupgrade -f amavisd-new

После перезапуска Amavisd-New командами amavisd stop и amavisd start DKIM-подписание заработало, однако я решил поискать более «цивилизованное» решение проблемы, потому что считаю даунгрейд крайностью, приемлемой только при отсутствии альтернатив.
Изучение соответствующего раздела списка рассылки lists.amavis.org подтвердило, что ошибка DKIM-подписания в Amavisd-New 2.11.0 давно известна, и для ее устранения уже существует соответствующий патч, который должен быть наложен на проблемный скрипт /usr/local/sbin/amavisd.
Если Вы выполнили описанный выше даунгрейд, перед применением указанного патча необходимо снова обновить Amavisd-New командами:

svn update /usr/ports/security/amavisd-new
portupgrade amavisd-new

После этого следует перейти в папку /usr/local/sbin, загрузить патч, например, с моего сайта, а затем применить его командами:

cd /usr/local/sbin
fetch https://sergeysl.ru/wp-content/uploads/freebsd/amavisd-2.11.0-dkim-signing.patch
patch < amavisd-2.11-dkim-signing.patch

После наложения патча нужно перезапустить Amavisd-New командами amavisd stop и amavisd start, а затем отправить пустое тестовое сообщение на адрес autorespond+dkim(at)dk(dot)elandsys(dot)com, дождаться ответа, который придет в течение пары минут, и убедиться в том, что он содержит строки:

The results are as follows:

DKIM Signature validation: pass
DKIM Author Domain Signing Practices: dkim=all

Наличие представленных строк в полученном сообщении является признаком того, что Вы нигде не ошиблись, и DKIM-подписание исходящей корреспонденции в Amavisd-New, обновленном до версии 2.11.0, опять работает корректно. Теперь можно удалить «лишние» файлы из папки /usr/local/sbin командами:

cd /usr/local/sbin
rm amavisd.orig amavisd-2.11.0-dkim-signing.patch

и спокойно забыть о рассмотренной проблеме, по крайней мере, до следующего обновления Amavisd-New. Я уверен, что разработчик рано или поздно исправит описанную ошибку, а пока этого не произошло, Вы сможете восстановить работоспособность DKIM-подписания в Amavisd-New с помощью данной инструкции.

Понравилась статья?

 Подписывайтесь на RSS или почтовую рассылку;

 Присоединяйтесь в Twitter, Facebook, Google+, VK;

 Делитесь ссылкой в социальных сетях или блогах:

1 комментарий к “FreeBSD: Устранение ошибки DKIM-подписания в Amavisd-New 2.11.0

  1. Описанная ошибка устранена в Amavisd-New версии 2.11.0_1,1 (r428490):

    ------------------------------------------------------------------------
    r428490 | flo | 2016-12-13 17:52:23 +0300 (вт, 13 дек 2016) | 9 lines
    
    - fix clamd socket file location in default config file [1]
    - prevent error messages from amavisd-p0fanalyzer rc script [2]
    - add a patch to fix dkim siging that was broken in 2.11.0 [3]
    
    PR:             200036 [1], 209038 [2], 214202 [3]
    Submitted by:   barnerd [1]
                    Miroslav Lachman <000.fbsd@quip.cz> [2]
                    ari@stonepile.fi [3]
    
    ------------------------------------------------------------------------
    

Обсуждение закрыто