Spf запись

SPF (Sender Policy Framework) — дает возможность добавить DNS записи типа TXT к доменному имени и указать в них IP адреса серверов, с которых разрешена отправка электронной почты. Это необходимо для защиты репутации домена и снижения вероятности попадания писем в спам. Дело в том, что при отправке письма, можно подставить абсолютно любой адрес отправителя в поле "From:", чем и пользуются злоумышленники при рассылке спама и фишинга от чужого имени. Такие рассылки могут значительно навредить репутации вашего домена, и создать проблемы с доставкой электронной почты с вашего домена. А вот IP адреса почтового сервера, с которого была произведена отправка, подделать нельзя. Соответственно если SPF запись для домена есть, то почтовые службы сначала проверят с того ли IP адреса идет рассылка и если не с того, то будут действовать согласно правилам указанным в SPF.

Как создать SPF запись

Как уже писалось выше, SPF это обычная текстовая запись, но данные указываются с использованием определенного синтаксиса, который мы сейчас и рассмотрим.
Пример SPF записи: "v=spf1 +a +mx -all".
начает эта запись следующее — принимать почту с IP адресов, которые указаны в DNS записях типа A и MX для этого же домена (имеется ввиду домен, для которого это запись указана), со всех остальных почту отклонить. Можно ее немного укоротить и написать так: "v=spf1 a mx -all", результат работы будет тот же. Рассмотрим синтаксис более детально.

  • "v=spf1" — используемая версия SPF. На текущий момент она одна, первая версия.
  • "+" — принимать почту. Этот параметр установлен по умолчанию, его отсутствие означает то же самое, что и его наличие.
  • "-" — отклонять почту.
  • "~" — принимать почту, но помещать ее в спам.
  • "?" — относится нейтрально. То есть, принимать как обычное письмо.
  • "mx" — содержит IP адреса всех серверов, указанных в DNS записях типа MX для домена.
  • "ip4" — позволяет указать конкретные IPv4 адреса.
  • "ip6" — то же, что и "Ip4", только указывается IPv6 адрес.
  • "a" — указывает на IP адреса, которые указаны в DNS записях типа A для домена.
  • "include" — разрешает получение почты, согласно SPF другого домена.
  • "all" — все остальные, не перечисленные в SPF записи.

Рассмотрим сложный пример SPF записи

"v=spf1 mx a ip4:154.56.125.94 a:some-domain.com mx:some-domain.com include:some-domain.com ~all"
mx — принимать почту со своих почтовых серверов.
a — принимать почту с серверов, которые указаны в записях типа A для своего домена.
ip4:154.56.125.94 — принимать почту отправленную с IP 154.56.125.94. Также можно указывать подсети в формате 154.56.125.0/24.
a:some-domain.com — принимать почту с серверов, которые указаны в записях типа A для домена some-domain.com. Здесь также есть возможность указать подсеть в формате some-domain.com/24.
mx:some-domain.com — принимать почту с почтовых серверов, указанных в записях типа MX для домена some-domain.com. Возможно указание подсети аналогично с a:some-domain.com.
include:some-domain.com — разрешает получать почту согласно правилам, указанным в SPF для домена some-domain.com.
~all — помещать в спам все письма, отправленные с адресов, не указанных в SPF. Если указать -all, почта будет отклонятся.
Это наиболее часто используемые конструкции для создания SPF, но есть и другие, редко используемые, но о которых стоит знать.​


  • "ptr" — проверяется PTR запись IP адреса отправителя на совпадение с указанным доменом.
    "v=spf1 ptr:your-domain.com -all"
  • "exists" — проверяется резолвится ли домен по какому либо IP адресу, причем IP адрес может быть абсолютно любой.
    "v=spf1 exists:your-domain.com -all"
  • "redirect" — говорит о том, что правила в SPF записи необходимо проверять на другом домене, а не на текущем.
    "v=spf1 redirect:some-domain.com -all"
  • "exp" — позволяет указать текст, который будет отправляеться отправителю письма в случае не соответствия правил, указанных в SPF. Указывается самым последним.
    "v=spf1 a mx -all exp=spferror.your-domain.com"
    Небольшое пояснение, для того, что бы отдавался текст ошибки, необходимо создать домен spferror.your-domain.com и добавить для него TXT запись с желаемым текстом.

hostgid.net


простыми словами

специальная TXT-запись в DNS, в которой указано с каких почтовых серверов может быть отправлена почта для домена. С ее помощью можно снизить общее количество СПАМа, уменьшить вероятность того, что домен будет скомпрометирован и защититься от СПАМа, который использует поле обратного адреса. Расшифровывается как Sender Policy Framework или инфраструктура политики отправителя.

Синтаксис SPF-записи, примерно, следующий:

* где domain.ru — домен, для которого настраивается запись; v=spf1 — указатель на то, что эта TXT-запись является SPF версии 1; a разрешает или запрещает отправку от IP-адреса, которому соответствует А-запись самого домена (в данном примере, domain.ru); mx разрешает или нет отправку от IP-адресов записей MX для нашего домена; -all запрещает отправку писем для всех, кто не прошел проверку (если записать ~all разрешать отправку или нет будет на выбор почтовой системы). знак «+» разрешает (может быть упущен при записи); знак «-» указывает на запрет.

Еще один пример записи:

* здесь мы прямо указали IP-адрес, с которого можно отправлять почту (ip4), а также все, что включены в запись _spf.mailsystem.net.


А вот пример с IPv6:

И конструкция с перенаправлением (Redirect):

* в данном примере, мы используем чужие настройки, перенаправив запросы на _spf.mailsystem.net.

Проверить правильность настройки просто — нужно отправить сообщение себе на почту mail.ru, yandex.ru или gmail.com. Открыть письмо и посмотреть заголовки: если видим Received-SPF: pass — SPF настроена верно.

SPF-запись не является единственным средством подтверждающим легитимность почтового домена. Читайте также про DKIM и PTR, чтобы иметь представление о дополнительных способах защиты доменов.

Подробнее об SPF на Википедии

www.dmosk.ru

Как работает SPF?

Думаю, вы знаете, что у любого домена есть так называемые DNS-записи, которые доступны всем желающим. В этих записях хранится разная служебная информация, необходимая для правильной работы сайта. Владелец сайта может добавлять, изменять, удалять эти записи. Это обычно делается либо у регистратора домена, либо в панели управления хостинг-провайдера.

Например, у вашего сайта есть А-запись. В ней прописано на сервере с каким IP-адресом живет ваш сайт.

Когда потенциальные клиенты обращаются к вашему сайту по имени (например, site.ru), то браузер сначала
обращается к DNS-серверу и запрашивает значение А-записи, из которой узнает IP-адрес сервера, на котором живет ваш сайт, и уже у этого сервера запрашивает весь HTML-код, картинки, таблицы стилей и т.д.


И таких DNS-записей у сайта может быть много. Значение этих записей у любого сайта можно посмотреть через сервис mxtoolbox.com

Как вы уже поняли, одной из таких служебных записей для сайта является SPF-запись, в которой владелец сайта указывает, кто имеет право слать письма от имени его сайта. 

Чуть позже мы с вами научимся генерировать SFP-записи и прописывать их для вашего домена. А сейчас давайте разберемся, как используют SPF все современные почтовые сервисы.

Любой современный почтовый сервис (Google mail, Яндекс.Почта, Mail.ru и т.д.) при получении письма сначала смотрит на домен ящика отправителя и на сайт (сервер), с которого пришло письмо. Например, письмо пришло с сайта сервиса рассылок xservicex.ru, а в поле отправитель стоит ящик admin@site.ru.

Теперь почтовому сервису надо понять, разрешил ли владелец сайта site.ru отправлять письма от имени его домена сервису xservicex.ru. Для этого почтовый сервис обращается к DNS-серверу и запрашивает у него значение SPF-записи для сайта site.ru, по которой он сможет понять, разрешено ли сайту xservicex.ru слать письма от имени site.ru или нет.

В зависимости от ответа почтовый сервис присвоит письму SPF-статус, который может принимать одно из следующих значений:


Pass — отправитель сообщения разрешен (согласно анализу SPF-политики).
Softfail — сообщение не отвечает «жестким» критериям достоверности отправителя, но нельзя и быть уверенным, что отправитель подделан.
Fail — отправитель подделан.
— Прочие варианты на тот случай, когда у домена нет SPF-записи. Например, None, Neutral, Unknown и т.д.

После того, как письму присвоен SPF-статус, оно передается следующим фильтрам почтового сервиса для дальнейших проверок.

Пример SPF-статуса письма в почтовой службе Gmail:

 Spf запись

Среди прочей информации по письму, вы увидите такую строку:

 Spf запись

Поэтому очень важно, чтобы у вашего сайта такая запись была, и там были перечислены доверенные отправители. Иначе, почтовому сервису придется действовать вслепую и самому решать, что делать с письмом.

Как составить SPF-запись для вашего сайта?

Возьмем для примера такую SPF-запись:

site.ru. IN TXT «v=spf1 a mx -all»

Разберем ее по частям:

site.ru. — означает, что SPF запись относится к домену site.ru.


IN TXT — означает, что это текстовая запись (это нам пригодится дальше).

v=spf1 — используется первая версия протокола SPF.

a — означает, что мы разрешаем слать письма с сервера, который указан в A-записи домена site.ru. По сути, этим мы разрешаем слать письма с того сервера, на котором и расположен сайт. Эту опцию полезно указать, если движок вашего сайта шлет какие-то письма или вы используете почту от вашего хостинг-провайдера, или, если ведете почтовую рассылку через скрипт, который живет на вашем основном домене. В общем, этот параметр обычно указывается. Если вам надо, наоборот, запретить принимать письма от сервера, указанного в A-записи, то поставьте знак минуса перед параметром -a.

mx — означает, что мы разрешаем слать письма с сервера, который указан в MX-записи для нашего домена. MX-запись указывает на сервер, который занимается обработкой входящей почты для нашего домена. Например, если вы захотите использовать яндекс.почту для создания почтовых ящиков вашего сайта, то в процессе настройки вас попросят добавить в DNS-записи вашего сайта mx-запись с таким значением: mx.yandex.net, которая указывает, что почту для вашего сайта надо пересылать на почтовые сервера яндекса. А когда мы указываем параметр mx в SPF-записи, то этим мы говорим, что разрешаем домену mx.yandex.net отправлять почту от имени нашего домена. 

-all — этим мы говорим почтовым сервисам, что все письма, которые приходят от имени нашего домена с серверов, которые не указаны в нашей SPF-записи, нужно отклонять. Кроме этого, данный параметр может принимать вид ~all — мягкое отклонение, т.е. письмо будет принято, но будет помечено как СПАМ, а также есть вариант ?all — нейтральное отношение, здесь уже почтовый сервер будет действовать на свое усмотрение.


Теперь давайте разберем еще один пример, в котором будет больше параметров:

site.ru. IN TXT «v=spf1 a mx ip4:176.9.92.131 include:_spf.mlsend.com -all»

Из нового здесь появились два момента:

ip4:176.9.92.131 — означает, что мы разрешаем слать письма от имени нашего сайта с сервера с IP-адресом 176.9.92.131. Это может пригодиться во многих ситуациях. Например, если поддомен вашего сайта расположен на другом сервере, но с этого поддомена идет отправка писем, в которых в качестве обратного адреса используется корневой домен. Или, например, если на каком-то сервере находится сразу несколько доменов, с которых вы разрешаете отправку. Чтобы не перечислять их все, достаточно указать лишь IP-адрес сервера, на котором они находятся.

include:_spf.mlsend.com — этой записью мы говорим следующее — все сервера, которые указаны в SPF-записи для домена mlsend.com, также имеют право отправлять письма от имени моего домена. Это обычно используется в тех случаях, когда вы ведете рассылку, используя сторонний сервис рассылок. Т.к. сервисы рассылок шлют письма со многих разных серверов и они у них постоянно меняются, то было бы неудобно указывать все эти сервера в нашей SPF-записи. Для таких случаев гораздо удобнее использовать опцию include, которой мы разрешаем слать письма от имени нашего домена всем серверам, указанным в SPF-записи нашего сервиса рассылок. В данном случае приведен пример для сервиса Mailerlite.


И последний пример, который познакомит нас с еще одним параметром:

site.ru. IN TXT «v=spf1 redirect=site.com -all»

redirect=site.com — это уже не параметр, а так называемый модификатор. Он заменяет SPF-запись для домена site.ru SPF-записью, которая прописана для домена site.com. Это может пригодиться в том случае, если у нас много доменов в разных языковых зонах, а обработкой и отправкой почты для всех этих доменов занимается один сервер. Чтобы нам не прописывать SPF для всех доменов, мы прописываем их только для одного, а для всех остальных прописываем модификатор redirect. Теперь, если нам надо будет что-то изменить в SPF-записи, то нам не надо будет менять ее во всех наших доменах, а достаточно будет поменять в одном. Этот модификатор похож на параметр include, но отличается от него тем, что он просто заменяет всю текущую запись, а include лишь добавляет параметры целевого домена к существующим параметрам.

О других, более редких параметрах и модификаторах SPF-записи, вы можете почитать на официальном сайте.

Таким образом, чтобы составить верную SPF-запись, вам надо определиться с тем, какие сервера имеют право слать почту от имени вашего домена, а затем указать их в качестве параметров.

Самое простое, что вы можете сейчас прописать для защиты вашего сайта от спуфинга, это:

site.ru. IN TXT «v=spf1 a mx -all»

Вместо site.ru. будет ваш домен. Если, например, вы используете Яндекс.почту для создания почтовых ящиков своего домена, то запись нужно расширить до такой:

site.ru. IN TXT «v=spf1 a mx include:_spf.yandex.net -all»

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

Например, если я веду рассылку через сервис MailerLite и при этом для этого домена использую яндекс.почту, то SPF-запись у меня будет выглядеть так:

site.ru. IN TXT «v=spf1 a mx include:_spf.yandex.net include:_spf.mlsend.com -all»

Как настроить SPF для вашего сайта?

Шаг 1. Добавляем новую DNS-запись.
Зайдите в интерфейс добавления новых DNS-записей у вашего регистратора или хостинг-провайдера. Найдите там возможность добавить новую DNS-запись.

Это может выглядеть так:

Spf запись

Шаг 2. Заполняем поля и добавляем запись

В поле Хост укажите @ или название вашего домена с точкой на конце, например site.ru.
Тип записи укажите TXT. В поле Значение пропишите получившуюся у вас SPF-строку в кавычках.

Пример:

Spf запись

 

Шаг 3. Ждем обновления. Проверяем результат

После добавления записи вы увидите ее в списке ваших DNS-записей.

Это может выглядеть так:

Spf запись

Теперь надо подождать, пока эти изменения станут видны на всех DNS-серверах сети Интернет. Обычно этот процесс занимает от нескольких секунд до 72 часов. Далее можно проверить вашу SPF-запись, через этот сервис:

mxtoolbox.com

Пример проверки:

Spf запись

 

Учтите, что SPF-запись у домена может быть только одна. Если вы добавите несколько SPF-записей, это будет считаться ошибкой.

Итоговые мысли

SPF — это только первый этап защиты от спуфинга. Это один из параметров, который учитывает почтовый сервис в своей комплексной антиспам-политике при обработке входящей почты. Итоговое решение о том, поместить письмо в папку «Входящие», отправить его в спам или вовсе отклонить, почтовый сервис принимает по совокупности всех параметров, которые он учитывает.

В любом случае, я советую вам настроить SPF-политику для вашего домена. Чем больше людей будет использовать данную технологию, тем она быстрее станет массовой и станет работать гораздо эффективнее.

В следующих статьях мы с вами поговорим о других инструментах защиты от спуфинга таких, как: DKIM и DMARC.

evgeniypopov.com

Основы SPF

В SPF используется 3 блока:

  1. Версия

  2. Префикс-механизм

  3. Модификатор

Версия на данный момент только одна — “v=spf1”.

Префиксы:

  • "+" Pass — принимать сообщения. Параметр по умолчанию

  • "-" Fail — не принимать сообщения

  • "~" SoftFail — отправлять в СПАМ

  • "?" Neutral — нейтральное отношение, требуется дополнительная проверка.

Основные механизмы:

  • all — любой сервер

  • ip4, ip6 — адрес сервера,

  • a, mx — сервер из DNS записи A или MX соответственно

  • include — взять данные с другого адреса

Модификаторы:

  • redirect — использовать данные другого адреса

  • exp — ссылка на сообщение при отказе принятия сообщения

Примеры

v=spf1 -all

Игнорировать всю почту с домена.

 

v=spf1 +a +mx -all

Принимать сообщения с серверов указанных в A и MX записях, сообщения с остальных серверов должны быть отклонены.

 

v=spf1 +mx ~all

Принимать сообщения с серверов указанных MX записях, сообщения с остальных серверов будут приняты, но отправлены в СПАМ.

 

v=spf1 redirect:example.com

Забрать все правила с домена example.com.

 

v=spf1 ip4:example.com/24 -all

Доверять всей почте из адресного пространства example.com класса C (например, есле example.com имеет ip адрес 10.123.41.12, то доверие будет всем 10.123.41.[0-255]). Остальная почта будет проигнорирована.

Какие могут быть серверы отправки почты?

Условно серверы отправки почты можно разделить на 3 группы:

  1. Популярные почтовые сервисы, к которым вы привязали свой домен. Например: Google App, Yandex PDD, Mail.ru для бизнеса.

  2. Хостинг

  3. Собственный почтовый сервер

SPF для популярных сервисов.

На момент написания статьи они выглядят следующим образом.

Google App:

“v=spf1 include:_spf.google.com ~all”

Yandex PDD:

“v=spf1 redirect=_spf.yandex.ru”

Mail.ru:

“v=spf1 redirect=_spf.mail.ru”

Как подобрать SPF для собственного почтового сервера или хостинга.

Для начала Вы можете заглянуть в настройки своего почтового клиента и посмотреть какой используется для отправки почты (SMTP сервер). Но этот адрес не всегда может соответствовать адресу сервера с которого действительно будет отправлено сообщение.

Самый верный вариант, это просмотреть исходное сообщение полученного письма и найти там информацию о сервере отправителя.

Например:

Received: from gateway08.websitewelcome.com (gateway08.websitewelcome.com. [67.18.36.18])

Из этого сообщения мы можем понять имя сервера “gateway08.websitewelcome.com” и ip адрес 67.18.36.18. IP адрес лучше не использовать, т.к. он может изменяться очень часто. Домен 3-го уровня в этом случае то же лучше не использовать, т.к. из его названия понятно что он не один, и следующее письмо может быть отправлено уже с другого домена. Лучше просто взять “websitewelcome.com”.

Далее проверяем, есть ли у websitewelcome.com SPF запись. В этом нам может помочь утилита dig.

$ dig TXT websitewelcome.com

В ответе найдём:

websitewelcome.com. 19117 IN TXT "v=spf1 a mx ip4:64.5.0.0/16 ip4:67.18.0.0/16 ip4:69.41.0.0/16 ip4:69.56.0.0/16 ip4:69.93.0.0/16 ip4:70.85.0.0/16 ip4:74.52.0.0/16 ip4:174.132.0.0/16 ip4:174.120.0.0/16 ip4:173.192.100.229 ip4:173.192.111.0/24 include:spf.websitewelcome.com"

Данная запись выглядит вполне жизнеспособной, можем просто забрать её:

“v=spf1 redirect=websitewelcome.com”

Заключение

SPF позволяет ограничить с каких серверов может отправляться почта от имени Вашего домена. При настройке, необходимо быть внимательным что бы не дать “лишним” адресам разрешения. Так же Вы можете воспользоваться конструктором, который поможет сгенерировать SPF запись.

www.freedev.world

Версия для печатиОтправить другуPDF version

Как всем известно, протокол отправки электронной почты SMTP, подразумевает, что в качестве отправителя можно указать любой почтовый ящик. Таким образом можно послать письмо, подставив в поле "From" вымышленное значение. Процесс такого почтового обмана называется Спуфинг (e-mail spoofing). Чтобы бороться с этим явлением, был разработан и введен в действие стандарт SPF – Sender Policy Framework (структура политики отправителя).

SPF позволяет владельцу домена указать в TXT-записи домена специальным образом сформированную строку, указывающую список серверов, имеющих право отправлять email-сообщения с обратными адресами в этом домене.

Рассмотрим простой пример SPF-записи.

 example.org. IN TXT "v=spf1 +a +mx -all"

Теперь более детально о допустимых опциях. Рассмотрим варианты поведения получателя, в зависимости от используемых опций:

  • "v=spf1" — используемая версия SPF.
  • "+" — принимать корреспонденцию (Pass). Этот параметр установлен по умолчанию. Тоесть, если никаких параметров не установлено, то это "Pass";
  • "-" — Отклонить (Fail);
  • "~" — "мягкое" отклонение (SoftFail). Письмо будет принято, но будет помечено как СПАМ;
  • "?" — нейтральное отношение;
  • "mx" — включает в себя все адреса серверов, указанные в MX-записях домена;
  • "ip4" — опция позволяет указать конкретный IP-адрес или сеть адресов;
  • "a" — указываем поведение в случае получения письма от конкретного домена;
  • "include" — включает в себя хосты, разрешенные SPF-записью указанного домена;
  • "all" — все остальные сервера, не перечисленные в SPF-записи.

Итак, попробуем разобраться, что же значит SPF-запись, указанная выше.

  • "+a" — разрешает прием писем от узла, IP-адрес которого совпадает с IP-адресом в A-записи для example.org;
  • "+mx" —  разрешает прием писем, если отправляющий хост указан в одной из MX-записей для example.org;
  • "-all" — все сообщения, не прошедшие верификацию с использованием перечисленных механизмов, следует отвергать.

Для лучшего понимания того, как работает SPF, рассмотрим еще один, более сложный пример.

 example.org. IN TXT "v=spf1 mx ip4:195.3.159.250 +a:smtp.mail.ru include:gmail.com ~all"

Теперь более подробно о используемых опциях…

  • "mx" — принимать письма от серверов, указанных в MX-записях;
  • "ip4:195.3.159.250" — принимать письма, отправленные с IP-адреса 195.3.159.250;
  • "+a:smtp.mail.ru" — то же, что и a:smtp.mail.ru. Принимать от smtp.mail.ru;
  • "include:gmail.com" — принимать письма с серверов, разрешенных SPF-записями gmail.com;
  • "~all" — принимать письма со всех остальных серверов, но помечать их как СПАМ

А теперь рассмотрим еще более "экзотичный" пример. В описании возможных опций указывалось, что возможно указание сетей ip-адресов. Стоит отметить, что это применимо и к записям "a" и "mx". Рассмотрим следующий пример.

 

 example.org. IN TXT "v=spf1 mx/24 a:muff.kiev.ua/24 -all"
  • "mx/24" — в список разрешенных отправителей входят все IP-адреса, находящихся в тех же сетях класса С, что и MX-ы домена;
  • "a:muff.kiev.ua/24" — в список разрешенных отправителей входят все IP-адреса, находящихся в тех же сетях класса С, что и А-записи домена muff.kiev.ua;
  • "-all" — всех остальных отправителей — блокируем.

Иногда можно встретить следующие записи (очень редко):

  • "ptr" — проверяет PTR-запись IP-адреса отправителя. Если она сходится с указаным доменом, то механизм проверки выдает положительный результат. Тоесть, разрешено отправлять всем IP-адресам, PTR-запись которых направлены на указанный домен. Серьезным недостатком даного метода есть то, что генерируется очень большое количество DNS-запросов;
  • "exists" — выполняется проверка, резолвится ли домен на какой-либо IP-адрес. Тоесть, по существу, выполняется проверка работоспособности доменного имени. Кстати, не имеет значения, на какой IP-адрес резолвится домен, даже если это "серые" сети (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) или loopback (127.0.0.1).

Пример использования:

 example.org. IN TXT "v=spf1 ptr:example.org exist:example.org -all"

Также не будет излишним ознакомиться со следующими опциями: redirect и exp.

"redirect" — указывает получателю, что нужно проверять SPF-запись указаного домена, вместо текущего домена. Пример:

 

 example.org. IN TXT "v=spf1 redirect:example.com ~all"

 В даном примере будет проводится проверка SPF-записи домена example.com, а не example.org.

"exp" — использование даной опции позволяет задать сообщение о ошибке, которое будет передано отправителю при возникновении таковой. Размещается в конце SPF-записи, даже после опции all. Рассмотрим более детально механизм работы опции exp.

Допустим, что у домена example.org следущая SPF-запись:

 

 example.org. IN TXT "v=spf1 +a +mx -all exp=spf.example.org"

 

Теперь содаем TXT-запись для домена spf.example.org:

 

 spf.example.org. IN TXT "You host not allowed e-mail to me from this domain!"

 

В результате этих шаманских действий SPF-запись будет контролировать, чтобы почта доставлялась только от валидных хостов, а всем остальным будет отправляться сообщение о ошибке, прописанное в TXT-записи домена spf.example.org.

На этой позитивной ноте, пожалуй, статью можно закончить. Азы использования SPF-записи описаны, а механизм работы можно изучить более детально при практическом использовании.

www.muff.kiev.ua

SPF-запись — проверка отправителя.

Как всем известно, протокол отправки электронной почты SMTP, подразумевает, что в качестве отправителя можно указать любой почтовый ящик. Таким образом можно послать письмо, подставив в поле «From» вымышленное значение. Процесс такого почтового обмана называется Спуфинг (e-mail spoofing). Чтобы бороться с этим явлением, был разработан и введен в действие стандарт SPF – Sender Policy Framework (структура политики отправителя).

SPF позволяет владельцу домена указать в TXT-записи домена специальным образом сформированную строку, указывающую список серверов, имеющих право отправлять email-сообщения с обратными адресами в этом домене.

Рассмотрим простой пример SPF-записи:

example.org. IN TXT «v=spf1 +a +mx -all»

Теперь более детально о допустимых опциях. Рассмотрим варианты поведения получателя, в зависимости от используемых опций:

 

  • «v=spf1» — используемая версия SPF.
  • «+» — принимать корреспонденцию (Pass). Этот параметр установлен по умолчанию. Тоесть, если никаких параметров не установлено, то это «Pass»;
  • «-» — Отклонить (Fail);
  • «~» — «мягкое» отклонение (SoftFail). Письмо будет принято, но будет помечено как СПАМ;
  • «?» — нейтральное отношение;
  • «mx» — включает в себя все адреса серверов, указанные в MX-записях домена;
  • «ip4» — опция позволяет указать конкретный IP-адрес или сеть адресов;
  • «a» — указываем поведение в случае получения письма от конкретного домена;
  • «include» — включает в себя хосты, разрешенные SPF-записью указанного домена;
  • «all» — все остальные сервера, не перечисленные в SPF-записи.

 

Итак, попробуем разобраться, что же значит SPF-запись, указанная выше.

 

  • «+a» — разрешает прием писем от узла, IP-адрес которого совпадает с IP-адресом в A-записи для example.org;
  • «+mx» — разрешает прием писем, если отправляющий хост указан в одной из MX-записей для example.org;
  • «-all» — все сообщения, не прошедшие верификацию с использованием перечисленных механизмов, следует отвергать.

 

Для лучшего понимания того, как работает SPF, рассмотрим еще один, более сложный пример:

example.org. IN TXT «v=spf1 mx ip4:78.110.50.123 +a:mail.ht-systems.ru include:gmail.com ~all»

Теперь более подробно о используемых опциях…

 

  • «mx» — принимать письма от серверов, указанных в MX-записях;
  • «ip4:78.110.50.123» — принимать письма, отправленные с IP-адреса 78.110.50.123;
  • «+a:mail.ht-systems.ru» — то же, что и a:mail.ht-systems.ru. Принимать от mail.ht-systems.ru;
  • «include:gmail.com» — принимать письма с серверов, разрешенных SPF-записями gmail.com;
  • «~all» — принимать письма со всех остальных серверов, но помечать их как СПАМ

 

А теперь рассмотрим еще более «экзотичный» пример. В описании возможных опций указывалось, что возможно указание сетей ip-адресов. Стоит отметить, что это применимо и к записям «a» и «mx». Рассмотрим следующий пример:

example.org. IN TXT «v=spf1 mx/24 a:hts.ru/24 -all»

«mx/24» — в список разрешенных отправителей входят все IP-адреса, находящихся в тех же сетях класса С, что и MX-ы домена;
«a:hts.ru/24» — в список разрешенных отправителей входят все IP-адреса, находящихся в тех же сетях класса С, что и А-записи домена hts.ru;
«-all» — всех остальных отправителей — блокируем.

Иногда можно встретить следующие записи (очень редко):

«ptr» — проверяет PTR-запись IP-адреса отправителя. Если она сходится с указаным доменом, то механизм проверки выдает положительный результат. Тоесть, разрешено отправлять всем IP-адресам, PTR-запись которых направлены на указанный домен. Серьезным недостатком даного метода есть то, что генерируется очень большое количество DNS-запросов;
«exists» — выполняется проверка, резолвится ли домен на какой-либо IP-адрес. Тоесть, по существу, выполняется проверка работоспособности доменного имени. Кстати, не имеет значения, на какой IP-адрес резолвится домен, даже если это «серые» сети (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) или loopback (127.0.0.1).

Пример использования:

example.org. IN TXT «v=spf1 ptr:example.org exist:example.org -all»

Также не будет излишним ознакомиться со следующими опциями: redirect и exp.

«redirect» — указывает получателю, что нужно проверять SPF-запись указаного домена, вместо текущего домена. Пример:

example.org. IN TXT «v=spf1 redirect:example.com ~all»

В даном примере будет проводится проверка SPF-записи домена example.com, а не example.org.

«exp» — использование даной опции позволяет задать сообщение о ошибке, которое будет передано отправителю при возникновении таковой. Размещается в конце SPF-записи, даже после опции all. Рассмотрим более детально механизм работы опции exp.

Допустим, что у домена example.org следущая SPF-запись:

example.org. IN TXT «v=spf1 +a +mx -all exp=spf.example.org»

Теперь содаем TXT-запись для домена spf.example.org:

spf.example.org. IN TXT «You host not allowed e-mail to me»

В результате этих шаманских действий SPF-запись будет контролировать, чтобы почта доставлялась только от валидных хостов, а всем остальным будет отправляться сообщение о ошибке, прописанное в TXT-записи домена spf.example.org.

Так же стоит обратить внимание, что любое решение о блокировке или маркировке письма как спам, решает программа которая обрабатывает получение почты на сервере, иногда даже почтовые программы это тоже делают.

adminunix.ru

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

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

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

Чтобы успешно пройти анти-спам систему спамеру (или мошеннику) будет необходимо: «чистый ip», красивое письмо и домен без защиты (примеры №1 и №3). Чтобы предотвратить отправку писем от «вашего имени» (фишинг) достаточно лишь добавить соответствующую 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. Правильно выбирайте механизм обработки писем (Pass, Fail, SoftFail, Neutral). При безусловной переадресации вашего письма из одной почтовой системы в другую может возникнуть проблема, так как SPF проверяет только последний «хоп».
  3. Рекомендуется создавать SPF-записи для всех доменов второго уровня, которые принадлежат вам или вашей компании, даже если вы не отправляете от их имени письма. Для таких доменов желательно использовать простую запись «v=spf1 -all», которая говорит, что никто не можем отправлять письма от этих доменов.
  4. Домены третьего уровня защитить можно с помощью wildcard-записи типа «*.example.com. IN TXT «v=spf1 -all»». Но, обратите внимание на то, что wildcard работает только для несуществующих поддоменов. Например, если у вас есть поддомен moscow.example.com с MX-записями, запись «*.example.com. IN TXT «v=spf1 -all»» не будет на нее распространяться. Подробнее описано в статье на Wikipedia и RFC 1034.

    Moreover, the wildcard is matched only when a domain does not exist, not just when there are no matching records of the type that has been queried for. Even the definition of «does not exist» as defined in the search algorithm of RFC 1034 section 4.3.2 can result in the wild card not matching cases that one might expect with other types of wildcards.

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

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

habr.com

Настройка SPF записи

Параметр "a" означает, что письма могут
приниматься, если отправка произошла с узла, который указан в записи "a"
доменного имени. В записи "a" обычные указывается IP-адрес, на котором
размещается ресурс.

Параметр "mx" указывает, что письма могут приниматься, если отправка
произошла с узла, который указан в записи "mx" доменного имени. В записи
"mx" обычные указывается почтовый сервис, который обрабатывает отправку
писем.

ip4:<ip-адрес> или ip6:<ip-адрес> указывает IP-адреса
дополнительных серверов, от которых можно принимать электронную почту,
соответственно "ip4" и "ip6" означает форматам адреса IP.

Параметр all задается в конце записи.

Параметр ~all указывает, что если все предыдущие правила не выполнены, то письма необходимо направить на тщательную проверку.

Параметр -all указывает, что если все предыдущие правила не выполнены, то письма необходимо отклонить.

Запись include указывает на то, с каких указанных хостов можно принимать
электронную почту, кроме прочих правил. Например,
include:_spf.google.com.

Запись redirect указывать на то, с каких указанных хостов требуется проверять SPF-запись. Например, redirect=_spf.mail.ru.

Как использовать на практике. Например, если есть сайт и электронная
почта на gmail.com или mail.ru и отправка почты происходит только с
gmail.com, или только с mail.ru, то можно прописать redirect с указанием
ссылки на сервис. Например, v=spf1 redirect=_spf.google.com. Таким
образом, вы оградите себя от рассылки конкурентов от вашего имени.

Множественное использование SPF-записей в DNS не рекомендуется,
поскольку все правила можно прописать одной строкой и несколько записей
могут привести к ошибке обработки.

hroft-clone3.livejournal.com


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock
detector