DKIM (Domain Keys Identified Mail) — технология подтверждения подлинности отправителя письма путём проверки цифровой подписи по открытому ключу в специальной DNS записи тип TXT
домена отправителя.
Можно использовать совместно с SPF (Sender Policy Framework)
apt install opendkim opendkim-tools
Для настройки нужно выполнить по порядку все следующие пункты:
mkdir /etc/postfix/dkim/
opendkim-genkey -D /etc/postfix/dkim/ -d domain.ru -s mail
В результате создаются файлы:
mail.private mail.txt
Для дальнейшего использования с несколькими доменами нужно переименовать файлы в соответствии с именем домена, пример для domain.ru
:
mail.domain.ru.private mail.domain.ru.txt
Обязательно нужно внести в файл адрес (значение inet_interfaces
из /etc/postfix/postfix-o/main.cf
) выходного сервера, чтобы не возникала ошибка следующего вида: opendkim 10.0.0.1 not internal
10.0.0.1
Формат: Имя_ключа Домен:Селектор:Имя_файла_ключа
mail._domainkey.domain.ru domain.ru:mail:/etc/postfix/dkim/mail.domain.ru.private
Формат: Домен Имя_ключа
domain.ru mail._domainkey.domain.ru
Syslog yes UMask 002 OversignHeaders From Canonicalization relaxed/relaxed AutoRestart yes DNSTimeout 5 SyslogSuccess Yes LogWhy Yes Mode sv UserID opendkim:opendkim KeyTable file:/etc/postfix/dkim/KeyTable SigningTable file:/etc/postfix/dkim/SigningTable InternalHosts file:/etc/postfix/dkim/InternalHosts PidFile /var/run/opendkim/opendkim.pid Socket inet:8891@localhost
Нужно задать параметры подключения:
SOCKET="inet:8891@localhost"
Обязательно нужно установить права на файлы:
#!/bin/bash chgrp opendkim /etc/postfix/dkim/* chmod g+r /etc/postfix/dkim/* chmod 640 /etc/postfix/dkim/*.private chown root /etc/postfix/dkim/*.private chown root /etc/postfix/dkim/*.txt
Запуск:
service opendkim restart
Проверка:
netstat -tulpn|grep :8891
В файл main.cf
выходного сервера нужно добавить:
milter_default_action = accept milter_protocol = 2 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = inet:127.0.0.1:8891
Для того, чтобы Amavisd-new писал в заголовок поле Authentication-Results
нужно:
$enable_dkim_verification = 1;
Для отображения статуса проверки DKIM в Roundcube нужно использовать расширение authres_status:
cd /tmp; wget https://github.com/pimlie/authres_status/archive/master.zip
Чтобы получатели могли проверить подлинность отправителя нужно создать специальную запись в зоне DNS нужного домена.
Имя записи | mail._domainkey Для домена третьего уровня test имя записи должно быть таким: mail._domainkey.test |
---|---|
Тип записи | TXT |
Значение | Текст (внутри кавычек) из файла /etc/postfix/dkim/mail.domain.ru.txt |
Также важно, чтобы домен указанный в поле обратный адрес (записывается в поле X-Sender
) совпадал с доменом, для которого сделан ключ, например: адрес должен быть user@domain.ru
а не user@sub1.domain.ru
Для теста можно оправить тестовое письмо на любой из адресов:
check-auth@verifier.port25.com |
check-auth2@verifier.port25.com |
Также можно проверить домен на странице:DKIM Core