software:postfix:dkim-postfix

DKIM + Postfix + Amavis

Что только не придумали, лишь бы от SMTP не избавляться…

http://habrahabr.ru/post/141534/


Подписывать исходящие письма с помощью DKIM в Postfix не просто, а очень просто.

Для этого нам потребуется сам Postfix и замечательный во всех отношениях пакет dkim-filter.

Установим его с помощью вашего пакетного менеджера:

$ sudo aptitude install dkim-filter

В конец его конфига /etc/dkim-filter.conf дописываем:

Canonicalization    relaxed/relaxed
KeyList         /etc/dkim-keys.conf
Domain *
BodyLengths yes
On-DNSError accept

Создадим каталог под ключи:

$ sudo mkdir -p /etc/postfix/dkim/
$ sudo chgrp postfix /etc/postfix/dkim/
$ sudo chmod 750 /etc/postfix/dkim/
$ cd /etc/postfix/dkim/

Генерируем ключи для сервера mail.example.com:

$ sudo dkim-genkey -d example.com -s mail -r 

Сейчас в mail.txt у нас лежит TXT запись, которую нужно добавить в DNS, а в mail.private лежит приватный ключ, который и будет использоваться для подписи писем. Запись, которую нужно добавить в DNS, будет вида:

mail._domainkey.mydomain.ru. IN TXT "v=DKIM1; g=*; k=rsa; p=..."

Теперь обязательно нужно удалить расширение у файла с ключом, потому что в описываемой мною схеме dkim-filter берёт имя сервера из имени файла с ключом:

$ sudo mv mail.private mail

В файл /etc/dkim-keys.conf записываем какие домены каким ключом нужно подписывать:

*@mydomain.ru:mydomain.ru:/etc/postfix/dkim/mail
*:mydomain.ru:/etc/postfix/dkim/mail

Аналогично можно добавить свои отдельные ключи для других доменов или даже для отдельных адресов. Если не нужно, чтобы dkim-filter подписывал письма для всех других доменов, не указанных явно, последнюю строчку можно удалить.

В /etc/default/dkim-filter объясним 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 запись и проверить, что она на месте:

$ dig txt mail._domainkey.mydomain.ru

Готово!
Перезапускаем postfix и dkim-filter, отправляем тестовое письмо куда-нибудь на Яндекс и наслаждаемся успешным результатом проверки подписи:

Если проверка прошла успешно то стоит формально запретить другим серверам принимать письма с вашим доменом, но без подписи, добавив в DNS нашу ADSP запись:

_adsp._domainkey.mydomain.ru. IN TXT «dkim=all».

Как научить Google подписывать почту через DKIM: http://support.google.com/a/bin/answer.py?hl=en&answer=174124

  • software/postfix/dkim-postfix.txt
  • Последнее изменение: 2017/05/09 18:34
  • 127.0.0.1