Настройка DKIM подписи на FreeBSD 10.4 почтовый сервер Postfix
Зачем она нужна? Например для того чтобы почтовые сервера gmail.com, mail.ru и ряд других не отправляли письма с вашего домена в папку «спам».
Ставим opendkim:
1 |
pkg install opendkim |
Создадим файл конфигурации opendkim на основе примера:
1 2 |
cat /usr/local/etc/mail/opendkim.conf.sample | egrep -v '^#|^$' > /usr/local/etc/mail/opendkim.conf mcedit /usr/local/etc/mail/opendkim.conf |
Получим файл вида:
1 2 3 4 5 |
Domain example.com KeyFile /var/db/dkim/example.private Selector my-selector-name Socket inet:port@localhost Syslog Yes |
Преобразуем его к виду:
1 2 3 4 5 6 7 8 |
Domain domen.ru KeyTable /var/db/dkim/KeyTable SigningTable /var/db/dkim/SigningTable ExternalIgnoreList /var/db/dkim/TrustedHosts Selector relay Socket inet:12301@localhost Canonicalization relaxed/relaxed Syslog Yes |
В файл /var/db/dkim/TrustedHosts добавим хосту с которых разрешены подключения:
1 2 3 |
*.domen.ru 127.0.0.1 localhost |
Создаем каталог для хранения ключей и создаем собственно сами ключи:
1 2 |
mkdir -p /etc/opendkim/domen.ru opendkim-genkey -D /etc/opendkim/tviinet.ru/ --domain tviinet.ru --selector relay |
Создадим пользователя opendkim,зададим владельца и права доступа на файлы:
1 2 3 |
pw useradd opendkim -m -s /usr/sbin/nologin -w no chown :opendkim /etc/opendkim/domen.ru/* chmod g+rw /etc/opendkim/domen.ru/* |
Создаем таблицу KeyTable. В ней хранится список соответствий между селекторами, доменами и файлами с закрытыми ключами. Формат записей:
<селектор>._domainkey.<домен> <домен>:<селектор>:<путь к закрытому ключу>
1 |
mcedit /var/db/dkim/KeyTable |
Например:
1 |
relay._domainkey.tviinet.ru domen.ru:relay:/etc/opendkim/tdomen.ru/relay.private |
Создаем SigningTable. В данной таблице хранятся соответствия между определенными email-адресами и записями в KeyTable.
1 |
mcedit /var/db/dkim/SigningTable |
Добавляем в него:
1 |
*@domen.ru relay._domainkey.domen.ru |
Далее пробуем стартовать сервис:
1 |
/usr/local/etc/rc.d/milter-opendkim onestart |
Если всё хорошо, правим конфигурацию postfix:
1 |
mcedit /usr/local/etc/postfix/main.cf |
Добавляем:
1 2 3 4 |
milter_protocol = 2 milter_default_action = accept smtpd_milters = inet:localhost:12301 non_smtpd_milters = inet:localhost:12301 |
Перезапускаем postfix:
1 |
/usr/local/etc/rc.d/postfix restart |
Если всё хорошо, остался последний шаг: правка DNS. Посмотрим содержимое:
1 2 3 4 |
cat /etc/opendkim/domen.ru/relay.txt relay._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPHo37kaZ6zTfi8pZUE2QIDAQAB" ) ; ----- DKIM key relay for domen.ru |
Добавим эту запись в зону TXT DNS. И пробуем отправить письмо например на gmail.com. В «исходном письме» должна присутствовать запись о DKIM.