DKIM подпись для Sendmail

Электронные подпись DKIM позволяет уменьшить вероятность попадания письма в папку "спам" у адресата. Для её настройки необходимо сделать как изменения на сервере, так и в DNS записях домена, письма от которого должны подписываться.

Установка DKIM

Для создания подписи отправляемых через Sendmail можно использовать утилиту opendkim. Для её установки на CentOS (7-ой версии) необходимо выполнить:
yum install opendkim
На Ubuntu:
apt install opendkim
После установки стоит поставить опцию автоматического включения при старте системы. В CentOS:
chkconfig opendkim on
На Ubuntu:
systemctl enable opendkim

Настройка DKIM

После завершения установки необходимо добавить создать private и public ключи для подписи и проверки подписи сообщений. Ключ private хранится на сервере и не доступен для просмотра из вне. Ключ public находится в DNS записи домена и виден всем.

Сделаем папку для ключей, создадим ключи и зададим им права на чтение:
mkdir -p /etc/opendkim/keys/mousedc.ru
/usr/sbin/opendkim-genkey -D /etc/opendkim/keys/mousedc.ru/ -d mousedc.ru -s default
chown -R opendkim:opendkim /etc/opendkim/keys
chown -R opendkim:opendkim /etc/opendkim/keys/mousedc.ru
chmod 640 /etc/opendkim/keys/mousedc.ru/default.private
chmod 644 /etc/opendkim/keys/mousedc.ru/default.txt
- в этих командах обязательно замените "mousedc.ru" на свой домен. Каждый домен на сервере должен подписываться своим ключом, поэтому создайте для каждого сайта свою папку и сгенерируйте каждому ключи.

После создания ключей можно приступить к настройке, в которой надо задать соответствие доменам и ключам, указать какие письма с каких доменов надо подписывать ключами. Для этого потребуется изменить четыре файла:
  1. /etc/opendkim.conf - файл конфигурации OpenDKIM
  2. /etc/opendkim/KeyTable - хранит список ключей
  3. /etc/opendkim/SigningTable - список доменов, чья почта должна быть подписана
  4. /etc/opendkim/TrustedHosts - список доменов, которым надо доверять при подписывании или верифицировании

opendkim.conf

По умолчанию функция автоматической подписи исходящей почты с сервера отключена. Для её включения необходимо сделать несколько настроек. Для этого нужно перейти в файл /etc/opendkim.conf и задать:
Mode sv
Затем закомментировать (поставить знак решётки в начале строки) две директивы:
# LogWhy yes
И
# KeyFile /etc/opendkim/keys/default.private
После чего снять комментарий (удалить знак решётки в начале строки):
KeyTable /etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
После чего сохранить изменения в файле.

KeyTable

В этом файле, в конец и с новой строкой, необходимо прописать путь к "private" ключу:
default._domainkey.mousedc.ru mousedc.ru:default:/etc/opendkim/keys/mousedc.ru/default.private
Если на сервере несколько сайтов, то для каждого из них должна быть такая строчка в файле KeyTable. Но для каждого домена нужно указывать именно его файл "private" ключа.

SigningTable

В файл SigningTable, в конце и с новой строки, необходимо прописать какие письма необходимо подписывать. Первым параметром задаётся адрес отправителя. Чтобы подписывать все исходящие с домена письма, необходимо поставить звездочку * перед знаком @, чтобы получилось так:
*@mousedc.ru default._domainkey.mousedc.ru
Таких строчек может быть несколько, с указанием разных адресов и доменов.
*@mousedc.ru default._domainkey.mousedc.ru
*@mousedc.com default._domainkey.mousedc.com

TrustedHosts

В файле TrustedHosts прописывается домен, при отправке писем с которого, можно подписать их. Каждая запись должна быть с новой строки. Если доменов несколько, то надо прописать так:
mousedc.ru
mousedc.com
Письма с этих адресов так же не будут проверяться на истинность DKIM подписи, потому что ранее мы указали в /etc/opendkim.conf путь к файлу TrustedHosts в директиве ExternalIgnoreList. При этом стоит убедиться, что адрес localhost (127.0.0.1) тоже содержится в TrustedHosts, иначе OpenDKIM не будет подписывать исходящую почту.
Если в вашей сети несколько серверов, которые отправляют почту через текущий, то их ip адреса надо прописать в TrustedHosts.
Внимание. Все файлы конфигурация (KeyTable, SigningTable, TrustedHosts и др.) должны заканчиваться на пустую строку, чтобы не было проблем с запуском OpenDKIM.

Настройка SendMail

Настройка OpenDKIM окончена и остаётся только приказать SendMail пользоваться им для подписи исходящих писем. Для этого необходимо перейти в файл /etc/mail/sendmail.mc и прописать там строчку:
INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@127.0.0.1')dnl
После чего необходимо скомпилировать SendMail командой:
make all -C /etc/mail
Теперь можно запустить OpenDKIM и сделать рестарт SendMail:
systemctl start opendkim
systemctl restart sendmail

Настройка DNS

Как было сказано в начале статьи, DKIM подпись - это не только серверная часть, но и публичный ключ, который надо прописать в DNS записях домена, с которого отправляется почта. Публичный ключ можно найти в файлах, которые были созданы ранее. В нашем случае это файл /etc/opendkim/keys/mousedc.ru/default.txt, Внутри файла будет очень строка вида:
default._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIGfM ... IDAQAB" ) ; ----- DKIM default for mousedc.ru
Необходимо взять из неё всё, что находится в круглых скобках за исключением двойных кавычек. То есть в нашем случае надо взять строку:
v=DKIM1; k=rsa; p=MIGfM ... IDAQAB
эту строку нужно сделать значением DNS записи типа TXT для домена default._domainkey.mousedc.ru.

Проверка

По окончанию работ стоит сделать проверку правильности выставления подписи. Для этого можно воспользоваться бесплатными сервисами типа mail-tester.com. Туда необходимо отправить тестовый мэйл и будет сделана проверка на правильность установки DKIM подписи.
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Смотрите наш видео подкаст на эту тему:
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб

⇡ наверх