Email-заголовки: что скрыто за каждым письмом
Every email message consists of two parts: headers and body. The body is the content you read - text, HTML, attachments. The headers are the metadata that controls how the message is routed, displayed, authenticated, and processed. Most email clients hide headers by default, showing only From, To, Date, and Subject. But the full header block typically contains 15 to 40 fields that record the entire lifecycle of a message from composition to delivery.
Header format
Email headers follow a straightforward syntax defined in RFC 5322. Each header is a single logical line with the format:
Header-Name: header value
If a value is too long, it can continue on the next line by starting with whitespace (folding). Headers are separated from the body by a single blank line. The order of headers matters for some fields (Received headers are read bottom to top), but most can appear in any order.
Основные заголовки
Заголовки email делятся на несколько функциональных групп. Первая группа - адресные заголовки, определяющие отправителя и получателя.
- From. Адрес отправителя, который видит получатель. Это заголовок уровня сообщения, а не envelope. Его может задать кто угодно, поэтому он легко подделывается. DMARC существует именно для защиты этого поля.
- To. Адрес получателя. Может содержать несколько адресов через запятую. Не обязательно совпадает с фактическим получателем envelope (RCPT TO в SMTP-сессии).
- Reply-To. Адрес, на который клиент направит ответ. Если Reply-To не задан, ответ идёт на адрес из From. Рассылки часто используют Reply-To для перенаправления ответов на support-адрес.
- Cc и Bcc. Carbon copy и blind carbon copy. Cc виден всем получателям, Bcc скрыт. На уровне SMTP обе категории - просто дополнительные RCPT TO.
Заголовки маршрутизации
Вторая группа отвечает за то, как письмо дошло до получателя.
- Received. Каждый сервер, через который прошло письмо, добавляет свой Received-заголовок в начало блока. Читая их снизу вверх, можно восстановить полный маршрут сообщения. Это основной инструмент диагностики проблем с доставкой.
- Return-Path. Устанавливается принимающим сервером на основе MAIL FROM из SMTP-сессии. Именно на этот адрес отправляются bounce-уведомления. SPF проверяет домен из Return-Path.
- Message-ID. Уникальный идентификатор сообщения, формируемый отправляющим MTA. Используется для дедупликации, ссылок между сообщениями (In-Reply-To, References) и отладки.
Заголовки аутентификации
Третья группа появилась как ответ на проблему подделки отправителя.
- DKIM-Signature. Содержит криптографическую подпись, покрывающую выбранные заголовки и тело письма. Принимающий сервер проверяет подпись через публичный ключ в DNS отправителя.
- Authentication-Results. Добавляется принимающим сервером. Содержит результаты проверок SPF, DKIM и DMARC для данного сообщения. Формат стандартизирован в RFC 8601.
- ARC-Authentication-Results. Часть протокола ARC (Authenticated Received Chain). Сохраняет результаты аутентификации при пересылке, чтобы конечный получатель мог увидеть, что письмо прошло проверки до того, как было переслано.
Заголовки контента
Четвёртая группа описывает содержимое письма.
- Subject. Тема письма. Единственный контентный заголовок, который всегда виден в интерфейсе.
- Content-Type. MIME-тип содержимого: text/plain, text/html, multipart/alternative. Для писем с вложениями используется multipart/mixed.
- Content-Transfer-Encoding. Кодировка тела: 7bit, quoted-printable, base64. Определяет, как бинарные данные представлены в текстовом формате SMTP.
- MIME-Version. Практически всегда "1.0". Указывает, что письмо использует MIME-стандарт.
Заголовки для рассылок
Отдельная категория заголовков относится к массовым рассылкам.
- List-Unsubscribe. Ссылка для отписки. С 2024 года обязателен для массовых отправителей по требованиям Gmail и Yahoo.
- List-Unsubscribe-Post. Дополнение к List-Unsubscribe для механизма one-click отписки (RFC 8058).
- Precedence. Указывает приоритет сообщения. Значение "bulk" сигнализирует, что это массовая рассылка. Некоторые серверы используют этот заголовок для приоритизации очереди.
- Feedback-ID. Используется Google для агрегированной статистики по кампаниям в Postmaster Tools.
Envelope vs header
Принципиальное различие, которое часто путают: email имеет два уровня адресации. Envelope-адреса (MAIL FROM и RCPT TO) передаются в SMTP-сессии и управляют фактической доставкой. Header-адреса (From, To) записаны в теле сообщения и отображаются в клиенте.
Они могут не совпадать. Рассылка от company.com может использовать envelope sender bounce-12345@tracking.company.com для обработки bounces, а в заголовке From показывать newsletter@company.com. Это нормальная и допустимая практика, если SPF и DKIM настроены для обоих доменов.
Как посмотреть заголовки
В Gmail: откройте письмо, нажмите три точки справа, выберите "Показать оригинал". В Outlook: откройте письмо, File → Properties → Internet Headers. В Thunderbird: View → Message Source. Полный текст заголовков покажет весь маршрут, результаты аутентификации и служебные метки.
uChecker работает на уровне DNS и SMTP - тех же протоколов, которые формируют заголовки вашего письма. Проверка адресов до отправки означает, что заголовки Received не будут содержать записей об отклонённых сообщениях, а bounce-обработчик останется без работы.
