Настройка DKIM + Postfix

Все примеры по настройке DKIM в данной инструкции выполнены на базе систем CentOS/Red Hat.

 Статьи   Время чтения: 8 минуты   Просмотров: 16

Настройка DKIM + Postfix

1. Установка OpenDKIM

Для начала, устанавливаем пакет OpenDKIM. Он выполняет операции шифрования заголовков для DKIM, а также содержит набор утилит для формирования ключей.

Для его установки вводим следующее.

yum install opendkim opendkim-tools

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

OpenDKIM

Переносим старый конфигурационный файл opendkim и создаем новый.

mv /etc/opendkim.conf /etc/backup.opendkim.conf
vi /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:12301@localhost

* все параметры можно оставить, как в данном примере, за исключением Socket — можно указать любой другой порт, вместо 12301.

Создаем каталог /etc/opendkim (например, в Debian он не создается автоматически):

mkdir /etc/opendkim

* если увидим сообщение mkdir: cannot create directory ‘/etc/opendkim’: File exists, то значит, каталог и так создан.

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

vi /etc/opendkim/TrustedHosts

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

127.0.0.1

localhost

* в данный файл мы заносим все IP-адреса и сети почтовых серверов, которые могут использовать наш сервер как почтовый релей. Таким образом, если в вашей системе используется подобная конфигурация, в файл TrustedHosts мы должны добавить адреса данных почтовых серверов.

Создаем остальные конфигурационные файлы (если их нет):

touch /etc/opendkim/{KeyTable,SigningTable}

Открываем файл /etc/default/opendkim:

vi /etc/default/opendkim

... его либо не должно быть, либо он должен быть пустой, либо проверяем строку с настройкой SOCKET и приводим ее к виду:

SOCKET=inet:12301@localhost

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

systemctl enable opendkim --now

* для старый систем это будут команды chkconfig opendkim on и service opendkim start.

Postfix

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

vi /etc/postfix/main.cf

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

milter_protocol = 2

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

3. Создание сертификата и настройка домена

Для создания сертификата можно воспользоваться бесплатным онлайн инструментом на сайте 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

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

relay._domainkey.blanet.ru blanet.ru:relay:/etc/opendkim/blanet.ru/relay.private

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

vi /etc/opendkim/SigningTable

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

*@blanet.ru relay._domainkey.blanet.ru

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

service opendkim restart

4. Настройка DNS

Смотрим содержимое файла txt, который был сформирован при генерировании сертификата для домена:

cat /etc/opendkim/blanet.ru/relay.txt

* где blanet.ru — домен, для которого производилась настройка.

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

relay._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqG...rhyaj8OcbwIDAQAB"

* где relay — название нашего селектора MIGfMA0GCSqG...rhyaj8OcbwIDAQAB — сокращенная запись открытого ключа (она длиннее).



Автор: Google
Источник: blanet.ru

Последние страницы

Copyright © 2022 Blanet.Ru. Все права защищены.