Значимость SPF

Хочу обратить ваше внимание на важную, на мой взгляд, проблему, которой пренебрегают даже самые крупные и инновационные компании мира. Проблема заключается в отсутствии у большинства доменов SPF-записи, которая защищает домен от его несанкционированного использования в электронной почте.
SPF (Sender Policy Framework) представляет из себя текстовую запись в SPF и/или TXT-записи для домена в DNS. Запись содержит информацию о списке серверов, которые имеют право отправлять письма от имени этого домена и механизм обработки писем, отправленных от других серверов.
Например, SPF-запись «example.com. TXT «v=spf1 +a +mx -all»» говорит о том, что отправлять письма от имени домена «example.com» могут сервера, указанные в A и MX-записях этого домена, а письма, отправленные от других серверов должны быть удалены (Fail).
0dcdbb83556c4831863003891e6c7021.png
Важно понимать, что SPF-запись не наследуется на поддомены. Для каждого домена третьего (и ниже) уровней необходима своя запись.
Всю подробную информацию о данной технологии можно найти на сайте проекта «Sender Policy Framework».

Почему это важно?


На текущий момент все продвинутые анти-спам системы используют 3 основных типа анализа писем (и их вариации):

  1. Анализ IP-адреса сервера отправителя: его репутация, корректность A и PTR-записей.
  2. Анализ SPF/DMARC записей домена и цифровой подписи DKIM.
  3. Анализ содержимого: заголовки, тема, текст, ссылки и т.д.


Чтобы успешно пройти анти-спам систему спамеру (или мошеннику) будет необходимо: «чистый ip», красивое письмо и домен без защиты (примеры №1 и №3). Чтобы предотвратить отправку спама/вирусов или другой информации от «вашего имени» достаточно лишь добавить соответствующую SPF/TXT-запись к домену (пример №2).

Примеры


В качестве примера я отправил 3 простых письма с помощью telnet и SMTP команд. 2 письма покажут работу спам-фильтра SpamAssassin (сервис mail-tester.com), а последнее письмо будет проходить анти-спам фильтр Gmail. Для чистоты экспериментов я использовал «чистый» IP-адрес (найти его было не так и сложно) и текст без ссылок и HTML.

# From To Результат SPF домена отправителя
1 bill.gates@microsoft.ru *@mail-tester.com Успешно. Баллов в mail-tester.com: 7/10 -
2 bill.gates@microsoft.com *@mail-tester.com Неуспешно. Баллов в mail-tester.com: 2.1/10 v=spf1 include:_spf-a.microsoft.com include:_spf-b.microsoft.com include:_spf-c.microsoft.com include:_spf-ssg-a.microsoft.com include:spf-a.hotmail.com ip4:147.243.128.24 ip4:147.243.128.26 ip4:147.243.1.153 ip4:147.243.1.47 ip4:147.243.1.48 -all
3 bill.gates@microsoft.ru *@gmail.com Успешно -


Письмо №1:
Пример №1. Mail-Tester. SPF не задан.
Письмо №2:
Пример №2. Mail-Tester. SPF задан.
Письмо №3:
Пример №3. Gmail. SPF не задан.

Пример №3. Gmail. Письмо

Пример №3. Gmail. Заголовки

Как видно из результатов, письмо от домена «microsoft.com» не прошло бы анти-спам фильтр, даже если у него идеально чистое содержание. А вот письмо от имени домена «microsoft.ru» прошло проверку и у SpamAssassin и у Gmail, так как оно не защищено.

Советы


  1. Перед установкой SPF-записи удостоверьтесь, что все ваши сервера, отправляющие письма в интернет, учтены. Не забудьте про web-сервера и другие внешние системы, иначе вы можете потерять часть писем, и тем самым навредить себе и бизнесу.
  2. Рекомендуется создавать SPF-записи для всех доменов второго уровня, которые принадлежат вам или вашей компании, даже если вы не отправляете от их имени письма. Для таких доменов желательно использовать простую запись «v=spf1 -all», которая говорит, что никто не можем отправлять письма от этих доменов.
    Домены третьего уровня защитить можно с помощью wildcard-записи типа «* IN TXT «v=spf1 -all»». Например, проверьте SPF любого поддомена «telegram.org».
  3. SPF-записи рекомендуется создавать не только для доменов, но и для почтовых серверов, которые занимаются отправкой писем в интернет. Это необходимо, чтобы пройти HELO/EHLO Test принимающего сервера. Стандартная запись: «mx.example.com. IN TXT «v=spf1 a -all»».
  4. Если у вас много доменов, которые обслуживаются несколькими основными MX-серверами, то советую использовать механизм «redirect». Например, основной домен «example.com» имеет SPF-запись «v=spf1 +a +mx -all», то остальным доменам (example1.com, example2.com и т.д.), для упрощения обслуживания, можно прописать запись «v=spf1 redirect=example.com».
  5. Если у вас много доменов и много почтовых серверов отправителей, распределенных географически и организационно, то можно использовать механизм «include» и отдельную зону «_spf.example.com». Как пример можно посмотреть запись для домена gmail.com – «v=spf1 redirect=_spf.google.com».
  6. Кроме защиты своих доменов рекомендуется защитить свою почтовую систему и пользователей, включив проверку SPF/DKIM/DMARC записей на ваших внешних почтовых серверах. Это будет хорошим дополнением даже для таких мощных программно-аппаратных комплексов, как Cisco IronPort.
  7. Как только полностью разберетесь с SPF, советую изучить вопрос подписи ваших электронных писем с помощью технологии DKIM, это существенно увеличит репутацию писем.

Товарищи айтишники, не подставляйте себя и свою компанию – установите SPF-записи для всех своих доменов и MX-серверов.

Полезные сервисы


Тестирование SPF-записи
Анализ письма анти-спам фильтром SpamAssassin
Много полезных тестов (MX, SPF, Blacklist, DKIM Lookup и т.д.)
Проверка репутации почтовых серверов и доменов
Проверка домена и серверов-отправителей (здесь вы увидите кто отправляет письма от имени вашего домена)

© Habrahabr.ru