В конце 2011 года разработчики проекта dkim-milter прекратили его поддержку и разработку. К счастью, на замену проекта dkim-milter пришел OpenDKIM, с помощью которого добавить DKIM-подпись в письма так же просто. На мой взгляд без DKIM ваши письма, с большей долей вероятности не дойдут до адресата почтового сервиса mail.ru, ,mail.yandex.ru, gmail.com, yahoo.com, rambler.ru. Как все же настроить DKIM описано в статье.
Для этого нам потребуется сам Postfix и пакеты OpenDKIM. Установим все необходимые компоненты с помощью вашего пакетного менеджера:
aptitude install opendkim opendkim-tools
Теперь нам нужно получить ключи, которые мы будем использовать для подписи писем. Ключи будем хранить рядом с конфигурационными файлами Postfix, но вы можете выбрать и другое место — это непринципиально.
mkdir /etc/postfix/dkim/
Получим ключ для домена example.com и селектора mail:
opendkim-genkey -D /etc/postfix/dkim/ -d example.com -s example
Эта команда создаст файлы /etc/postfix/dkim/example.private и /etc/postfix/dkim/example.txt, с секретным и публичными ключами соответственно. Публичный ключ нужно добавить в соответствующую TXT запись вашего домена.
Файлам ключей обязательно нужно дать доступ для группы, в которой работает OpenDKIM:
chgrp opendkim /etc/postfix/dkim/*
chmod g+r /etc/postfix/dkim/*
В файл конфигурации /etc/opendkim.conf записываем:
Syslog yes
SyslogSuccess yes
# на время отладки включим расширенное логгирование
LogWhy yes
X-Header yes
Canonicalization relaxed/relaxed
# подпись и проверка подписей
Mode sv
# если только подписываем
#Mode s
# список ключей -
KeyTable file:/etc/postfix/dkim/keytable
# соответствие адресов/доменов и ключей -
SigningTable file:/etc/postfix/dkim/signingtable
# если вы подписываете и на других серверах -
#ExternalIgnoreList file:/etc/postfix/dkim/trusted
# список внутренних хостов, почта которых требует подписи -
#InternalHosts file:/etc/postfix/dkim/internal
Список имеющихся ключей укажем в файле /etc/postfix/dkim/keytable:
# формат: "название домен:селектор:/путь/до/ключа"
# в качестве названия удобно использовать имя DNS записи с ключем
mail.example.com example.com:example:/etc/postfix/dkim/example.private
# ключей может быть сколько угодно
#mx._domainkey.example.net example.net:mx:/etc/postfix/dkim/mx.private
# (список ключей может быть и в БД - продробней в манах)
Объясним OpenDKIM почту каких доменов какими ключами подписывать в файле /etc/postfix/dkim/signingtable:
# формат: "домен-или-адрес название-ключа"
example.com mail.example.com
#example.net mx._domainkey.example.net
# все остальные адреса тоже подписываем
#* mail.example.com
# (подробное описание формат есть в man)
В других файлах, указаных в директивах ExternalIgnoreList и InternalHosts, содержится просто список хостов и/или IP-адресов каждый на новой строке.
В файле /etc/default/opendkim объясним DKIM-демону где ему ждать подключений:
SOCKET="inet:8891@localhost"
Наконец, добавим в конец /etc/postfix/main.cf следующие строки:
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
Не забываем добавить TXT запись и проверить, что она на месте:
В вашем dns файле к примеру:
nano /etc/bind/master/example.com.hosts
Добавьте две записи
_domainkey.example.com. TXT "t=s; o=~;"
example._domainkey.example.com. TXT "v=DKIM1\; g=*\; k=rsa\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQ2ai/Qtyzgnc/NG3AE9u9GWmU2gMx7EcXIDWObewM1qtKNJaRMydDK2DfQ+VLPfLXQydaNla1lXBZygNtP1CZdkmQ2BS3QWkqCJYre0DfFUq6AM8g4m2H1A8YmxHmWZ4zj$"
Чтобы найти ключ публичный (я имею ввиду который начинается с p=MIG… ), скопируйте его с файла:
/etc/postfix/dkim/example.txt
Проверим корректность добавления в DNS:
dig txt example._domainkey.example.com
example и example.com замените на свой домен!
к примеру у вас домен galaxydata.ru, значит вам нужно написать:
Selector: galaxydata
Domain: galaxydata.ru
Проверить корректность DKIM можно, только ПОСЛЕ ОБНОВЛЕНИЯ DNS (обычно 24 часа).
Сайт проверки DKIM: https://www.protodave.com/tools/dkim-key-checker/
Готово!
Перезапускаем
postfix
service postfix restart
и opendkim,
service opendkim restart
отправляем тестовое письмо куда-нибудь на Яндекс и наслаждаемся успешным результатом проверки подписи:
Просмотров: 4678
Pingback: postfix + DKIM + SPF + DMARC | Alladmin