Технические заголовки письма: что в них читают спам-фильтры
Получатель видит в письме тему, отправителя и текст. Спам-фильтр видит на порядок больше: несколько десятков служебных заголовков, по которым письмо оценивается ещё до того, как дело дойдёт до контента. Несогласованный From, пустой или кривой Message-ID, следы дешёвого самописного отправщика в X-Mailer — каждый такой штрих добавляет очков спам-скорингу. Разберём, какие headers существуют, что именно в них проверяют провайдеры и как привести заголовки холодного B2B-письма в порядок.
- Заголовки письма — это его паспорт: провайдер оценивает их до контента, и кривые headers топят даже безупречный текст.
- Ключевая проверка — выравнивание (alignment): домен в From должен сходиться с доменами, прошедшими SPF и DKIM, иначе DMARC не пройден.
- Reply-To на другой домен, пустой Message-ID и рассинхрон Date — классические маркеры спамерских отправщиков.
- List-Unsubscribe и List-Unsubscribe-Post нужны и деловым рассылкам: крупные провайдеры требуют one-click отписку при заметных объёмах.
- Диагностика начинается с Authentication-Results во входящем письме на контрольном ящике — там провайдер прямо пишет вердикты SPF, DKIM и DMARC.
Что такое headers и почему фильтры читают их раньше текста
Каждое письмо состоит из двух частей: тела, которое видит человек, и блока заголовков — служебных строк формата «Имя: значение», которые видят почтовые серверы. Часть заголовков ставит ваш отправляющий сервер (From, To, Subject, Date, Message-ID), часть добавляют промежуточные и принимающие серверы по пути (Received, Authentication-Results, X-Spam-Status). Посмотреть полный набор можно в любом ящике: в Gmail — «Показать оригинал», в Яндекс Почте — «Свойства письма».
Для спам-фильтра заголовки — самый дешёвый и надёжный источник сигналов. Текст письма можно написать любой, а вот подделать согласованный набор технических заголовков, валидные подписи и путь доставки значительно сложнее. Поэтому оценка идёт слоями: сначала IP и домен отправителя, затем аутентификация и согласованность headers, и только потом — контент. Письмо с проваленной аутентификацией может уехать в спам, даже не дойдя до анализа текста.
Для адресного B2B-аутрича это особенно важно: вы отправляете небольшие объёмы с молодого или свежепрогретого домена, и у провайдера мало истории, чтобы судить о вас по репутации. Чем меньше поведенческих данных, тем больше вес формальных признаков — и аккуратные заголовки становятся одним из немногих доступных вам способов выглядеть добропорядочно с первого письма.
From, Reply-To, Return-Path: треугольник, который должен сходиться
From — адрес, который видит получатель. Return-Path (он же envelope-from или MAIL FROM) — технический обратный адрес, на который возвращаются баунсы; именно по его домену проверяется SPF. Reply-To — куда уйдёт ответ, если получатель нажмёт «Ответить». В здоровом деловом письме все три либо совпадают, либо живут на очевидно связанных доменах.
Классическая проблема массовых отправщиков — рассинхрон этого треугольника: From на одном домене, Return-Path на домене сервиса-рассыльщика, Reply-To на третьем, бесплатном. Для фильтра это картина «отправитель маскируется», и DMARC формализует эту логику через выравнивание: домен из From должен совпадать (строго или на уровне организационного домена) с доменом, прошедшим SPF или DKIM. Не сходится — DMARC-проверка провалена, и при политике quarantine или reject письмо уезжает в спам или отклоняется.
Практика для аутрича: отправляйте с ящика на собственном отправляющем домене, настройте SPF, DKIM и DMARC на нём же, Reply-To либо не указывайте вовсе (ответ уйдёт на From), либо ставьте адрес на том же домене. Reply-To на gmail.com при корпоративном From — один из самых грубых и при этом самых частых маркеров, за которые фильтры и живые получатели цепляются одинаково.
Message-ID, Date и следы отправщика
Message-ID — уникальный идентификатор письма вида строка@домен. Нормальные почтовые серверы генерируют его автоматически и корректно. Проблемы начинаются с самописными скриптами: пустой Message-ID, неуникальный, с «доменом» вроде localhost — всё это сигнатуры кустарной массовой отправки, на которые фильтры натренированы годами. То же с Date: время в заголовке, расходящееся с реальным временем прохождения (по цепочке Received) на часы, выглядит как неисправный или намеренно обманывающий отправщик.
Заголовки X-Mailer и User-Agent сообщают, чем письмо создано. Сами по себе они нейтральны, но выдают инструмент: у известных спам-скриптов свои узнаваемые подписи. Отправляете через нормальный SMTP нормального почтового сервиса или собственный корректно настроенный сервер — здесь беспокоиться не о чем; проблемы возникают у тех, кто гонит почту самодельными скриптами в обход стандартных стеков.
Отдельно про Received: эту цепочку пишут серверы по маршруту письма, и подделать её снаружи нельзя. По ней фильтр видит реальный путь: с какого IP пришло письмо, соответствует ли обратная DNS-запись (PTR) имени сервера, не пришло ли «корпоративное» письмо с IP жилого интернет-провайдера. Для практики вывод один: отправляющая инфраструктура должна быть настоящей — выделенный или сервисный SMTP с корректным HELO и PTR, а не скрипт с случайной машины.
Быстрая диагностика по Authentication-Results: строка «spf=pass … dkim=pass … dmarc=pass» — аутентификация в порядке, ищите проблему в репутации или контенте. «dkim=fail» при исправном DNS — часто письмо модифицировано по пути (например, футером корпоративного шлюза) или подпись настроена не на тот селектор. «dmarc=fail» при spf=pass — почти всегда провалено выравнивание: SPF прошёл по домену рассыльщика, а не по вашему из From.
Authentication-Results: вердикт провайдера, который можно прочитать
Самый полезный для диагностики заголовок ставит не отправитель, а получающий сервер. В Authentication-Results провайдер записывает результаты своих проверок: прошёл ли SPF и для какого домена, валидна ли DKIM-подпись и каким селектором подписана, сошёлся ли DMARC. Это не косвенные признаки, а прямой вердикт конкретного провайдера по конкретному письму.
Рабочий приём для любой холодной кампании: перед запуском отправьте письмо на собственные контрольные ящики у целевых провайдеров — Gmail, Яндекс, Mail.ru, желательно и корпоративный ящик на Microsoft 365. Откройте исходник, найдите Authentication-Results и убедитесь, что все три механизма дают pass именно для вашего отправляющего домена. Пять минут этой проверки экономят недели гаданий, почему «письма куда-то пропадают».
Там же смотрите служебные спам-заголовки, которые ставят некоторые системы: X-Spam-Status и X-Spam-Score у серверов на SpamAssassin показывают набранные очки и сработавшие правила поимённо. Если ваш тестовый получатель — компания с таким шлюзом, вы бесплатно получаете разбор письма глазами фильтра: какие правила сработали, сколько очков добавила каждая находка.
List-Unsubscribe: зачем деловому письму заголовок отписки
List-Unsubscribe — заголовок со ссылкой или mailto-адресом для отказа от писем; в паре с List-Unsubscribe-Post он даёт отписку в один клик кнопкой в интерфейсе почты, без перехода на сайт. Крупные провайдеры, включая Gmail и Yahoo, требуют one-click отписку от отправителей с заметными объёмами, и почтовые системы учитывают наличие этих заголовков как признак ответственного отправителя.
В адресном аутриче встречается возражение: «у меня персональное деловое письмо, а не рассылка, кнопка отписки его удешевит». Практика говорит обратное. Во-первых, наличие List-Unsubscribe в заголовках невидимо в теле письма — оно не портит персональный тон. Во-вторых, лёгкая отписка канализирует негатив: у раздражённого получателя выбор между кнопкой «Отписаться» и кнопкой «Спам», и вторая бьёт по репутации домена несопоставимо больнее. Каждая жалоба — минус к репутации; каждая тихая отписка — просто минус один контакт.
Правовой контур тоже в эту сторону: ФЗ-38 «О рекламе» требует прекращать отправку по требованию адресата, а ФЗ-152 задаёт рамки работы с персональными данными — механизм отказа в один клик закрывает это требование технически и без переписки. Настройте обработку отписок так, чтобы адрес попадал в стоп-лист немедленно и автоматически: заголовок, который ведёт на неработающую ссылку, хуже его отсутствия.
Чек-лист по заголовкам перед запуском кампании
Заголовки — та часть письма, которую достаточно привести в порядок один раз на уровне инфраструктуры и затем лишь проверять при изменениях: новом домене, новом отправляющем сервисе, новом шаблоне. Вот минимальный набор проверок перед стартом холодной B2B-кампании.
- From — живое имя и адрес на собственном отправляющем домене, не бесплатный ящик
- Reply-To отсутствует или указывает на тот же домен, что и From
- SPF, DKIM, DMARC дают pass на контрольных ящиках всех целевых провайдеров, выравнивание доменов сходится
- Message-ID генерируется сервером автоматически, уникален, содержит реальный домен
- PTR-запись отправляющего IP соответствует имени сервера, HELO корректен
- List-Unsubscribe и List-Unsubscribe-Post присутствуют, ссылка работает, отписка попадает в стоп-лист автоматически
- В тестовом письме на сервер со SpamAssassin спам-скор в X-Spam-Status в безопасной зоне
- После любой смены рассыльщика или домена — повторная проверка всей цепочки, а не только «письмо дошло»
Вопросы и ответы
Как посмотреть заголовки конкретного письма?
В Gmail — меню письма, пункт «Показать оригинал»; в Яндекс Почте — «Свойства письма»; в Outlook — «Просмотреть источник сообщения». Откроется полный текст со всеми служебными заголовками. Для диагностики своих кампаний отправьте письмо на контрольный ящик и читайте в первую очередь Authentication-Results и цепочку Received.
Можно ли исправить заголовки, если письма уже уходят в спам?
Заголовки — необходимое, но не достаточное условие. Приведите в порядок треугольник From/Return-Path/Reply-To, добейтесь pass по SPF, DKIM и DMARC с выравниванием — это уберёт формальные причины фильтрации. Но если домен уже набрал плохую репутацию жалобами или грязной базой, одних заголовков мало: понадобится пауза, чистка базы и аккуратный повторный прогрев.
Reply-To на другой адрес — это всегда плохо?
Не всегда: Reply-To на другой ящик того же домена (например, From — ivan@, ответы — sales@) — нормальная практика. Плохо, когда Reply-To ведёт на чужой или бесплатный домен: корпоративный From и ответ на gmail.com — классический спамерский паттерн, который считывают и фильтры, и внимательные получатели. В адресном аутриче лучший вариант — отвечать там же, откуда пишете.
Нужен ли List-Unsubscribe, если я пишу адресные письма по 30–50 штук в день?
Формально пороги one-click отписки у провайдеров нацелены на массовых отправителей, но добавить заголовок стоит и при малых объёмах: он невидим в теле письма, не портит персональный тон и уводит недовольных в отписку вместо кнопки «Спам». Одна жалоба при маленьких объёмах весит для репутации домена больше, чем при больших — защита от неё окупается сразу.
Что такое выравнивание (alignment) в DMARC простыми словами?
Это требование, чтобы домен, который видит получатель в поле From, совпадал с доменом, реально прошедшим проверку SPF или DKIM. SPF проверяется по Return-Path, DKIM — по домену подписи; если оба живут на домене рассыльщика, а From — на вашем, DMARC не сойдётся. Решение: подписывать письма DKIM-ключом своего домена и/или использовать свой домен в Return-Path.
Влияет ли X-Mailer на доставляемость?
Сам по себе слабо: это информационный заголовок о программе-отправщике. Но он входит в общую картину: узнаваемые подписи спам-инструментов работают в минус, а сочетание кустарного X-Mailer с кривым Message-ID и рассинхроном Date складывается в уверенный портрет самописной массовой рассылки. Отправляйте через нормальный почтовый стек — и этот заголовок не будет проблемой.
Хотите применить это в своём аутриче?
Расскажем, как это работает на вашем сегменте и продукте — до старта работ.
Обсудить задачу