Что такое SPF (Sender Policy Framework)?

Mar 6, 2017 11:17 · 483 words · 3 minute read spf

Если вы пользуетесь услугами популярных почтовых провайдеров, таких как Gmail или Mail.ru, которые поддерживают требования безопасности на высоком уровне, то вам совершенно не о чем беспокоиться.

Но если вы администратор или владелец домена (и шлете почту не только себе), то следует знать, что такое SPF (Sender Policy Framework). Давайте разберемся!

Понятие SPF (Sender Policy Framework) неразрывно связано с противодействием спуфингу (англ. spoofing) — попыткой человека или программы представиться кем-то (чем-то) другим и получить незаконные преимущества. Например, информацию об отправителе письма (поле From:) можно легко подделать, и этот метод наиболее часто используется спамерами.

Sender Policy Framework — это расширение для протокола отправки почты (SMTP), с помощью которого можно проверить, не подделан ли домен отправителя почтового сообщения. Для корректной работы SPF владелец домена в соответствующей TXT-записи должен указать список серверов, имеющих право отправлять письма от имени e-mail адресов этого домена.

Давайте рассмотрим конкретный пример:

dig work.ua TXT | grep spf
work.ua.                57416   IN      TXT     "v=spf1 a mx ip4:89.184.80.167 ip4:89.184.66.189 ip4:89.184.66.22 ip4:89.184.66.23 ip4:89.184.80.160/28 -all"

В данном примере:

  • v=spf1 — версия используемой SPF-записи;
  • a — принимать почту с сервера, IP-адрес которого стоит в A-записи домена (проще говоря с сервера, где размещен сайт);
  • mx — принимать почту с серверов, указаных в MX-записях домена;
  • ip4:89.184.80.167 ip4:89.184.66.189 ip4:89.184.66.22 ip4:89.184.66.23 — принимать почту с серверов, которым соответствуют перечисленные IP-адреса;
  • ip4:89.184.80.160/28 — принимать почту с серверов, IP-адреса которых находятся в указанной подсети (диапазоне);
  • -all — письмо с сервера, который не входит в вышеперечисленный список, отвергается.

Еще один пример:

dig gmail.com TXT | grep spf
gmail.com.              100     IN      TXT     "v=spf1 redirect=_spf.google.com"

В данном примере:

  • v=spf1 — версия используемой SPF-записи;
  • redirect — SPF-записи для данного домена определены в другом домене (_spf.google.com). Копнем глубже:
dig _spf.google.com TXT | grep spf
; <<>> DiG 9.9.5-9+deb8u9-Debian <<>> _spf.google.com TXT
;_spf.google.com.               IN      TXT
_spf.google.com.        33      IN      TXT     "v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all"

В данном примере:

  • v=spf1 — версия используемой SPF-записи;
  • include — включает в текущую SPF-запись значение SPF-записи другого домена(ов), здесь это домены _netblocks.google.com, _netblocks2.google.com и _netblocks3.google.com;
  • ~all — письмо с сервера, который не входит в вышеперечисленный список, стоит проанализировать более тщательно.

Погрузимся еще на один уровень:

dig _netblocks.google.com TXT | grep spf
_netblocks.google.com.  2251    IN      TXT     "v=spf1 ip4:64.18.0.0/20 ip4:64.233.160.0/19 ip4:66.102.0.0/20 ip4:66.249.80.0/20 ip4:72.14.192.0/18 ip4:74.125.0.0/16 ip4:108.177.8.0/21 ip4:173.194.0.0/16 ip4:207.126.144.0/20 ip4:209.85.128.0/17 ip4:216.58.192.0/19 ip4:216.239.32.0/19 ~all"

В данной SPF-записи уже привычно указана версия (v=spf1), перечислен список «доверенных» диапазонов IP-адресов для отправки почты и требование проанализировать тщательнее почту, отправленную с остальных (не «доверенных») серверов.

Согласно спецификации Sender Policy Framework существует четыре классификатора:

  • + pass — клиенту разрешено слать письма от имени e-mail адресов этого домена;
  • - fail — клиенту не разрешено слать письма от имени e-mail адресов этого домена;
  • ~ soft fail — среднее между fail и none — необходимо дополнительно проанализировать письмо;
  • ? neutral — аналогично none — нельзя утверждать, разрешено или нет клиенту слать письма от имени e-mail адресов этого домена.

Конечно, стоит помнить, что SPF — это не ‘серебрянная пуля’ от спамеров, а всего лишь один дополнительный признак при фильтрации спама.

tweet Share