Суть такова, что будем настраивать SPF и DKIM для почты на основе Hmailserver. Принцип похож и для других почтовых серверов
SPF запись — проверка отправителя. SPF позволяет владельцу домена указать в TXT-записи домена специальным образом сформированную строку, указывающую список серверов, имеющих право отправлять email-сообщения с обратными адресами в этом домене.
DKIM — (DomainKeys Identified Mail) — Технология объединяет несколько существующих методов антифишинга и антиспама с целью повышения качества классификации и идентификации легитимной электронной почты. Вместо традиционного IP-адреса, для определения отправителя сообщения DKIM добавляет в него цифровую подпись, связанную с именем домена организации. Подпись автоматически проверяется на стороне получателя, после чего, для определения репутации отправителя, применяются «белые списки» и «чёрные списки».
Настройка SPF:
Для этого необходимо средстве управления доменом. проделать следующие действия. К примеру у нас домен Formyexample.ru
Добавляем в него TXT запись:
TXT = "v=spf1 +a +mx -all exp=spf.Formyexample.ru"
- «+a» — разрешает прием писем от узла, IP-адрес которого совпадает с IP-адресом в A-записи для Formyexample.ru;»
- +mx» — разрешает прием писем, если отправляющий хост указан в одной из MX-записей для Formyexample.ru;
- «~all» — принимать письма со всех остальных серверов, но помечать их как СПАМ
- «exp» — использование даной опции позволяет задать сообщение о ошибке, которое будет передано отправителю при возникновении таковой. Размещается в конце SPF-записи, даже после опции all. Рассмотрим более детально механизм работы опции exp.
Далее создаём домен 3 уровня spf.Formyexample.ru и в нём делаем TXT запись
TXT = "You host not allowed e-mail to me"
На этом SPF настроен. Убедится в этом можно отправив письмо на почтовый сервер умеющий обрабатывать SPF. В заголовках письма можно увидеть запись вида
Received-SPF: OK
Настройка DKIM:
Для настройки DKIM нужно чуть больше.
- Сгенерировать пару ключей.
- Добавить публичный ключ в TXT запись домена
- Установить\настроить MTA сервер (SMTP).
1. Пару ключей можно сгенерировать тут. Небольшое пояснение по поводу некого поля «domain selector». Данное поле позволяет привязать к одному домену несколько DKIM записей для разных нужд (например для разных почтовых серверов). В моём случае у меня только один почтовый сервер и у меня нет необходимости в селекторе, так что в роли селектора я выбрал просто «mail». Полученный приватный ключ сохраняем на сервер в папку, к которой имеет доступ почтовый сервер.В конфигурации домена в hMailServer нам необходимо указать путь к приватному файлу ключа, а так же указать выбранный селектор
В файле DNS-зоны нам необходимо указать записи вида:
_domainkey.Formyexample.ru. TXT "t=s; o=~;"
mail._domainkey.Formyexample.ru. TXT "k=rsa\; t=s\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQmO9AuWRbWPgl/jzDPQodrLfFLFq"
Где «mail» перед _domainkey во второй записи — это не что иное, как наш выбранный селектор, а длинный набор символов в той же записи идущий после «p=» — это наш публичный ключ.
Для получения пары ключей без использования внешних сервисов можно воспользоваться OpenSSL:
openssl.exe genrsa -out tstpriv.pem 1024 — генерим секретный ключ (1024 — длина ключа).
openssl.exe rsa -pubout -in tstpriv.pem -out tstpub.pem — получаем публичный ключ из секретного
Так же можно у домена прописать ADSP запись (RFC5617) — это позволит принимающему серверу понять, должно ли ваше письмо быть подписано или нет.
Запись выгладит таким образом:
_adsp._domainkey.example.com. TXT "dkim=all"
По мотивам habrahabra
Хотел настроить для рассылки MailChimp:
Set a TXT (SPF) record for stamina.ru to:
v=spf1 include:servers.mcsv.net ?all
Set the CNAME record for k1._domainkey.stamina.ru to:
dkim.mcsv.net
Вопрос:
1) «?all» — это опечатка (~all) или так и надо?
2) «Полученный приватный ключ сохраняем на сервер в папку, к которой имеет доступ почтовый сервер.В конфигурации домена в hMailServer»
Это уже в саппорт к хостеру обращаться?
Это опечатка (~all) -all
Не уверен что хостер это сделает для вас. В mailenable чуть проще, он сам генерирует пару ключей.