Найти в Дзене
Мысли вслух

Настройка DKIM в Sendmail'е на FreeBSD

Возникла проблема с доставкой почты на популярые почтовые сервисы gmail.com, yandex.ru, mail.ru из-за требований к SPF/DKIM/DMARC. Просто удивительно, как много солидных государственных учреждений работают через публичные почтовые сервисы и никто им по шапке не дает. Решили прикрутить DKIM к своему почтовому серверу на базе sendmail'а на freebsd ( установлен из коробки). Но настройку ушло 4 рабочих дня в основном из-за того, что используемый для проверки DKIM ресурс https://www.mail-tester.com/ позволял не больше 3-х проверочных писем в день. Полностью процесс настройки описывать не буду - укажу лишь проблемы с которыми пришлось столкнуться. 1. Логгирование процесса отладки. Изменение параметра DebugMilter в конфигурационном файле /usr/local/etc/mail/opendkim.conf ничего не дает. По дефолту стоит значение 0, ставил 14 и даже 99 (все это увидел в инете) - никаких изменений. Что 0, что 99. Повышение уровня отладки в sendmail'е: В файл sendmail.mc добавляем строки: def

Возникла проблема с доставкой почты на популярые почтовые сервисы gmail.com, yandex.ru, mail.ru из-за требований к SPF/DKIM/DMARC. Просто удивительно, как много солидных государственных учреждений работают через публичные почтовые сервисы и никто им по шапке не дает. Решили прикрутить DKIM к своему почтовому серверу на базе sendmail'а на freebsd ( установлен из коробки). Но настройку ушло 4 рабочих дня в основном из-за того, что используемый для проверки DKIM ресурс https://www.mail-tester.com/ позволял не больше 3-х проверочных писем в день. Полностью процесс настройки описывать не буду - укажу лишь проблемы с которыми пришлось столкнуться.

1. Логгирование процесса отладки.

Изменение параметра DebugMilter в конфигурационном файле /usr/local/etc/mail/opendkim.conf ничего не дает. По дефолту стоит значение 0, ставил 14 и даже 99 (все это увидел в инете) - никаких изменений. Что 0, что 99.

Повышение уровня отладки в sendmail'е:

В файл sendmail.mc добавляем строки:

define(`confLOG_LEVEL', `9')dnl

define(`confMILTER_LOG_LEVEL', `18')dnl

где цифры - уровень отладки.

Логи пишутся в файл /var/log/maillog.

2. Письма не подписываются.

Методы решения.

2.1. Интеграция OpenDkim и Sendmail'а

2.1.1. Пытался через программный сокет:

opendkim.conf:

Socket local:/var/run/dkim/opendkim.sock

sendmail.mc:

INPUT_MAIL_FILTER(`opendkim', `S=local:/var/run/dkim/opendkim.sock')dnl

По логам вижу, что opendkim даже не стартует - письма идут мимо.

2.1.2. Решил сделать через порт:

opendkim.conf:

Socket inet:8891@localhost

sendmail.mc:

INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@localhost')dnl

В итоге - opendkim появился в логах и начал сыпать ошибки. То бишь, opendkim подвязался к sendmail'у и тот начал подсовывать ему письма. Ессно, письма еще не подписываются. Но про sendmail уже можно забыть и плотно заняться opendkim.

Замечание: открывающий апостроф в скобках имеет значение - у меня редактор mc ставил другой значок - в итоге sendmail не стартовал : указывал на какие-то фантастические ошибки. Пришлось скопировать и отредактировать строку, где были нужные апострофы в нужном количестве).

2.2. Настраиваем файлы signingtable, keytable, trustedhosts.

Opendkim сыпет ошибками - письма не подписываются. Что-то в синтаксисе указанных файлов ему не нравится.

Тут, после 100-й консультации с мистером Гуглом, натыкаюсь на замечание, что

если заполнен параметр

Domain (по дефолту - none)

то файлы keytable и signingtable - игнорируются.

Заполняю, то бишь указываю свой домен и...о, чудо - начинают подписываться письма отправленные прямо с сервера. Письма отправленные с клиентских машин не подписываются.

2.3. Не подписываются письма отправленные с клиентских машин.

Понимаю, что все дело в файле trustedhosts.

Он, по советам мистера Гугла, следующего вида:

127.0.0.1

localhost

my.domen (в смысле прописан мой домен).

Беру и вписываю строку 192.168.0.0/16 (то бишь, свою локалку). И о ...чудо - письма начинают подписываться, а https://www.mail-tester.com/ выдает 10 из 10.

Вообщем, как-то так)