О проекте
Протокол SMTP, по которому передается электронная почта, был создан в 1980-х годах и изначально не имел встроенной защиты от подмены отправителя. Любой спамер мог отправить письмо, указав в поле «От кого» адрес вашего генерального директора.
Чтобы бороться со спамом и фишингом, современные почтовые провайдеры (Google, Microsoft, Яндекс) требуют обязательного подтверждения того, что сервер имеет право отправлять письма от имени вашего домена. Для этого используется связка из трех DNS-записей: SPF, DKIM и DMARC.
Для чего нужен DKIM?
DKIM (DomainKeys Identified Mail) — это цифровая подпись письма. Работает это на базе асимметричного шифрования: закрытый ключ хранится на вашем почтовом сервере (например, в Mailcow), а открытый ключ публикуется в DNS-зоне домена. Когда сервер отправляет письмо, он подписывает его заголовки и содержимое закрытым ключом.
Сервер получателя берет открытый ключ из вашего DNS и проверяет подпись. Если она сходится, это гарантирует две вещи:
- Письмо действительно отправлено сервером владельца домена.
- Содержимое письма и вложения не были изменены (перехвачены) в процессе доставки.
SPF: В чем разница между тильдой (~) и дефизом (-)?
SPF (Sender Policy Framework) — это просто список IP-адресов и серверов, которым разрешено отправлять почту от вашего домена.
Рассмотрим пример записи: v=spf1 include:_spf.mx.cloudflare.net ~all
Здесь мы разрешаем отправку через серверы Cloudflare (что актуально, например, при использовании Cloudflare Email Routing), а в конце стоит критически важный модификатор ~all.
В чем отличие ~ (SoftFail) от - (Fail)?
-all(Жесткий отказ / Fail): Если письмо пришло с сервера, не указанного в SPF, сервер получателя сразу отклонит его на этапе соединения. Это максимально безопасно, но может сломать пересылку писем (форвардинг), когда письмо транзитом проходит через сторонние серверы.~all(Мягкий отказ / SoftFail): Если сервер не совпал, письмо будет принято, но получит штрафные баллы спам-фильтра (скорее всего, попадет в папку “Спам” или будет помечено как подозрительное). Я часто использую~allна этапе миграции серверов или при настройке сложных цепочек пересылки, чтобы не потерять важную корреспонденцию.
Моя конфигурация DMARC: Строгий контроль
DMARC — это политика, которая говорит чужим серверам, что делать, если проверки SPF или DKIM провалились. В своих проектах, когда инфраструктура уже отлажена, я использую строгую запись:
v=DMARC1; p=reject; aspf=s; adkim=s; sp=quarantine;
Разберем, почему именно так:
p=reject(Policy = Reject): Главное правило. Если кто-то пытается отправить письмо от моего домена, и оно не проходит проверку (нет валидного DKIM или не совпал SPF), письмо уничтожается. Никаких папок “Спам”, мошенник просто не сможет ничего прислать от моего имени.aspf=sиadkim=s(Strict Alignment): Флаг строгого выравнивания (s- strict). Это значит, что домен в техническом заголовке письма должен в точности совпадать с доменом в поле “От кого” (From). Это защищает от хитрых атак, когда спамер использует валидный SPF для поддомена, но в видимом адресе подставляет основной домен.sp=quarantine(Subdomain Policy): Политика для поддоменов. Если рассылка идет с незарегистрированного поддомена (например,mail.my-domain.com), такие письма не отбиваются жестко, а отправляются в карантин (спам). Это дает пространство для маневра, если маркетологи внезапно подключат новый сервис рассылок на поддомене без ведома IT-отдела.
Выводы
Правильная настройка триады SPF, DKIM и DMARC — это не просто галочка в чек-листе системного администратора. Это гарантия того, что корпоративные письма дойдут до клиентов во входящие, а репутация домена будет защищена от спуфинга и действий злоумышленников. Настройка строгих политик (p=reject) требует ювелирной точности, но дает 100% защиту от подделки адреса.