Я уже писал про настройку DKIM для postfix. Но, видимо, инструкция уже устарела. Нужно обновить.
У нас есть работающий сервер postfix, задача — настроить DKIM.
Правим главный файл настроек /etc/postfix/main.cf, добавляем:
milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
disable_mime_output_conversion = yes
Здесь "disable_mime_output_conversion = yes" — патч для исправления ошибки с кириллицей.
Postfix — не работает DKIM с кириллицей
Ставим opendkim.
apt-get install opendkim opendkim-tools
Создаём каталог для ключей и сгенерируем ключ (пока для одного домена).
mkdir /etc/opendkim
chown opendkim:opendkim /etc/opendkim
opendkim-genkey -D /etc/opendkim/ --domain mydomain.ru --selector myselector
Где:
- mydomain.ru — ваш домен
- myselector — ваш селектор который вы выберете
Появится два файла /etc/opendkim/myselector.private и /etc/opendkim/myselector.txt с секретным и публичным ключами. Публичный ключ нужно добавить в соответствующую TXT запись вашего домена.
myselector._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQK........DAQAB"
Ключ может не влезать, тогда его нужно разбить на несколько строк (открывающиеся кавычки должны быть в начале строки, перед ними не должно быть пробелов и табуляции).
myselector._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQK"
"..."
"..."
"........DAQAB" )
Настраиваем /etc/opendkim.conf.
Syslog Yes
SyslogSuccess Yes
LogWhy Yes
UMask 007
Mode sv
SOCKET inet:8891@localhost
PidFile /run/opendkim/opendkim.pid
OversignHeaders From
TrustAnchorFile /usr/share/dns/root.key
UserID opendkim
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
Создаём файл /etc/opendkim/TrustedHosts. Здесь те же сети, что и в файле настроек /etc/postfix/main.cf в пункте mynetworks.
127.0.0.1
localhost
10.10.0.0/16
10.11.0.0/16
Создаём файл /etc/opendkim/KeyTable.
myselector._domainkey.mydomain.ru mydomain.ru:myselector:/etc/opendkim/myselector.private
Создаём файл /etc/opendkim/SigningTable.
*@mydomain.ru myselector._domainkey.mydomain.ru
Задаем группу владельца opendkim для созданных ключей и файлов.
chown :opendkim /etc/opendkim/*
Устанавливаем права на секретный ключ.
chmod 640 /etc/opendkim/myselector.private
В /etc/default/opendkim необходимо указать сокет, который будет слушать opendkim (другие директивы SOCKET необходимо закомментировать). Это не обязательно, вроде бы, потому как сокет уже ранее мы указали, но для совместимости со старыми версиями пусть будет.
SOCKET="inet:8891@localhost"
Перезапускаем postfix и opendkim:
service opendkim restart
service postfix restart
Осталось только проверить и отправить письмо.
После успешной отладки убираем из логов всё про DKIM. Настраиваем /etc/opendkim.conf, меняем параметры логирования.
Syslog No
SyslogSuccess No
LogWhy No
Вроде ничего не забыл.