OpenDKIM + Postfix для Ubuntu

Инструкция по настройке связки Postfix и OpenDKIM

«DKIM (DomainKeys Identified Mail)» — метод E-mail аутентификации, разработанный для обнаружения подделывания сообщений, пересылаемых по email. Dkim дает возможность получателю проверить, что письмо действительно было отправлено с заявленного домена.

Устанавливаем пакет OpenDKIM. Он выполняет операции шифрования заголовков для DKIM.

apt-get install opendkim opendkim-tools

Далее, создаем сертификат для домена, для этого воспользуемся opendkim-genkey и сформируем его, создаем каталог для размещения ключей:

mkdir /etc/opendkim

Сгенерируем ключи командой:

opendkim-genkey -D /etc/opendkim/ --domain testing.ru --selector dkim
  • testing.ru - домен, с которого будет отправляться почта, dkim - имя селектора, оно может быть любым.

В папке /etc/opendkim/ должно появиться два файла с расширениями .private (закрытый ключ) и .txt (txt-запись).

Зададим группу владельца opendkim для созданных ключей:

chown :opendkim /etc/opendkim/*

Задаем права для группы владельца:

chmod g+rw /etc/opendkim/*
useradd opendkim -m -s /sbin/nologin

Разрешим чтение группе владельцу:

chmod g+r /etc/opendkim/*

Далее настроим DNS.

Смотрим содержимое файла txt:

cat /etc/opendkim/dkim.txt

Используя данное содержимое, в панели управления DNS создаем TXT-запись следующего формата:

dkim._domainkey	IN	TXT	( "v=DKIM1; k=rsa; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDM+aKFwMV4FHLhghuhQs4vEIIIigO0KzRwQojURHI8QV0m/aHt6AqO2JDhXpl54d3uXJj7QWE9653McQZxPQZa6Hu34RY70ap9OZQ664fWeVuyUAZ+VeQ7gGXQBCxPF6nAlnBIsYak+KV/s1HtaUuySVMiwIDAQAB"
  • dkim - название нашего селектора, p=MIGfMA0GCSqG...uySVMiwIDAQAB - сокращенная запись открытого ключа.

Настройка OpenDKIM и Postfix

Открываем конфигурационный файл opendkim.

nano /etc/opendkim.conf

И приводим его к следующему виду:

AutoRestart             Yes
AutoRestartRate         10/1h
Umask                   002
Syslog                  yes
SyslogSuccess           Yes
LogWhy                  Yes
Canonicalization        relaxed/simple
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
SigningTable            refile:/etc/opendkim/SigningTable
Mode                    sv
PidFile                 /var/run/opendkim/opendkim.pid
SignatureAlgorithm      rsa-sha256
UserID                  opendkim:opendkim
Socket                  inet:10021@localhost
  • все параметры можно оставить, как в примере, Socket - можно указать другой порт, вместо 10021.

Создаем файл доверенных узлов. В него войдут имена хостов, доменов и IP-адресов, которые будут приняты, как доверенные и подписаны.

nano /etc/opendkim/TrustedHosts

И вносим следующее:

127.0.0.1
localhost
*.testing.ru
  • где testing.ru — почтовый домен.

Создаем таблицу KeyTable. В ней хранится список соответствий между селекторами, доменами и файлами с закрытыми ключами. Формат записей: <селектор>._domainkey.<домен> <домен>:<селектор>:<путь к закрытому ключу>

nano /etc/opendkim/KeyTable

И в соответствии с форматом приводим его к нужному виду:

dkim._domainkey.testing.ru testing.ru:dkim:/etc/opendkim/dkim.private

Далее создаем SigningTable. В данной таблице хранятся соответствия между определенными email-адресами и записями в KeyTable.

nano /etc/opendkim/SigningTable

И приводим к такому виду:

*@testing.ru dkim._domainkey.testing.ru

Запускаем службу opendkim.

service opendkim start

Открываем конфигурационный файл Postfix .

nano /etc/postfix/main.cf

Добавляем или редактируем:

milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:10021
non_smtpd_milters = inet:localhost:10021
  • если smtpd_milters и non_smtpd_milters присутствуют в конфигурационном файле, то приведенные в данном примере значения нужно дописать к имеющимся.
  • 10021 - порт работы opendkim, который был задан в opendkim.conf.

Перезапускаем Postfix:

service postfix restart

Отправляем электронное сообщение на различные почтовые системы - mail.ru, gmail.com, yandex.ru. Открываем наше письмо и смотрим заголовки (в mail.ru: Еще - Служебные заголовки). Находим следующую строчку, которая означает что проверка домена на базе DKIM настроена:

dkim=pass header.d=testing.ru
Обновлено:
02.09.2019, 14:54
Предыдущая статья
Node.JS v.8
Следующая статья
OpenVPN
Нужна помощь?Наши инженеры бесплатно помогут с любым вопросом за считанные минутыНаписать нам