Внедряем email-аутентификацию DKIM в Postfix за 5 минут

Работал у нас почтовый сервер для рассылки корреспонденции клиентам. И все бы ничего, но стал люд жаловаться, что не доходят письма или  в спам попадают. И хотя spf был настроен, все говорило о том, что пора нам к нашему Postfix прикрутить DKIM. Как гласит цитата откуда-то с хабра:

DKIM-подпись — это цифровая подпись, которая добавляется к заголовкам письма сервером отправителя, по которой сервер получателя может удостовериться, что отправитель письма соответствует полю From в заголовках письма. Если сервер получателя проверяет эту подпись, то по результатам проверки сервер может принять решение о том, как поступать с письмом: принять, отправлять в папку «Спам», отправить на дополнительную проверку или вовсе отказаться от приёма. Подписи DKIM проверяют и используют сами все ведущие почтовые службы, включая Яндекс и Mail.ru.

Для начала установим необходимый софт командой

aptitude install opendkim opendkim-tools

После установки необходимо отредактировать файл /etc/opendkim.conf, добавив в него строки

Canonicalization relaxed/relaxed
SyslogSuccess yes
KeyTable file:/etc/opendkim/keytable
SigningTable file:/etc/opendkim/signingtable
SoftwareHeader yes
LogWhy yes
ExternalIgnoreList file:/etc/opendkim/trusted
InternalHosts file:/etc/opendkim/trusted

Теперь создадим рабочий каталог,а в нем новый приватный и открытый ключ. Открытый ключ мы потом пропишем на нашем DNS-сервере.

mkdir /etc/opendkim/
opendkim-genkey -s mail -d example.com

В каталоге /etc/opendkim у вас должно появиться 2 новых файла. mail.private — это наш приватный ключ, которым мы будем подписывать письма. А mail.txt содержит публичный ключ. Список имеющихся ключей укажем в файле /etc/opendkim/keytable в формате «название домен:селектор:/путь/до/ключа». В нашем случае содержимое файла будет таким:

mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private

Теперь объясним OpenDKIM почту каких доменов какими ключами подписывать в файле /etc/opendkim/signingtable в формате «домен название-ключа».

example.com mail._domainkey.example.com

В файле /etc/opendkim/trusted необходимо прописать ваши доверенные узлы:

127.0.0.1
localhost
192.168.1.0/24

Зададим необходимые права, добавим пользователя postfix в группу opendkim. Это нужно чтобы postfix смог отправлять письма на подпись через сокет OpenDKIM. После чего перезапустим службу. Я рекомендую заглянуть в системный лог и убедиться, что нет ошибок при запуске службы.

chown opendkim /etc/opendkim -R
gpasswd -a postfix opendkim
service opendkim restart

Вторым этапом настроим postfix, чтобы он мог подписывать нашу почту. В main.cf необходимо добавить:

milter_default_action=accept
milter_protocol=2
smtpd_milters=unix:/var/run/opendkim/opendkim.sock
non_smtpd_milters=unix:/var/run/opendkim/opendkim.sock

Ну и опять рестарт/релоад

service postfix restart

Третьим и последним этапом мы настроим наш DNS сервер добавив в него TXT запись. Выведите содержимое файла mail.txt и используйте следующую пару ключ-значение для добавления новой записи в DNS.

Name: mail._domainkey.example.com.
Text: "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKXhQjM7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB"

Для применения изменений в DNS может пройти несколько часов. Проверить DKIM-подпись вы можете отправив пиьсмо через свой сервер на ящик [email protected] Ответное письмо вы получите в виде отчета. Например:

=========================================================
Summary of Results
==========================================================
SPF check: pass
DomainKeys check: neutral
DKIM check: pass
Sender-ID check: pass
SpamAssassin check: ham

Полезные ссылки:

Оставить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *