Баннер мобильный (3) Пройти тест

SPF, DKIM и DMARC: как защитить почту от подделки

Что делать, чтобы кибермошенники не пользовались вашим доменом

Разбор

14 сентября 2026

Поделиться

Скопировано
SPF, DKIM и DMARC: как защитить почту от подделки

Содержание

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

    Чтобы создать такое письмо, мошеннику не нужно ничего взламывать — достаточно вписать чужой адрес в поле «От кого», потому что почтовый протокол его никак не проверяет. Защитить почту от подделки помогают SPF, DKIM и DMARC. Что это такое и как работает — разбираем в статье.

    Что такое SPF, DKIM и DMARC — максимально коротко

    Это три записи в DNS вашего домена, и каждая закрывает свою уязвимость. SPF (Sender Policy Framework) говорит, с каких серверов можно отправлять письма от вашего имени. DKIM (DomainKeys Identified Mail) ставит на письмо криптоподпись, по которой видно, что его не подменили по дороге. DMARC (Domain-based Message Authentication, Reporting and Conformance) задает правило, что делать с письмами, которые проверку не прошли, и присылает отчеты. 

    Почему письмо от вашего домена может отправить кто угодно

    Почту передает протокол SMTP, придуманный еще в начале 1980-х. Тогда в Сети все друг друга знали, и проверки отправителя в протоколе просто не было. Поэтому в поле «От кого» можно вписать любой адрес, и сервер его пропустит. Это не уязвимость конкретной почты, а свойство самого протокола.

    Важная деталь, без которой не понять ни одну из трех записей: у письма два разных адреса отправителя.

    • Адрес в конверте (его называют MAIL FROM или Return-Path) — технический. Его видит принимающий сервер, но не видит человек.
    • Адрес в заголовке From — тот самый «От кого», который показывает почтовый клиент. Его видит человек.

    В обычном письме эти адреса совпадают. Но подделать можно каждый по отдельности, и вот в чем подвох: SPF проверяет адрес из конверта, а обманывают человека через видимый From. Одна запись эту уязвимость целиком не закрывает — поэтому их три, и работают они в связке.

    Кому это вообще нужно настраивать? Всем, у кого почта работает на собственном домене. Отдельная история — когда письма за вас отправляют сторонние сервисы: CRM, форма обратной связи на сайте, платформа рассылок. Записи в DNS все равно ваши, и настраивать их придется вам, а не сервису.

    Еще один повод не откладывать: крупные почтовые провайдеры уже сделали эти записи обязательными для массовых отправителей. Google и Yahoo требуют SPF, DKIM и DMARC от массовых отправителей с февраля 2024 года (у Google порог — около 5000 писем в сутки на адреса Gmail; Yahoo точный порог не называет). Microsoft подключил похожие правила для Outlook.com, Hotmail и Live с мая 2025 года. Если рассылки от вашего домена не проходят проверку, они рискуют осесть в спаме или вовсе не дойти.

    SPF: кто имеет право отправлять письма от вашего домена

    SPF (Sender Policy Framework) — это список серверов, которым разрешено слать письма от вашего домена. Он лежит в DNS в виде TXT-записи.

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

    • pass — сервер в списке, все в порядке;
    • fail — сервера в списке нет, запись прямо запрещает такие письма;
    • softfail — сервера нет, но запись просит не блокировать жестко, а отнестись с подозрением (обычно письмо уходит в спам);
    • neutral — домен ничего конкретного не говорит про этот сервер;
    • none — у домена вообще нет SPF-записи.

    Из чего состоит SPF-запись

    Проще всего разобрать на примере. Вот типичная запись: 

    v=spf1 include:_spf.google.com ip4:203.0.113.10 ~all

    Читается слева направо:

    Часть записи
    Что означает
    Когда нужна
    v=spf1
    Версия. С нее начинается любая SPF-запись
    Всегда, строго в начале
    include:_spf.google.com
    «Доверяю серверам вот этого домена». Так подключают почту Google, рассылочные сервисы и т. п.
    Для каждого внешнего сервиса, который шлет за вас письма
    ip4:203.0.113.10
    Конкретный разрешенный IPv4-адрес. Для IPv6 есть ip6:
    Когда письма уходят с вашего сервера с фиксированным IP
    a, mx
    Разрешить адреса из A-записи домена или его почтовых серверов
    Если почта живет на том же хостинге, что и сайт
    ~all
    Что делать со всеми остальными. ~ — softfail (мягко)
    В конце записи, всегда

    Хвост all — это правило для всех, кого не перечислили выше, и у него есть квалификатор:

    • -all — жесткий запрет (fail). Все, что не в списке, — подделка.
    • ~all — мягкий вариант (softfail). Подозрительно, но не блокируем совсем.
    • ?all — нейтрально, почти как отсутствие правила.
    • +all — разрешить всем. Фактически это значит «отправлять от моего домена может кто угодно», то есть запись, которая не защищает ни от чего.

    На старте обычно ставят ~all: пока не уверены, что перечислили всех своих отправителей. Когда убедились, что ничего не забыли, переходят на -all.

    Как выглядит SPF запись
    SPF-запись домена в выводе команды nslookup в CMD Windows

    Как добавить SPF-запись в DNS

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

    Параметры записи:

    • Тип — TXT.
    • Имя (хост) — @, то есть сам домен.
    • Значение — строка v=spf1 ….
    • TTL — время кеширования; можно оставить значение по умолчанию.

    Одно правило важнее остальных: SPF-запись на домене должна быть ровно одна. Две записи v=spf1 не складываются, а ломают проверку — это одна из самых частых ошибок. Если нужно добавить еще один сервис, его дописывают в существующую запись через include, а не заводят вторую.

    Чего SPF не умеет

    SPF полезен, но в одиночку не защищает от всех угроз, потому что:

    1. Ограничен десятью DNS-запросами. Каждый include (а внутри него бывают вложенные) тратит запрос. Когда их набирается больше десяти, проверка возвращает ошибку permerror и SPF перестает работать. Для компаний с десятком внешних сервисов это реальная проблема.
    2. Ломается при пересылке. Если получатель настроил автопересылку на другой ящик, письмо уходит уже с сервера-пересыльщика, которого нет в вашем SPF. Проверка не проходит, хотя письмо честное.
    3. Не смотрит на видимый From. Тот самый главный изъян: SPF проверяет конверт, а человек читает заголовок. Можно пройти SPF и все равно обмануть человека подделкой видимого адреса.

    DKIM: подпись, которая доказывает, что письмо не подменили

    DKIM (DomainKeys Identified Mail) подтверждает, что письмо действительно отправлено вашим доменом и никто не переписал его в процессе.

    Работает это на паре ключей. Отправляющий сервер берет закрытый (приватный) ключ и подписывает им письмо — заголовки и тело. Подпись он вставляет прямо в служебный заголовок DKIM-Signature. Открытый (публичный) ключ вы заранее кладете в DNS. Получатель достает подпись, забирает из DNS открытый ключ и проверяет: сходится — письмо не трогали, не сходится — где-то подменили содержимое.

    Селектор и запись в DNS

    Открытый ключ в DNS лежит не в корне домена, а по адресу вида селектор._domainkey.домен. Селектор — это метка, которая позволяет держать несколько ключей сразу. Например, один — для корпоративной почты, другой — для сервиса рассылок. Какой ключ использовать для конкретного письма, получатель понимает из заголовка DKIM-Signature: там указаны домен (d=) и селектор (s=). 

    Сама запись — снова TXT и выглядит примерно так: 

    v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQ…

    Здесь v — версия, k — тип ключа (обычно RSA), p — сам открытый ключ длинной строкой. 

    DKIM-запись
    Заголовок DKIM-Signature письма с выделенными полями домена и селектора

    Как включить DKIM

    В корпоративной почте и сервисах рассылок ключи обычно генерируются автоматически: вы включаете DKIM в настройках, сервис выдает готовую TXT-запись, а вам остается скопировать ее в DNS. Вручную ключи создают реже, в основном на своих почтовых серверах.

    На что стоит обратить внимание:

    • Длина ключа. Встречаются ключи на 1024 и на 2048 бит. Второй надежнее, и его же рекомендуют крупные провайдеры — если есть выбор, берите 2048.
    • Ротация ключей. Ключи полезно периодически менять: если старый закрытый ключ попал в утечку, у злоумышленника будет меньше времени им воспользоваться. Про это почти не пишут в инструкциях, но это хорошая привычка.

    DMARC: что делать с письмами, которые не прошли проверку

    DMARC (Domain-based Message Authentication, Reporting and Conformance) связывает SPF и DKIM в единое правило и добавляет то, чего им по отдельности не хватает: смотрит на видимый From и решает судьбу писем, которые проверку не прошли.

    Ключевая идея DMARC — выравнивание. DMARC проверяет, не просто «прошел ли SPF или DKIM», а совпадает ли домен, прошедший проверку, с доменом в видимом поле From. Отсюда следует неожиданная, но частая ситуация: SPF может дать pass, а DMARC при этом — fail. Так бывает, когда рассылку шлет сторонний сервис: SPF проходит по домену сервиса, но этот домен не совпадает с вашим доменом в поле From, и выравнивание не сходится. Именно на этом чаще всего ломаются рассылки, которые «вроде настроили правильно».

    Строгость выравнивания настраивается двумя параметрами: adkim (для DKIM) и aspf (для SPF). Значение r (relaxed, по умолчанию) разрешает совпадение по основному домену, s (strict) требует полного совпадения вплоть до поддомена.

    Теги DMARC-записи

    DMARC — тоже TXT-запись, лежит по адресу _dmarc.домен. Из чего она состоит:

    Тег
    За что отвечает
    Что писать новичку
    v=DMARC1
    Версия. Всегда в начале
    Обязательно
    p
    Политика для писем, не прошедших проверку: none, quarantine или reject
    Начинать с none
    sp
    Отдельная политика для поддоменов
    Можно не указывать поначалу
    rua
    Адрес для сводных отчетов (aggregate)
    Свой ящик или адрес сервиса отчетов
    ruf
    Адрес для отчетов по конкретным «провалившимся» письмам
    Необязательно
    pct
    Процент писем, к которым применяется политика
    При ужесточении наращивают постепенно
    fo
    Когда именно присылать отчеты о сбоях
    Необязательно

    Минимальная рабочая запись выглядит так: 

    v=DMARC1; p=none; rua=mailto:dmarc@ваш-домен.ru

    Как внедрять политику поэтапно

    Главное правило: не ставьте p=reject сразу. Жесткая политика без подготовки — надежный способ отправить в спам собственные же письма, о которых вы забыли. Правильный порядок такой:

    1. p=none — режим наблюдения. Письма никто не блокирует, но вам начинают приходить отчеты о том, кто и как отправляет почту от вашего домена.
    2. Собрать и прочитать отчеты. Обычно за пару недель становится видно всех легальных отправителей — в том числе тех, про кого вы не помнили.
    3. p=quarantine с ростом pct. Подозрительные письма уходят в спам. Через pct можно включать политику постепенно: сначала для части писем, потом для всех.
    4. p=reject — финальная стадия. Письма, не прошедшие проверку, отклоняются совсем. К ней переходят, когда уверены, что все свои отправители настроены.

    Отчеты DMARC 

    Отчеты по тегу rua приходят почтой в виде XML-файлов в архивах. Внутри сводка: с каких IP-адресов шли письма от вашего домена, сколько их было и проходили ли они SPF и DKIM. Смотреть в первую очередь стоит на две вещи: появились ли незнакомые отправители (возможная подделка) и есть ли среди «провалившихся» ваши же легальные сервисы, которые вы забыли настроить.

    Разбирать XML руками необязательно — существуют парсеры, которые превращают отчеты в понятные таблицы и графики.

    Как SPF, DKIM и DMARC работают вместе

    Проще всего запомнить так: три записи отвечают на три разных вопроса.

    SPF — с правильного ли сервера пришло письмо?

    DKIM — не изменили ли письмо по дороге?

    DMARC — что делать, если ответы не сошлись, и куда прислать отчет?

    ЗаписьЧто проверяетГде хранитсяЧто будет, если не настроить
    SPFРазрешен ли сервер-отправительTXT-запись в корне доменаС вашего домена смогут слать письма чужие серверы
    DKIMНе подменили ли содержимое письмаTXT-запись селектор._domainkey.доменНельзя доказать, что письмо не переписали в пути
    DMARCСовпадает ли все это с видимым From и как поступать с нарушителямиTXT-запись _dmarc.доменПодделки видимого адреса дойдут до людей, отчетов не будет

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

    Пошаговая настройка: чек-лист для домена

    Порядок действий, если начинаете с нуля:

    1. Соберите список всех, кто отправляет письма от вашего домена. Корпоративная почта, CRM, форма на сайте, сервис рассылок, биллинг. Это первый и самый важный шаг: забытый отправитель потом попадет под вашу же политику, и его письма перестанут доходить.
    2. Настройте SPF — одна TXT-запись со всеми своими отправителями, в конце ~all.
    3. Включите DKIM для каждого сервиса, который шлет письма, и добавьте выданные записи в DNS.
    4. Опубликуйте DMARC с p=none и укажите rua для отчетов.
    5. Соберите отчеты, найдите отправителей, которых упустили, и допишите их в SPF и DKIM.
    6. Ужесточите политику — переведите DMARC в quarantine, затем в reject, а SPF — с ~all на -all.

    Оговорка про DNS: изменения расходятся по серверам не мгновенно, иногда на это уходит несколько часов. Если проверка сразу не видит новую запись — подождите и повторите.

    Как проверить, что записи работают

    Надежнее всего отправить письмо самому себе и заглянуть в его исходник. В служебном заголовке Authentication-Results сразу видно вердикт по всем трем проверкам: spf=pass dkim=pass dmarc=pass. Если появился fail — значит, эту запись еще надо чинить.

    Где искать исходник:

    • Gmail — открыть письмо → «⋮» → «Показать оригинал».
    • Во многих других клиентах команда называется «Показать оригинал», «Исходный текст» или View source.

    Кроме исходника есть онлайн-сервисы. Например, mail-tester: вы отправляете письмо на выданный им адрес и получаете оценку с разбором SPF, DKIM, DMARC и других факторов. MXToolbox проверяет сами записи по домену. Такие сервисы удобны, но относиться к их «баллам» стоит спокойно — они оценивают доставляемость в целом, а не только три наши записи.

    Кому удобнее консоль — записи быстро смотрятся командами: nslookup -type=txt на Windows или dig txt на Linux и VPS.

    Частые ошибки при настройке SPF, DKIM и DMARC

    Большинство проблем — из-за мелочей. Собрали в таблицу те, что встречаются чаще всего.

    Ошибка
    Чем грозит
    Как исправить
    Две SPF-записи на домене
    Проверка ломается (permerror), SPF не работает
    Объединить все в одну запись через include
    +all в конце SPF
    Слать письма от домена может кто угодно
    Заменить на ~all, затем на -all
    Больше 10 DNS-запросов в SPF
    permerror, SPF отключается
    Убрать лишние include, свернуть механизмы
    Механизм ptr в SPF
    Медленно и ненадежно, провайдеры его не любят
    Заменить на ip4/ip6 или include
    Забыли про один из сервисов рассылки
    Его письма не проходят проверку и уходят в спам
    Найти по отчетам DMARC и дописать в SPF/DKIM
    Лишние кавычки и пробелы после копирования
    Запись читается неверно
    Проверить строку символ в символ
    Сразу p=reject в DMARC
    Свои же письма отклоняются
    Начинать с p=none, ужесточать постепенно

    Отдельная, самая обидная ситуация: все три записи настроены правильно, а письма все равно попадают в спам. Аутентификация — не единственное, на что смотрят почтовые провайдеры. Проверьте еще:

    Репутацию IP и домена. Если с адреса раньше слали спам или домен новый и холодный, письма будут придирчиво фильтровать.

    Обратную DNS-запись (PTR). У отправляющего сервера должно быть корректное обратное имя. Ее отсутствие — тревожный сигнал для провайдера.

    Ссылку на отписку. Для рассылок нужен заголовок для отписки в один клик — без него письма легко улетают в спам, а у массовых отправителей это еще и обязательное требование.

    Резкий рост объемов. Если вчера уходило 50 писем, а сегодня 50 000, провайдер воспримет это как всплеск спама. Объемы наращивают плавно.

    Разбор

    Поделиться

    Скопировано
    0 комментариев
    Комментарии