uCheckeruChecker

CNAME-запись и email: почему алиасы создают проблемы для почты

Марк АвриловОпубликовано обновлено

CNAME-запись (Canonical Name) это тип DNS-записи, который сопоставляет одно доменное имя другому. Вместо IP-адреса, как у A-записи, CNAME говорит: «это имя на самом деле псевдоним вон того, иди спрашивай про него». Для веб-хостинга CNAME удобны и широко используются. В почтовой инфраструктуре у них есть ограничения, на которые администраторы регулярно наступают.

Корень проблемы простой. RFC 1034 и RFC 2181 говорят, что CNAME-запись не может соседствовать ни с какой другой записью на том же имени. А поскольку доставка почты держится на MX-записях в корне домена, CNAME, поставленный туда, ломает маршрутизацию письма способами, которые не всегда заметны сразу.

Где CNAME используется в email корректно

Несмотря на ограничения, CNAME широко и правильно используется в почтовой инфраструктуре - но не на уровне домена-отправителя и не в MX-записях. Самый распространённый случай - настройка DKIM.

Когда вы подключаете домен к ESP (SendGrid, Mailchimp, Amazon SES), вас просят создать CNAME-записи вида:

s1._domainkey.example.com. IN CNAME s1.domainkey.u1234.wl.sendgrid.net.

s2._domainkey.example.com. IN CNAME s2.domainkey.u1234.wl.sendgrid.net.

Здесь CNAME создаётся на поддомене (s1._domainkey), а не на apex. Конфликта с MX нет. ESP управляет целевой записью и может ротировать DKIM-ключи без вашего участия.

CNAME и SPF

SPF-запись - это TXT-запись на домене отправителя. Если на домене стоит CNAME, TXT-запись там же существовать не может (правило "CNAME не сочетается с другими типами"). Значит, SPF работать не будет.

Внутри самой SPF-записи есть механизм include, который ссылается на другой домен. Этот домен может иметь CNAME. Но такая конфигурация добавляет лишний DNS-запрос в цепочку разрешения SPF, и если CNAME ведёт ещё куда-то, можно упереться в лимит 10 DNS-lookups.

CNAME и DMARC

DMARC-запись размещается как TXT-запись на поддомене _dmarc.example.com. Если _dmarc.example.com является CNAME, указывающим на _dmarc.provider.com, то DMARC-политика будет прочитана с целевого домена. Стандарт DMARC отдельно об этом ничего не говорит: это обычная работа DNS, резолвер сам проходит по CNAME (RFC 1034, раздел 3.6.2), и проверяющий сервер получает TXT целевого имени.

Однако стоит учитывать, что вы отдаёте контроль над DMARC-политикой стороннему сервису. Если провайдер изменит запись на целевом домене, ваша политика изменится без вашего ведома. Для критичных доменов лучше хранить DMARC-запись у себя.

Tracking domains и CNAME

ESP используют CNAME для кастомных tracking-доменов. Вместо ссылок вида click.sendgrid.net в теле письма отображается click.example.com. Для этого создаётся CNAME:

click.example.com. IN CNAME sendgrid.net.

Это помогает доставляемости: ссылки на ваш собственный домен вызывают больше доверия у фильтров, чем ссылки на shared tracking domain, который может быть замечен в спаме от других клиентов того же ESP.

Типичные ошибки с CNAME в email

  • CNAME на apex при наличии MX. Самый частый случай. Домен перестаёт принимать почту, потому что MX-записи фактически игнорируются.
  • MX указывает на CNAME. Формально запрещено стандартами. Работает не везде.
  • CNAME для домена-отправителя в envelope. Return-Path содержит домен, который является CNAME. SPF-проверка ломается, потому что TXT-запись на этом домене не может существовать рядом с CNAME.
  • Длинные CNAME-цепочки. CNAME ведёт на другой CNAME, тот на третий. Каждый шаг - дополнительный DNS-запрос и потенциальная точка отказа. Некоторые резолверы обрывают цепочку после 8-10 переходов.

Проверка CNAME и валидация адресов

При валидации email-адреса проверяется DNS домена получателя. Если домен имеет CNAME на apex, валидатор следует за алиасом и ищет MX-записи на целевом домене. Если MX нет ни на исходном, ни на целевом домене, адрес признаётся невалидным.

На практике домены с CNAME на apex встречаются редко среди тех, что принимают почту. Но среди маркетинговых доменов, используемых только для отправки, такая конфигурация может существовать - и создавать проблемы при bounce-обработке.

uChecker анализирует DNS-конфигурацию каждого домена в вашем списке, включая CNAME-цепочки, MX-записи и их разрешение. Если почтовая инфраструктура домена сломана из-за конфликта CNAME, адреса на таком домене будут отмечены до отправки.

CNAMEDNSалиасMX-записьDKIM
← Глоссарий

Марк Аврилов · Автор материала

Опубликовано Обновлено