Проверка DKIM записи

Найдём DKIM-ключ домена по селектору, проверим синтаксис и длину ключа.

Без селектора проверим 30 частых. Точный селектор — в заголовке полученного письма: DKIM-Signature: … s=селектор; d=домен.

Проверка DKIM-записи и ключа

DKIM подписывает каждое письмо ключом домена, а получатель проверяет подпись по публичному ключу из DNS — на имени селектор._domainkey.домен. Инструмент находит эту запись по вашему селектору или перебирает 30 частых (Google Workspace, Microsoft 365, Mailchimp, SendGrid, Zoho, Fastmail, Proton, HubSpot и другие), идёт по CNAME, разбирает теги и считает длину RSA-ключа. Селекторы через DNS перечислить нельзя, поэтому «не найдено» означает только «не найдено среди проверенных».

Проверка по селектору или перебор 30 частых
Длина ключа RSA и Ed25519: слабый, 1024, 2048+
CNAME-делегирование и «висящие» CNAME
Отозванный ключ (пустой p=), t=y, h=sha1, ошибки base64

Как пользоваться

  1. Введите домен; селектор можно взять из заголовка DKIM-Signature (s=)
  2. Без селектора проверим 30 частых — это занимает несколько секунд
  3. Проверьте статус ключа и замените ключи короче 2048 бит

FAQ

Селектор — имя ключа: запись лежит на селектор._domainkey.домен, и у домена может быть несколько ключей для разных сервисов. Точный селектор есть в заголовке DKIM-Signature любого отправленного письма — значение s=, а d= показывает домен подписи. В Gmail это «Показать оригинал».

Скорее всего, у вашего сервиса нестандартный селектор: DNS не даёт перечислить имена, поэтому без селектора мы проверяем только 30 частых. Например, Amazon SES создаёт три случайных селектора на домен. Укажите селектор из заголовка письма.

2048 бит. Ключи 1024 пока принимаются, но считаются минимальными, а ключи короче 1024 по RFC 8301 получатели принимать не должны. Ключ 2048 длиннее 255 символов и хранится как несколько строк в одной TXT-записи — современные DNS-панели делают это сами.

Ключ отозван: письма, подписанные этим селектором, не пройдут DKIM. Так обычно выводят из оборота старый ключ после ротации. Если вы подписываете письма именно этим селектором — опубликуйте ключ заново или переключите подпись на актуальный селектор.

Так делают Microsoft 365, SendGrid, Mailchimp и другие: вы публикуете CNAME на их зону, а ключ хранят и ротируют они. Это нормально. Проблема, только если по адресу CNAME записи нет — тогда подпись не проходит; в Microsoft 365 это значит, что DKIM не включён в панели.

Как работает DKIM и что проверяет инструмент

DKIM (DomainKeys Identified Mail) добавляет к каждому письму цифровую подпись. Почтовый сервер отправителя подписывает заголовки и тело письма закрытым ключом, а получатель берёт открытый ключ из DNS и проверяет, что письмо не меняли по дороге и что его действительно отправил владелец домена. Открытый ключ лежит в TXT-записи на имени селектор._domainkey.домен.

Проверка DKIM находит эту запись, при необходимости проходит по CNAME, разбирает теги и оценивает ключ:

СтатусЧто значит
ключ в порядкеRSA 2048 бит и больше или Ed25519, ошибок в записи нет
ключ 1024 — обновитьПока принимается, но это минимум; переходите на 2048
слабый ключКороче 1024 бит — по RFC 8301 получатели не должны принимать такие подписи
ключ отозванПустой p=: подписи этим селектором не пройдут
ошибка в записиКлюч не читается, неверная версия или неизвестный тип ключа

Где найти DKIM-селектор

Селектор — это имя ключа, его выбирает отправитель, и у домена может быть сколько угодно селекторов для разных сервисов. В DNS нет способа получить их список, поэтому без селектора инструмент проверяет 30 самых частых. Если ничего не нашлось, это значит только «не найдено среди проверенных», а не «DKIM нет».

Точный селектор есть в любом письме, отправленном с домена. В Gmail откройте письмо → «Показать оригинал» и найдите заголовок:

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=google;
        h=from:to:subject:date:message-id; bh=...; b=...

s=google — селектор, d=example.com — домен подписи. Результат проверки у получателя виден в заголовке Authentication-Results: dkim=pass [email protected] header.s=google. Для DMARC важно, чтобы домен d= совпадал с доменом в поле From — это проверяет проверка DMARC.

Селекторы популярных сервисов

СервисСелектор и тип записи
Google Workspacegoogle по умолчанию (можно задать свой), TXT с ключом
Microsoft 365selector1 и selector2, CNAME в зону Microsoft
Mailchimp / Mandrillk1 (а также k2, k3), CNAME
SendGrids1 и s2, CNAME на sendgrid.net
Amazon SESтри случайных селектора на домен, CNAME на dkim.amazonses.com — угадать нельзя, берите из консоли SES или из заголовка
Хостинги с cPanel/Pleskчасто default или mail

Названия и схемы у сервисов меняются, поэтому сверяйтесь с их документацией. Если запись — CNAME, ключ хранит и ротирует сервис; это нормально. Плохо, если CNAME есть, а по адресу назначения записи нет: подпись не пройдёт. В Microsoft 365 это обычно значит, что DKIM для домена не включён в центре администрирования.

Синтаксис DKIM-записи

v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
  • v=DKIM1 — версия; необязательна, но если есть — стоит первой.
  • k — тип ключа: rsa (по умолчанию) или ed25519.
  • p — открытый ключ в base64. Пустое значение означает, что ключ отозван.
  • t=y — режим тестирования: получатели не должны отличать подписанные письма от неподписанных. Уберите флаг после запуска. t=s — строгий режим для поддоменов.
  • h — допустимые хэш-алгоритмы. Если там только sha1, подписи не пройдут: sha1 по RFC 8301 больше не принимается.
  • s — тип сервиса; для почты * или email.

Ключ 2048 бит длиннее 255 символов, поэтому в DNS он хранится как несколько строк внутри одной TXT-записи. Большинство панелей делит его сами; если панель требует вставить вручную, разбейте значение на части в кавычках без пробелов внутри ключа.

Длина ключа и ротация

Используйте RSA 2048 бит. Чтобы заменить ключ без простоя:

  1. Создайте новый ключ под новым селектором (например, s2026) и опубликуйте его в DNS.
  2. Проверьте запись здесь, указав новый селектор.
  3. Переключите подпись на новый селектор в почтовом сервере или сервисе.
  4. Через несколько дней, когда письма со старой подписью доставлены, опубликуйте старый селектор с пустым p=, а позже удалите его.

Для своего сервера ключ можно сгенерировать так (OpenDKIM или вручную через OpenSSL):

opendkim-genkey -b 2048 -s s2026 -d example.com
# или
openssl genrsa -out dkim.key 2048
openssl rsa -in dkim.key -pubout -outform der | base64

DKIM, SPF и DMARC вместе

DKIM переживает пересылку письма, а SPF при пересылке обычно ломается, поэтому для DMARC подпись DKIM вашим доменом — самый надёжный способ пройти проверку. С февраля 2024 года Google и Yahoo требуют от массовых отправителей и SPF, и DKIM, а также DMARC-запись; детали меняются, так что сверяйтесь с их актуальными правилами для отправителей. Проверьте весь набор: SPF, DMARC и MX-записи.

Каскадное продвижение сайта ссылками Бонус $30Беклинки 5→50→5000 на 100+ площадках. Старт от $30, бонус $30 новичкам.