Данная статья подразумевает, что у вас уже есть настроенный рабочий почтовый сервер (Postfix), и освещает лишь настройку SPF и DKIM.
SPF и DKIM в целом похожие технологии, и выполняют схожу задачу - подтверждают валидность сервера отправителя. Работают они через записи на DNS сервере. Принцип работы очень простой:
- Сервер получателя получает письмо с адреса info@example.com, с сервера mx.example.com;
- Сервер получателя делает запрос к DNS для домена example.com и ищет записи SPF и DKIM;
- В случае если записей нет, письму проставляется статус neutral (конкретно по этим проверкам) и письмо проверяется дополнительными фильтрами;
- В случае если записи обнаружены, проверяется, разрешено ли серверу mx.example.com отправлять почту домена example.com;
- Если mx.example.com не найден в списке разрешенных, то письмо или отбрасывается, или проставляется статус neutral;
- Если mx.example.com найден в списке разрешенных, письму проставляется статус pass и повышается рейтинг письма при прохождении других фильтров.
Настройка SPF записи
SPF расшифровывается как – Sender Policy Framework дословно - структура политики отправителя. В SPF-записи указываются все сервера, с которых могут быть отправлены сообщения.SPF запись необходимо прописать на DNS-сервере обслуживающим ваш домен. Это строка, типа TXT, которая указывает список серверов, имеющих право отправлять email-сообщения с обратными адресами в вашем домене.
Если вы отправляете сообщения только с одного сервера (почтовые клиенты не считаются), то в SPF-записи будет достаточно указать IP-адрес этого сервера:
example.com. IN TXT "v=spf1 +a +mx ip4:12.34.56.78 -all"
Описание опций:
"v=spf1"
- используемая версия SPF.
"+"
- принимать корреспонденцию (Pass). Этот параметр установлен по умолчанию. То есть, если никаких параметров не установлено, то это "Pass";
"-"
- Отклонить (Fail);
"~"
- "мягкое" отклонение (SoftFail). Письмо будет принято, но будет помечено как СПАМ;
"?"
- нейтральное отношение;
"mx"
- включает в себя все адреса серверов, указанные в MX-записях домена;
"ip4"
- опция позволяет указать конкретный IP-адрес или сеть адресов;
"a"
- указываем поведение в случае получения письма от конкретного домена;
"include"
- включает в себя хосты, разрешенные SPF-записью указанного домена;
"all"
- все остальные сервера, не перечисленные в SPF-записи.
Расшифруем нашу запись:
"+a"
- разрешает прием писем от узла, IP-адрес которого совпадает с IP-адресом в A-записи для mydomen.ru; "+mx"
- разрешает прием писем, если отправляющий хост указан в одной из MX-записей для mydomen.ru; "ip4:"
- тут мы указали ip адрес нашего почтового сервера; "-all"
- все сообщения, не прошедшие верификацию с использованием перечисленных механизмов, следует отвергать.
С настройкой SPF записи всё довольно просто.
Проверка SPF записей
Обновление DNS записей обычно занимает от 30 минут до 4 часов - стоит подождать некоторое время, чтобы записи успели обновиться.
Затем идем сюда и вбиваем доменное имя, для которого вы прописали записи. Жмем SPF Record Lookup и смотрим результат.
Настройка DKIM
DKIM расшифровывается как – DomainKeys Identified Mail. Настройка DKIM немного сложнее, так как предварительно нужно сгенерировать ключи для подписи сообщений.
Для этого на почтовом сервере необходимо установить opendkim:
Создадим директории где будут храниться ключи для каждого домена (если ваш почтовый сервер обслуживает несколько доменов):
Создаем ключи для наших доменов и селектор (здесь домен example.com и example.org, а селектор mail. Селектор может быть любой. Это всего лишь название для ссылки на ключ):
Выше указанная команда создаст файлы /etc/opendkim/example.com/mail.private и /etc/opendkim/example.com/mail.txt (и аналогично для каждого домена), с секретным и публичными ключами соответственно.
Содержимое файла mail.txt (для соответствующего домена) является публичным ключом, который надо разместить на DNS-сервере в TXT записи для того домена для которого он был создан.
Пример данной записи:
Владельцем ключей делаем opendkim (иногда из-за этого бывают ошибки):
Создадим 3 необходимых файла конфигурации:
Содержимое файла /etc/opendkim/KeyTable (здесь все слова mail меняем на ваш селектор, в данном файле прописываются домены и пути к секретным ключам):
Содержимое файла /etc/opendkim/SigningTable:
Файл /etc/opendkim/TrustedHosts - в этом файле определяем так называемые ExternalIgnoreList и InternalHosts, т.е. хосты, домены и ip адреса, сообщения от которых будут доверенными и будут подписываться.
Так как в основном конфигурационном файле мы укажем, что файл TrustedHosts имеет тип refile (файл с регулярными выражениями), мы можем использовать регулярные выражения в нем. Например * .example.com означает, что сообщения, поступающие от поддоменов example.com будут тоже доверенными.
Пример файла /etc/opendkim/TrustedHosts:
Настроим opendkim. Для этого внесем следующие настройки в конфигурационный файл /etc/opendkim.conf:
Расшифровка:
Подробное описание всех атрибутов тут - http://www.opendkim.org/opendkim.conf.5.html
Запускаем opendkim:
Пропишем в Postfix в main.cf строчки:
Если у вас уже используется milter (например, для SpamAssasin), тогда эти же строчки будут выглядеть так:
После внесения изменений в конфигурационный файл Postfix перезапустим его:
Значения могут быть следующими:
Пример ответа, что DKIM настроен корректно:
Также для проверки можно отправить письмо (например, себе же на какой-нибудь e-mail на yandex), открыть его исходник и найти там строчки:
На этом все! Настройка завершена.
ИСТОЧНИКИ:
http://3beep.ru/dkim-i-spf-dlya-pochtovogo-domena/
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy
https://mindbox.fogbugz.com/?W504#toc_4
Для этого на почтовом сервере необходимо установить opendkim:
# apt-get update
# apt-get install opendkim opendkim-tools
Создадим директории где будут храниться ключи для каждого домена (если ваш почтовый сервер обслуживает несколько доменов):
# mkdir /etc/opendkim/keys/
# mkdir /etc/opendkim/keys/example.com/
# mkdir /etc/opendkim/keys/example.org/
Создаем ключи для наших доменов и селектор (здесь домен example.com и example.org, а селектор mail. Селектор может быть любой. Это всего лишь название для ссылки на ключ):
# opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com -s mail
# opendkim-genkey -D /etc/opendkim/keys/example.org/ -d example.org -s mail
Выше указанная команда создаст файлы /etc/opendkim/example.com/mail.private и /etc/opendkim/example.com/mail.txt (и аналогично для каждого домена), с секретным и публичными ключами соответственно.
Содержимое файла mail.txt (для соответствующего домена) является публичным ключом, который надо разместить на DNS-сервере в TXT записи для того домена для которого он был создан.
Пример данной записи:
mail._domainkey IN TXT "v=DKIM1;k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAdfmWEGERbLGARxEFI9Ibwx79tk1kMi36rFeAT4aLu4iI3ctPUWa7y0WcuMZGCBQMMutolT8IM9EGEHYT/rbKlhoeiA0r8qJZiIX/NkjkLIXzR+9h1i47dD5zCu4uEFWRHETJAERWGQaC9hSHCcCwzosSRwBpaxIMZuRGQIDAQAB"
Владельцем ключей делаем opendkim (иногда из-за этого бывают ошибки):
chown opendkim:opendkim -R /etc/opendkim/keys
Создадим 3 необходимых файла конфигурации:
# touch /etc/opendkim/KeyTable
# touch /etc/opendkim/SigningTable
# touch /etc/opendkim/TrustedHosts
Содержимое файла /etc/opendkim/KeyTable (здесь все слова mail меняем на ваш селектор, в данном файле прописываются домены и пути к секретным ключам):
mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private
mail._domainkey.example.org example.org:mail:/etc/opendkim/keys/example.org/mail.private
Содержимое файла /etc/opendkim/SigningTable:
*@example.com mail._domainkey.example.com
*@example.org mail._domainkey.example.org
Файл /etc/opendkim/TrustedHosts - в этом файле определяем так называемые ExternalIgnoreList и InternalHosts, т.е. хосты, домены и ip адреса, сообщения от которых будут доверенными и будут подписываться.
Так как в основном конфигурационном файле мы укажем, что файл TrustedHosts имеет тип refile (файл с регулярными выражениями), мы можем использовать регулярные выражения в нем. Например * .example.com означает, что сообщения, поступающие от поддоменов example.com будут тоже доверенными.
Пример файла /etc/opendkim/TrustedHosts:
127.0.0.1
localhost
::1
192.168.0.1/24
*.example.com
*.example.org
Настроим opendkim. Для этого внесем следующие настройки в конфигурационный файл /etc/opendkim.conf:
Syslog yes
UMask 002
OversignHeaders From
Mode s
LogWhy yes
SyslogSuccess yes
Canonicalization relaxed/simple
KeyTable /etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
Socket inet:8891@localhost
ReportAddress root
AutoRestart Yes
AutoRestartRate 10/1h
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
PidFile /var/run/opendkim/opendkim.pid
SignatureAlgorithm rsa-sha256
UserID opendkim:opendkim
Расшифровка:
AutoRestart:
автоматический перезапуск в случае ошибки;
AutoRestartRate:
определяет максимальное количество перезапусков в единицу времени, после чего фильтр останавливается. Например, значение 10/1h означает, что разрешено не более 10 автоматических перезапусков за 1 час, если значение будет превышено - автоперезапуск в случае ошибки будет отключен.
UMask:
предоставляет все права доступа группе пользователей, указанной в UserID и позволяет другим пользователям читать и выполнять файлы. В данном случае это позволяет создавать и изменять pid-файл.
Syslog, SyslogSuccess, *LogWhy:
эти параметры настраивают ведение логов с помощью syslog. Canonicalization:
определяет методы преобразования, используемые при подписании сообщения. Метод simple не позволяет практически никаких изменений, в то время как метод relaxed допускает незначительные изменения (например замена пробела и т.д.). Значение relaxed/simple указывает, что заголовок сообщения будет обрабатываться методом relaxed, а тело сообщения - методом simple.
ExternalIgnoreList:
определяет внешние хосты, которые могут отправлять почту через сервер в качестве одного из подписанных доменов без учетных данных.
InternalHosts:
определяет список внутренних хостов, почтовые сообщения от которых не должны быть проверены, но должны быть подписаны.
KeyTable
: файл-карта названий и путей к секретным ключам.
SigningTable:
список подписей, которые будут применяться на основании заголовка письма, указанного в "From:".
Mode:
режимы работы; в данном случае выступает в качестве milter (фильтрация писем до попадания в очередь сообщений, прописывается в postfix в main.cf, см. ниже) подписывающего (s) и верификатора (v). В нашем случае мы будем только подписывать.
PidFile:
путь к файлу Pid, который содержит идентификационный номер процесса.
SignatureAlgorithm:
алгоритм подписи.
UserID:
указывает под каким пользователем и группой должен работать процесс opendkim.
Socket:
milter будет слушать на сокете указанном здесь, Posfix будет отправлять сообщения opendkim для подписи и проверки через этот сокет. В нашем случае будет использоваться localhost и 8891 порт (8891@localhost).
Подробное описание всех атрибутов тут - http://www.opendkim.org/opendkim.conf.5.html
Запускаем opendkim:
# /etc/init.d/opendkim start
Пропишем в Postfix в main.cf строчки:
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
milter_default_action = accept
milter_protocol = 2
Если у вас уже используется milter (например, для SpamAssasin), тогда эти же строчки будут выглядеть так:
smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:8891
non_smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:8891
milter_default_action = accept
milter_protocol = 2
После внесения изменений в конфигурационный файл Postfix перезапустим его:
# service postfix reload
Определим политику DKIM (ADSP - Author Domain Signing Practices)
Для этого надо разместить на DNS-сервере в TXT записи для каждого домена для которого используется DKIM следующую строчку:_adsp._domainkey IN TXT "dkim=unknown"
Значения могут быть следующими:
unknown:
значение по умолчанию (аналогично тому, что вышеуказанной DNS записи вообще нет). Данное значение говорит почтовым серверам (на которые вы будете отправлять письма) о том, что письма могут быть как с подписью DKIM, так и без подписи; all:
говорит, что все письма будут подписаны; discardable:
говорит, что все письма будут подписаны, а если письмо не подписано или подпись не верна - то его следует удалить.
Проверка DKIM
Для проверки DKIM можно отправить письмо на адрес check-auth@verifier.port25.com и дождаться ответа.Пример ответа, что DKIM настроен корректно:
The results are as follows: DKIM Signature validation:
pass DKIM Author Domain Signing Practices: (
Также для проверки можно отправить письмо (например, себе же на какой-нибудь e-mail на yandex), открыть его исходник и найти там строчки:
иAuthentication-Results: mxfront1g.mail.yandex.net;
spf=pass
(mxfront1g.mail.yandex.net: domain of example.com designates 12.34.56.78 as permitted sender) smtp.mail=tester@example.com;
dkim=pass
header.i=@example.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=example.com; s=mail;
t=1484724874; bh=LGgFxMGKg3waFbi+enIwqHYdnPLt2IsuxgR6s1EEHvg=;
h=From:To:Subject:Date:From;
b=fvFO2qXwC3VRfbUVaG4SW3vtmBJbW8+1kKbKuP25/w/UZ7TLq1TruOYhgoCPpk6B/
tz93DY5/1mzbPDTiBuEJoh371t34yJDTWUGqMucoOhXXhHBdtCfns+L6lW5oI+stMP
5g+xUYyz7/a3oy0MstIFJnhjpJlRwgeS/JPjPfuQ=
На этом все! Настройка завершена.
ИСТОЧНИКИ:
http://3beep.ru/dkim-i-spf-dlya-pochtovogo-domena/
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy
https://mindbox.fogbugz.com/?W504#toc_4
Комментариев нет:
Отправить комментарий