Что такое и как создать SPF запись для домена. Больше нет писем в папке Spam: настройка SMTP-сервера

31.03.2019

Недавно мы настраивали SMTP-сервер для нашего проекта. Вопрос стоял так: что нужно сделать, чтобы письма, отправленные нашим пользователям, не попадали в папку со спамом или попадали туда как можно реже?

Было найдено несколько интересных и полезных статей на эту тему (ссылки в конце статьи), на основе которых и было всё сделано в итоге. Но получив сегодня утром очередную порцию рассылки от достаточно известных русскоязычных ресурсов и увидев, что они пренебрегают описанными правилами, я решил кратко и в одном месте собрать все действия, которых достаточно для решения проблемы. Надеюсь, что после этого количество сайтов, отправляющих почту как надо, возрастет.

Приведенные советы актуальны только если вы используете свой собственный SMTP-сервер. При использовании, например, SMTP сервера Google всё уже сделано за нас. Как правило. В любом случае рекомендую проверить (см. подразделы Как проверить? ).

Пункты расположены по степени значимости. Лучше не приступать к следующему, не завершив предыдущий.

Пропишите Reverse DNS

Название говорит само за себя. Reverse DNS lookup - процедура обратная DNS lookup. По IP адресу мы, а точнее почтовый сервер пользователя, получаем доменное имя. Если он совпадает с доменным именем в поле From, отправляемого письма, то всё в порядке.

Как сделать?
В большинстве случаев вы сами не сможете это сделать, если не являетесь владельцем диапазона IP-адресов. Поэтому единственный способ сделать данную настройку - попросить сделать это вашего хостинг-провайдера.

Как проверить?
Используйте любой из online-сервисов Reverse DNS lookup. Например, этот . Достаточно ввести IP-адрес сервера, с которого производится отправка почты. Если в результате отображается ваш домен, то всё в порядке.

В большинстве случаев достаточно следующей записи:
example.com. TXT v=spf1 a mx ~all

Эта запись говорит о том, что почту можно отправлять с любого IP, указанного в записях A (AAAA) и MX данного домена и только с них.

Как проверить?
Отправьте почту через ваш сервис на любой GMail-аккаунт. Откройте полученное письмо и выберите в меню действий пункт Show Original.

Если вы найдете следующие строчки, то всё в порядке:
Received-SPF: pass
Authentication-Results: ... spf=pass

Итого

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

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

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

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

Допустим вы получили на почте крайне подозрительного вида посылку, якобы от любимого дедушки Константина Макаровича, но почему то штемпель отправителя указывает не на почтовое отделение села Макаровки, а на хутор Гадюкино совсем в другом конце страны. Будете вы открывать такую посылку, рискуя обнаружить вместо банки варенья из райских яблочек споры сибирской язвы, или отправите ее назад, от греха подальше?

Точно также и в системах электронной почты. Если вам пришло письмо от дедушки [email protected] , но сервер отправитель почему-то mail.spam.com , то это повод не принимать такое письмо, так как оно с большой долей вероятности является спамом.

Каким образом мы осуществили данную проверку? Очень просто, посмотрели на штемпель почтового отделения отправителя и сравнили его с обратным адресом. Например на конверте написано, что отправитель находится в городе Москва, однако на штемпеле отделения-отправителя стоит индекс 683000, который указывает на Петропавловск-Камчатский. Следовательно такое письмо мы принимать не будем, так как оно не прошло проверку отправителя.

Аналогично обстоит дело и с электронным письмом, только вместо индекса отделения-отправителя используется PTR-запись . Так получив письмо от дедушки, мы сделаем PTR-запрос и выясним, что сервер отправитель у нас mail.spam.com , в то время как согласно переданной при соединении информации должен быть mail.example.com . Все понятно, письмо падает в спам.

Однако если в заголовке будет указано, что сервер отправитель у нас mail.spam.com , то такое письмо успешно пройдет проверку по PTR-записи , не смотря на то, что домен сервера отправителя не совпадает с почтовым доменом письма.

Почему так происходит? Потому что проверка по PTR-записи позволяет определить лишь то, что сервер-отправитель действительно тот, за кого себя выдает. Но никоим образом не определяет подлинность самого отправителя. Т.е. обращаясь к примеру обычной почты мы проверяем лишь то, что обратный адрес и индекс отделения отправителя совпадают, если место отправления Москва, а индекс указывает на Петропавловк-Камчатский, то проверку по PTR такое письмо не прошло, а если место отправления и индекс совпадают, то все нормально и теперь уже ваша задача думать, что делает ваш любимый дедушка в Петропавловске-Камчатском.

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

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

Сервер mail.example.com отправляет письмо для обслуживаемого им домена eхample.org . Сервер-получатель делает запрос PTR-записи и убеждается, что по адресу 123.123.123.123 действительно находится mail.example.com , следовательно такое письмо будет принято, хотя домен отправителя письма и домен сервера-отправителя не совпадают.

А теперь иная ситуация.

Администратор неправильно настроил DNS-зону, указав неправильный хост в PTR-записи . Cервер-получатель, проверив PTR-запись отклонит наше письмо, так как сервер отправитель не совпадает с результатом обратного DNS-запроса.

Отсутствие PTR-записи практически всегда ведет к отклонению письма, потому как существует негласное соглашение о том, что добросовестный отправитель имеет правильно настроенную обратную зону.

Вернемся к нашему дедушке. Допустим он сообщил вам, что летом собирается выезжать из села Макаровки в соседнее село Ивановка, к некой Марфе Васильевне и намерен оттуда посылать вам корреспонденцию. В таком случае вы без опаски будете принимать письма от дедушки как из Макаровки, так и из Ивановки, но откажетесь от якобы дедушкина письма из Петропавловска-Камчатского.

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

Example.com. IN TXT "v=spf1 +a +mx -all"

Что она означает? То, что для домена example.сom почту могут отправлять узлы указанные в А-записи (+а) и MX-записях (+mx), всю остальную почту следует отклонять (-all).

Однако не все так радужно. Во первых, поддержка SPF все еще не является стандартом де-факто и отсутвие SPF-записи у домена отправителя не повод отклонять письмо. Вторая проблема - сервера пересылки или случаи когда почту отправляют сервера не указанные в А или MX записях, а то и вообще находящиеся в других доменах. Это может быть обусловлено как архитектурой IT-системы предприятия, так и использованием для отправки чужих серверов, когда вы привязываете свой домен к провайдерскому или публичному сервису. В последнем случае нужно быть особо осторожным и крайне желательно проконсультироваться с поддержкой сервиса.

Рассмотрим еще одну ситуацию.

Ваша компания, кроме своего основного почтового сервера mail.example.com , использует услуги сторонних сервисов, которые могут отправлять почту клиентам компании от ее имени. Это может быть сервис экспресс-почты, который от вашего имени будет уведомлять клиентов о статусе доставки и т.п.

В нашем примере такая почта будет отправляться от имени [email protected] с сервера mail.web-service.com , так как данный сервер не указан в MX-записях домена example.com , то, согласно указанному нами в SPF-записи правилу, такое письмо будет получателем отклонено.

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

Example.org. IN TXT "v=spf1 +a +mx ~all"

В отличие от -all (fail), ~all (soft fail) обозначает, что отправители, кроме указанных явно, не имеют права отправлять почту, но не содержит требования отклонять такие письма. Чаще всего такая почта принимается, помечаясь как нежелательная .

Можно также использовать нейтральный префикс:

Example.org. IN TXT "v=spf1 +a +mx ?all"

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

Как быть в нашем случае? Самым правильным решением будет добавить в SPF-запись еще одно правило:

Example.org. IN TXT "v=spf1 +a +mx +mx:web-service.com -all"

Example.org. IN TXT "v=spf1 +a +mx +a:mail.web-service.com -all"

в первом случае мы разрешим прием почты также от всех серверов, перечисленных в MX-записях домена web-service.com , во втором случае только для сервера mail.web-service.com .

В завершение рассмотрим случай, когда почта для вашего домена обслуживается сервером находящимся в другом домене. Например mail.example.com отправляет также почту для домена example.org . В этой ситуации будет правильно использовать для домена example.org те же самые правила, что и для example.com . Для этого используйте специальный вид записи:

Example.org. IN TXT "v=spf1 redirect=example.com"

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

  • Теги:

Please enable JavaScript to view the

Недавно мы настраивали SMTP-сервер для нашего проекта. Вопрос стоял так: что нужно сделать, чтобы письма, отправленные нашим пользователям, не попадали в папку со спамом или попадали туда как можно реже?

Было найдено несколько интересных и полезных статей на эту тему (ссылки в конце статьи), на основе которых и было всё сделано в итоге. Но получив сегодня утром очередную порцию рассылки от достаточно известных русскоязычных ресурсов и увидев, что они пренебрегают описанными правилами, я решил кратко и в одном месте собрать все действия, которых достаточно для решения проблемы. Надеюсь, что после этого количество сайтов, отправляющих почту как надо, возрастет.

Приведенные советы актуальны только если вы используете свой собственный SMTP-сервер. При использовании, например, SMTP сервера Google всё уже сделано за нас. Как правило. В любом случае рекомендую проверить (см. подразделы Как проверить? ).

Пункты расположены по степени значимости. Лучше не приступать к следующему, не завершив предыдущий.

Пропишите Reverse DNS

Название говорит само за себя. Reverse DNS lookup - процедура обратная DNS lookup. По IP адресу мы, а точнее почтовый сервер пользователя, получаем доменное имя. Если он совпадает с доменным именем в поле From, отправляемого письма, то всё в порядке.

Как сделать?
В большинстве случаев вы сами не сможете это сделать, если не являетесь владельцем диапазона IP-адресов. Поэтому единственный способ сделать данную настройку - попросить сделать это вашего хостинг-провайдера.

Как проверить?
Используйте любой из online-сервисов Reverse DNS lookup. Например, этот . Достаточно ввести IP-адрес сервера, с которого производится отправка почты. Если в результате отображается ваш домен, то всё в порядке.

В большинстве случаев достаточно следующей записи:
example.com. TXT v=spf1 a mx ~all

Эта запись говорит о том, что почту можно отправлять с любого IP, указанного в записях A (AAAA) и MX данного домена и только с них.

Как проверить?
Отправьте почту через ваш сервис на любой GMail-аккаунт. Откройте полученное письмо и выберите в меню действий пункт Show Original.

Если вы найдете следующие строчки, то всё в порядке:
Received-SPF: pass
Authentication-Results: ... spf=pass

Итого

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

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


Важно понимать:

  1. SPF-запись не наследуется на поддомены. Для каждого домена третьего (и ниже) уровней необходима своя запись.
  2. SPF проверяет только HELO и MAIL FROM поля.
Всю подробную информацию о данной технологии можно найти на сайте проекта «Sender Policy Framework» .

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

На текущий момент все продвинутые анти-спам системы используют 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.

Письмо №1:


Письмо №2:


Письмо №3:

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

  1. Перед установкой SPF-записи удостоверьтесь, что учтены все сервера, отправляющие письма в интернет. Не забудьте про web-сервера и другие внешние системы, иначе вы можете потерять часть писем, и тем самым навредить себе и бизнесу.
  2. Правильно выбирайте механизм обработки писем (Pass, Fail, SoftFail, Neutral). При безусловной переадресации вашего письма из одной почтовой системы в другую может возникнуть проблема, так как SPF проверяет только последний «хоп».
  3. Рекомендуется создавать SPF-записи для всех доменов второго уровня, которые принадлежат вам или вашей компании, даже если вы не отправляете от их имени письма. Для таких доменов желательно использовать простую запись «v=spf1 -all », которая говорит, что никто не можем отправлять письма от этих доменов.
  4. Домены третьего уровня защитить можно с помощью wildcard-записи типа «». Но, обратите внимание на то, что 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-серверов.

Дата изменения раздела: 2013-05-09

С помощью сведений в этом разделе можно определить наилучший способ управления записями и параметрами DNS, MX и SPF при настройке и использовании службы Forefront Online Protection for Exchange (FOPE).

При оформлении подписки на службу FOPE для проверки домена рекомендуется добавить запись TXT в записи DNS домена или в параметры домена поставщика услуг Интернета. При добавлении записи TXT в параметры домена поставщика интернет-услуг следует помнить, что для создания и изменения записей DNS потребуется обратиться к поставщику DNS.

TXT или текстовая запись состоит из произвольной текстовой строки, которую можно присоединить к узлу DNS. Этот узел может иметь несколько записей TXT.

Активация службы FOPE для любого домена возможна только после проверки домена. Предпочтительным методом проверки домена является добавление записи TXT для каждого домена. Запись TXT добавляется в домен на этапе проверки домена в центре администрирования FOPE. Дополнительные сведения о проверке и включении домена см. в разделе .

Для электронной почты используются три основные записи: записи почтового обменника (MX), записи указателя (PTR) и записи инфраструктуры политики отправителей (TXT).

Запись MX указывает системам электронной почты способ обработки сообщения электронной почты, отправленного в конкретный домен. Иными словами, запись обмена электронной почтой указывает серверу, отправляющему сообщение электронной почты, куда необходимо отправить сообщение. Для надлежащей работы службы FOPE запись MX должна указывать на mail.messaging.microsoft.com, а не на IP-адрес. Это обеспечивает ретрансляцию сообщения электронной почты, отправленного в домен организации, в FOPE для фильтрации.

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

PTR (запись указателя) - это запись, которая используется для обратного поиска в DNS. Эта запись является противоположной записи A и используется в файлах зон обратного просмотра для преобразования IP-адреса (IP версии 4 или IP версии 6) в имя узла. При отправке сообщения электронной почты конечный сервер получает IP-адрес отправителя и проверяет запись PTR, чтобы убедиться в том, что IP-адрес является адресом домена.

Инфраструктура политики отправителей - это запись, которая используется для предотвращения спуфинга электронной почты. С помощью одной записи TXT можно указать все IP-адреса, используемые для отправки почты, и указать принимающему серверу, что разрешены только исходящие серверы, указанные в списке.

Пример записи TXT с определениями для каждой ее части приведен ниже.

Формат записи TXT: “v=spf1 mx ip4:{IP-адреса всех серверов, используемых для отправки} include:spf.messaging.microsoft.com ~all”

Используемая версия SPF.

Этот параметр указывает, что разрешена отправка с любого сервера, указанного в записи MX.

Список разрешенных IP-адресов сервера (не требуется для серверов FOPE, если включена запись SPF FOPE и отправка производится только через FOPE).

В этом параметре перечислены дополнительные записи, разрешающие отправку для домена.

Параметр all содержит три ключа:

    - : принимать сообщения электронной почты только от отправителей, перечисленных выше (жесткий отказ).

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

    ? : указывает на наличие дополнительных серверов, которые могут отправлять сообщения из домена.

Обычная запись TXT для клиента, который отправляет электронную почту только через службу FOPE, может выглядеть следующим образом: "v=spf1 include:spf.messaging.microsoft.com ip4:192.168.254.254 -all"

Дополнительные сведения о том, как служба FOPE использует записи SPF, см. в разделе , подпункт "Параметры записи SPF".