Первым делом нужно настройить SPF-запись для вашего домена. Для этого нужно прописать на DNS-сервере обслуживающим ваш домен одну строку, которая указывает список серверов, имеющих право отправлять email-сообщения с обратными адресами в вашем домене. SPF расшифровывается как – Sender Policy Framework дословно (структура политики отправителя).
Пример:
1 2 3 |
mydomen.ru. IN TXT "v=spf1 +a +mx -all" |
Описание опций:
1 2 3 4 5 6 7 8 9 10 11 12 |
"v=spf1" - используемая версия SPF. "+" - принимать корреспонденцию (Pass). Этот параметр установлен по умолчанию. То есть, если никаких параметров не установлено, то это "Pass"; "-" - Отклонить (Fail); "~" - "мягкое" отклонение (SoftFail). Письмо будет принято, но будет помечено как СПАМ; "?" - нейтральное отношение; "mx" - включает в себя все адреса серверов, указанные в MX-записях домена; "ip4" - опция позволяет указать конкретный IP-адрес или сеть адресов; "a" - указываем поведение в случае получения письма от конкретного домена; "include" - включает в себя хосты, разрешенные SPF-записью указанного домена; "all" - все остальные сервера, не перечисленные в SPF-записи. |
Итак, попробуем разобраться, что же значит SPF-запись, указанная выше.
1 2 3 4 5 |
"+a" - разрешает прием писем от узла, IP-адрес которого совпадает с IP-адресом в A-записи для mydomen.ru; "+mx" - разрешает прием писем, если отправляющий хост указан в одной из MX-записей для mydomen.ru; "-all" - все сообщения, не прошедшие верификацию с использованием перечисленных механизмов, следует отвергать. |
Вроде ничего сложного все просто. На всякий случай сайт для настройки и проверки SPF- записи: Sender ID Framework SPF Record Wizard
Итак, приступаем к установке и настройке DKIM. Устанавливаем OPENDKIM:
1 2 3 |
dnf install opendkim |
Создаем ключи для домена и селектор (здесь домен mydomen.ru, а селектор mail. Селектор может быть любой. Это всего лишь название для ссылки на ключ):
1 2 3 |
opendkim-genkey -D /etc/opendkim/keys/ -d mydomen.ru -s mail |
Последняя команда создаст файлы /etc/opendkim/mail.private и /etc/opendkim/mail.txt, с секретным и публичными ключами соответственно.
Содержимое файла mail.txt является публичный ключ, который надо разместить на DNS-сервере в txt записи.
Пример:
1 2 3 |
mail._domainkey IN TXT "v=DKIM1;k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAdfmWEGERbLGARxEFI9Ibwx79tk1kMi36rFeAT4aLu4iI3ctPUWa7y0WcuMZGCBQMMutolT8IM9EGEHYT/rbKlhoeiA0r8qJZiIX/NkjkLIXzR+9h1i47dD5zCu4uEFWRHETJAERWGQaC9hSHCcCwzosSRwBpaxIMZuRGQIDAQAB" |
Владельцем ключей (по крайней мере для CentOS) я сделал opendkim (иначе были ошибки):
1 2 3 |
chown opendkim:opendkim -R /etc/opendkim/keys |
Конфигурационный файл (/etc/opendkim.conf). Тут главное раскомментировать директивы KeyTable, InternalHosts, SigningTable иначе opendkim не запустится (остальное по умолчанию) :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Mode sv LogWhy yes Syslog yes SyslogSuccess yes Canonicalization relaxed/relaxed KeyTable /etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable InternalHosts refile:/etc/opendkim/TrustedHosts Socket inet:8891@localhost ReportAddress root SendReports yes |
Файл /etc/opendkim/KeyTable (здесь все слова mail меняем на ваш селектор, например имя домена без .ru, чтобы не запутаться, если ваш сервер будет обслуживать несколько почтовых доменов):
1 2 3 |
mail._domainkey.mydomen.ru mydomen.ru:mail:/etc/opendkim/keys/mail.private |
Файл /etc/opendkim/SigningTable (означает подписывать все письма домена mydomen.ru):
1 2 3 |
*@mydomen.ru mail._domainkey.mydomen.ru |
Соответственно, если ваш почтовый сервер обслуживает несколько почтовых доменов, то все что нужно это создать ключик и добавить необходимые записи о каждом домене в файлы конфигурации “KeyTable” и “SigningTable”.
Файл /etc/opendkim/TrustedHosts:
1 2 3 4 5 6 |
127.0.0.1 ::1 mydomen.ru mail.mydomen.ru |
Далее нужно научить постфикс подписывать письма. Добавляем в файл конфига постфикс main.cf след-ие строки:
1 2 3 4 5 |
smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters milter_default_action = accept |
Проверяем ключ:
1 2 3 |
opendkim-testkey -vvv -d mydomen.ru -s mail -k /etc/opendkim/keys/mail.private |
Запускаем OPENDKIM и перезапускаем постфикс:
1 2 3 4 5 |
systemctl enable opendkim systemctl start opendkim systemctl restart postfix |
И в конце запрещаем принимать наши письма без подписи, создав текстовую запись на DNS (я не делал, а то глюканет opendkim и письмо не отправишь):
1 2 3 |
_adsp._domainkey IN TXT "dkim=all" |
Проверка наличия подписи:
http://dkimvalidator.com/
Оставить комментарий