Postfix настройка OpenDKIM

В этой записи я опишу процесс настройки OpenDKIM на Arch Linux. Следует отменить, этот этап настроек следует выполнять очень внимательно. Можно запутаться на этапе подготовки к генерации ключей. Поэтому я выделил эту задачу в отдельный пост.

Устанавливаем OpenDKIM и копируем базовый настройки файл:

pacman -S opendkim
install -d /etc/opendkim
cp /usr/share/doc/opendkim/opendkim.conf.sample /etc/opendkim/opendkim.conf

Далее уберите знак комментирования для перечисленных параметров /etc/opendkim/opendkim.conf. Приведите его состояние к следующему виду:

Mode                    sv
SendReports yes
KeyTable                refile:/etc/opendkim/KeyTable
SigningTable            refile:/etc/opendkim/SigningTable
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
Socket                  local:/run/opendkim/opendkim.sock
UMask                   002

Автоперезапуск при падении opendkim:

mkdir -p /etc/systemd/system/opendkim.service.d
cat > /etc/systemd/system/opendkim.service.d/restart.conf <<'EOF'
[Service]
Restart=on-failure
RestartSec=5s

StartLimitIntervalSec=300
StartLimitBurst=5
EOF

Применяем настройки:

systemctl daemon-reload
systemctl restart opendkim

Убиваем процесс opendkim, что бы убедится что он подымится снова:

pkill -9 opendkim
sleep 2
systemctl status opendkim --no-pager

Создайте файл /etc/opendkim/SigningTable. Селектор можно выбрать любой, у меня - mail, домен - codebeer.ru меняете на ваш.

*@codebeer.ru mail._domainkey.codebeer.ru

Создайте файл /etc/opendkim/KeyTable

mail._domainkey.codebeer.ru  codebeer.ru:mail:/etc/opendkim/keys/codebeer.ru/mail.private

Аналогично селектор указываете такой же, как в предыдущем пункте, у меня mail, домен codebeer.ru, вы меняете значения на свои.

Создайте файл /etc/opendkim/TrustedHosts

127.0.0.1
::1
localhost
.codebeer.ru

Домен codebeer.ru меняете на ваш.

Далее генерируем ключи.

pacman -S perl
mkdir -p /etc/opendkim/keys/codebeer.ru
opendkim-genkey -b 2048 -d codebeer.ru -D /etc/opendkim/keys/codebeer.ru -s mail -v

Назначаем права на файлы:

chown -R opendkim:opendkim /etc/opendkim/keys/codebeer.ru
chmod 0400 /etc/opendkim/keys/codebeer.ru/mail.private

Добавляем в DNS TXT запись с именем mail._domainkey и значением:

cat /etc/opendkim/keys/codebeer.ru/mail.txt

Важно удалить все кавычки в середине текста. Запись должна выглядеть следующим образом:

"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuxfSSuNL66k9K7d/maqp39cMANuqlHthD+4w7F9ck0NOFbKoYwJxFL7XiZi2tQPM/8HdITuKPG/a9n2qiLtTWzKzv5bsoY4bnjkCzycRcV/uK8XrfZg6yni3UmaFuN10q6bJVZ77ePRIjqQGiHUrgTqTiS6X/EmxiMmPNUf5BQhDKw/N3rdf2gm8suVVP1je+YZrVqdnXesyEJl3SqBuIGZrp8x9BD5abkF4069BsSOm5OqLsr6Eioc/7zWTETraNcGbPROtNKQenEEmWnPpGFYgxtxcagSadm05vjVtKUIukGABot2UleLVsZDwiFGfnSmStvWXQmFWlu1Rtne9cwIDAQAB"

Тест ключа:

[root@mx opendkim]# opendkim-testkey -d codebeer.ru -s mail -vvv
opendkim-testkey: using default configfile /etc/opendkim/opendkim.conf
opendkim-testkey: checking key 'mail._domainkey.codebeer.ru'
opendkim-testkey: key not secure
opendkim-testkey: key OK

Подключаем Postfix к OpenDKIM

Редактируем файл /etc/postfix/main.cf, нужно добавить в конец файла:

milter_default_action = accept
milter_protocol = 6
smtpd_milters = unix:/run/opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters

Установите права на сокет, для этого добавьте postfix в группу opendkim:

gpasswd -a postfix opendkim

Добавляем OpenDKIM в автозагрузку и перезапускаем Postfix:

sudo systemctl enable --now opendkim
sudo systemctl restart postfix