1.Установка DKIM-milter и добавление его в автозагрузку
1 |
# yum install dkim-milter |
1 |
# chkconfig --level 235 dkim-milter on |
2.Настройка DKIM-Milter
Создаем папку для хранения приватного ключа, а также генерируем пару приватный/публичный ключ.
1 |
# mkdir /etc/dkim-milter |
1 |
# cd /etc/dkim-milter/ |
1 |
# /usr/sbin/dkim-genkey -d example.com -s default |
3.Делаем бекапы оригиналов файлов/папок
1 |
# mkdir /root/kamaok/Backup/dkim-milter |
1 |
# cp default.* /root/kamaok/Backup/dkim-milter/ |
1 |
# cp /etc/init.d/dkim-milter /root/kamaok/Backup/dkim-milter/ |
1 |
# cp /etc/mail/dkim-milter/dkim-filter.conf /etc/mail/dkim-milter/dkim-filter.conf~ |
Важно!!! Имя селектора должно совпадать с именем приватного файла
Поэтому изменяем имя созданного приватного ключа(default.private на имя селектора – у меня default)
1 |
# mv default.private default |
1 |
# chown -R dkim-milter:dkim-milter /etc/dkim-milter/ |
4.Настройка DNS-зоны для домена example.com
В прямую DNS-зону домена example.com добавляем содержимое файла default.txt
1 |
default._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDboBopyBQNT7beT+xpMahXj6x3d+egrRM/SQZxRVlufjl6KOcQQC4tLbYjde7j/ix6HxOC6gEliTGnEvLct3rqp7ORxY2jZkz+cGIwyFgL8c6+ITO0P9oc8D6EzSEXOIiQjkF5GpdX906WMPm30gWpvtZCs3v/iV4bS6DM0RHd0QIDAQAB" |
Проверка синтаксиса зоны и перезапуск Bind
1 |
# named-checkzone example.com /var/named/chroot/var/named/example.com.zone |
1 |
# /etc/init.d/named reload |
5.Настройка подписи писем приватным ключем
Вся почта для домена example.com подписывается приватным ключом /etc/dkim-milter/default, который при помощи публичного ключа,прописанного в днс-зоне домена example.com образует законченный цикл проверки
Вся почта для остальных доменов также подписывается приватным ключом
/etc/dkim-milter/default, а для идентификации используется публичный ключ домена example.com
1 |
# nano /etc/mail/dkim-milter/keys/keylist |
1 2 |
@example.com:example.com:/etc/dkim-milter/default *:example.com:/etc/dkim-milter/default |
6.Настройка конфигурационного файла dkim-milter
1 |
# cat /etc/mail/dkim-milter/dkim-filter.conf | grep -v \# | grep -v ^$ |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Canonicalization simple/simple Domain example.com, example2.com KeyFile /etc/dkim-milter/default KeyList /etc/mail/dkim-milter/keys/keylist Selector default SignatureAlgorithm rsa-sha256 Socket inet:8891@localhost SubDomains Yes Syslog Yes SyslogSuccess Yes UMask 002 UserID dkim-milter X-Header Yes |
В параметре domain определяются все домены,для которых нужно подписывать исходящую почту.
7.Правка скрипта запуска dkim-milter
Т.к мы используем порт вместо сокета, то необходимо изменить это также в скрипте запуска/остановки dkim-milter /etc/init.d/dkim-milter
1 |
# nano /etc/init.d/dkim-milter |
1 2 |
# SOCKET=local:/var/run/${name}/${name}.sock SOCKET=inet:8891@localhost |
8.Запуск и проверка того, что dkim запущен
1 |
# /etc/init.d/dkim-milter start |
1 |
# netstat -nlpt | grep 8891 |
1 |
tcp 0 0 127.0.0.1:8891 0.0.0.0:* LISTEN 27439/dkim-filter |
9.Проверка валидности свзяки приватный-публичный ключи
1 |
# /usr/sbin/dkim-testkey -d example.com -s default -k /etc/dkim-milter/default |
Настройка Postfixдля поддержки DKIM
1 |
# nano /etc/postfix/main.cf |
1 2 3 4 5 |
#DKIM-milter milter_default_action = accept milter_protocol = 2 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = inet:127.0.0.1:8891 |
10.Проверка синтаксиса Postfix и его перезапуск
1 |
# /etc/init.d/postfix check |
1 |
# /etc/init.d/postfix reload |
11.Настройка Sendmailдля поддержки DKIM
1 |
# cd /etc/mail |
1 |
# nano sendmail.mc |
(добавляем в самый конец)
1 |
INPUT_MAIL_FILTER(`dk-filter', `S=inet:8891@localhost')dnl |
1 |
# /etc/init.d/sendmail stop |
1 |
# m4 sendmail.mc > sendmail.cf |
1 |
# /etc/init.d/sendmail start |
1 |
# netstat -nlpt | grep sendmail |
1 |
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 23275/sendmail: acc |
1 |
# tail -f /var/log/maillog |
12.Тестирование работоспособности связки DKIM+Postfix/DKIM+Sendmail
Отправляем письмо на mail.ru или на gmail.com
1 |
# mail -vs "My Test DKIM" <yourname>@mail.ru < /dev/null |
1 |
# mail -vs "My Test DKIM" <yourname>@gmail.com < /dev/null |
На mail.ru открываем письмо->Еще->Служебные заголовки
1 |
Authentication-Results:dkim=pass |
На gmail.com открываем письмо->Еще->Показать оригинал
1 |
Authentication-Results:dkim=pass |
Также для тестирования можно отправить письмо на адрес
1 |
check-auth@verifier.port25.com |
В ответ придет письмо с результатом проверки
UPD:
Если пакет dkim-milter не устанавливается с EPEL-репозитария
1 |
# yum install opendkim |
отсюда качаем пакет для 64битной версии
1 |
# wget http://rpm.pbone.net/index.php3/stat/4/idpl/15285129/dir/redhat_el_6/com/dkim-milter-2.8.3-8.el6.x86_64.rpm.html |
1 |
# wget ftp://ftp.sunet.se/pub/Linux/distributions/fedora/epel/6/x86_64/dkim-milter-2.8.3-8.el6.x86_64.rpm |
После чего устанавливаем пакет (предварительно нужно установить пакет sendmail-milter)
1 |
# rpm -ihv dkim-milter-2.8.3-8.el6.x86_64.rpm |
Источники:
http://blog.mixu.net/2009/11/03/setting-up-spf-senderid-and-dkim-on-centos-5-3-using-sendmail/
http://tecadmin.net/setup-domainkeys-dkim-on-postfix-centos-rhel/