Все примеры по настройке DKIM в данной инструкции выполнены на базе систем CentOS/Red Hat.
Статьи Время чтения: 8 минуты Просмотров: 948
Для начала, устанавливаем пакет OpenDKIM. Он выполняет операции шифрования заголовков для DKIM, а также содержит набор утилит для формирования ключей.
Для его установки вводим следующее.
yum install opendkim opendkim-tools
OpenDKIM
Переносим старый конфигурационный файл opendkim и создаем новый.
mv /etc/opendkim.conf /etc/backup.opendkim.conf
vi /etc/opendkim.conf
Создаем новую конфигурацию.
Добавим следующие строки:
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:12301@localhost
* все параметры можно оставить, как в данном примере, за исключением Socket — можно указать любой другой порт, вместо 12301.
Создаем каталог /etc/opendkim (например, в Debian он не создается автоматически):
mkdir /etc/opendkim
* если увидим сообщение mkdir: cannot create directory ‘/etc/opendkim’: File exists, то значит, каталог и так создан.
Создаем файл доверенных узлов. В него пока войдут имя локального хоста (localhost) и его IP-адрес, которые будут приняты, как доверенные и подписаны:
vi /etc/opendkim/TrustedHosts
И вносим следующее:
localhost
* в данный файл мы заносим все IP-адреса и сети почтовых серверов, которые могут использовать наш сервер как почтовый релей. Таким образом, если в вашей системе используется подобная конфигурация, в файл TrustedHosts мы должны добавить адреса данных почтовых серверов.
Создаем остальные конфигурационные файлы (если их нет):
touch /etc/opendkim/{KeyTable,SigningTable}
Открываем файл /etc/default/opendkim:
vi /etc/default/opendkim
... его либо не должно быть, либо он должен быть пустой, либо проверяем строку с настройкой SOCKET и приводим ее к виду:
Запускаем службу opendkim.
systemctl enable opendkim --now
* для старый систем это будут команды chkconfig opendkim on и service opendkim start.
Открываем конфигурационный файл.
vi /etc/postfix/main.cf
Добавляем или редактируем:
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301
* если smtpd_milters и non_smtpd_milters присутствуют в конфигурационном файле, то приведенные в данном примере значения нужно дописать к имеющимся.
** 12301 — порт работы opendkim, который был задан в opendkim.conf.
Перезапускаем Postfix:
service postfix restart
Для создания сертификата можно воспользоваться бесплатным онлайн инструментом на сайте dkimcore.org. Однако, в данном примере, мы воспользуемся opendkim-genkey и сформируем его самостоятельно. Мы будем работать с доменом blanet.ru (Вам необходимо его заменить своим).
И так, создаем каталог для размещения ключей домена:
mkdir -p /etc/opendkim/blanet.ru
И генерируем их следующей командой:
opendkim-genkey -D /etc/opendkim/blanet.ru/ --domain blanet.ru --selector relay
* где blanet.ru — домен, с которого будет отправляться почта: relay — имя селектора (селектор — это строковый идентификатор, он может быть любым).
В папке /etc/opendkim/blanet.ru должно появиться два файла с расширениями .private и .txt. Первый — закрытый ключ (храним его у себя на сервере), второй — готовая txt-запись для DNS.
Создадим пользователя opendkim.
useradd opendkim -m -s /sbin/nologin
* мы можем получить ошибку useradd: user \'opendkim\' already exists — это значит, что пользователь уже создан. Просто продолжаем настройку.
После создания пользователя, задаем группу владельца opendkim для созданных ключей:
chown :opendkim /etc/opendkim/blanet.ru/*
Если система выдаст ошибку, что группы opendkim не существует (chown: opendkim: illegal group name), необходимо сначала создать учетную запись.
Задаем права для группы владельца:
chmod g+rw /etc/opendkim/blanet.ru/*
Открываем созданный нами ранее TrustedHosts:
vi /etc/opendkim/TrustedHosts
И добавим следующее:
*.blanet.ru* где blanet.ru — почтовый домен.
Создаем таблицу KeyTable. В ней хранится список соответствий между селекторами, доменами и файлами с закрытыми ключами. Формат записей:
<селектор>._domainkey.<домен> <домен>:<селектор>:<путь к закрытому ключу>
vi /etc/opendkim/KeyTable
И в соответствии с форматом приводим его к нужному виду:
И напоследок, создаем SigningTable. В данной таблице хранятся соответствия между определенными email-адресами и записями в KeyTable.
vi /etc/opendkim/SigningTable
И приводим к такому виду:
Перезапускаем opendkim:
service opendkim restart
Смотрим содержимое файла txt, который был сформирован при генерировании сертификата для домена:
cat /etc/opendkim/blanet.ru/relay.txt
* где blanet.ru — домен, для которого производилась настройка.
И используя данное содержимое, в панели управления нашим DNS создаем TXT-запись следующего формата:
* где relay — название нашего селектора MIGfMA0GCSqG...rhyaj8OcbwIDAQAB — сокращенная запись открытого ключа (она длиннее).