Перевірка 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 новачкам.