DKIM: що це, DKIM-запис і селектор
DKIM (DomainKeys Identified Mail) доводить про лист дві речі: його надіслав сервер, якому домен це дозволив, і дорогою лист ніхто не змінив. Для цього використовують пару ключів: закритий зберігається на сервері-відправнику, відкритий публікується в DNS. Розберемо DKIM-запис, селектори, довжину ключа, ротацію і налаштування в поштових сервісах.
Як працює DKIM
- Сервер-відправник бере вибрані заголовки (From, Subject, Date та інші) і текст листа, рахує хеш і підписує його закритим ключем.
- Додає заголовок
DKIM-Signatureіз підписом та інструкцією, як його перевірити. - Отримувач читає заголовок, бере відкритий ключ із DNS і перевіряє підпис. Якщо підписана частина змінилася — перевірку не пройдено.
Скорочений заголовок підпису:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=mail2025;
h=from:to:subject:date:message-id; bh=…; b=…
d=— домен, що підписав лист. Для DMARC він має збігатися з доменом «Від кого».s=— селектор: підказує отримувачу, де шукати ключ.h=— список підписаних заголовків;bh=— хеш тексту;b=— сам підпис.
Який вигляд має DKIM-запис
Відкритий ключ публікують TXT-записом за адресою селектор._domainkey.домен. Для підпису вище це:
mail2025._domainkey.example.com. TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA…"
| Тег | Що означає |
|---|---|
v=DKIM1 | Версія; бажана, і якщо є — стоїть першою. |
k=rsa | Тип ключа. RSA — значення за замовчуванням і надійний вибір; ed25519 існує, але перевіряється не скрізь. |
p= | Відкритий ключ у base64. Порожнє p= означає, що ключ відкликано. |
t=y | Режим тестування. На робочих ключах не потрібен. |
Ключ завдовжки 2048 біт довший за 255 символів — межу одного рядка в TXT-записі. DNS-панелі поводяться по-різному: одні ділять значення самі, інші чекають, що ви вставите його кількома рядками в лапках в один запис. Якщо ключ «ламається», найчастіше його помилково розбили на два окремі записи, а має бути один TXT-запис із кількох рядків.
Що таке DKIM-селектор і навіщо їх кілька
Селектор — просто ім'я, яке обираєте ви або провайдер: google, selector1, s1, mail2025. Він потрібен, щоб в одного домену могло бути багато ключів одночасно:
- для поштового сервісу;
- для платформи розсилок;
- для служби підтримки або CRM;
- новий ключ на час ротації, поки старий ще чинний.
Отримати список усіх селекторів домену через DNS неможливо — можна лише запитати конкретне ім'я. Тому сервіси перевірки перебирають поширені селектори, а надійний спосіб — прочитати селектор зі справжнього листа.
Як знайти селектор у заголовках листа
- Надішліть лист із потрібного сервісу на скриньку, до якої маєте доступ.
- Відкрийте оригінал листа з усіма заголовками. У більшості поштових програм це пункт «Показати оригінал», «Вихідний код» або «Заголовки» в меню листа.
- Знайдіть заголовок
DKIM-Signature: значенняs=— селектор,d=— домен. - Подивіться й
Authentication-Results, який додає отримувач: там написаноdkim=passабоfailі для якого домену. - Введіть домен і селектор у перевірку DKIM — побачите опублікований ключ, його тип і довжину. Без селектора інструмент перебере близько 30 поширених.
Довжина ключа: 1024 чи 2048 біт
Стандарт DKIM вимагає від відправників ключі не коротші за 1024 біти й рекомендує 2048. Ключі на 512 і 768 біт вважаються зламними, і отримувачі можуть їх ігнорувати. На практиці:
- Використовуйте 2048 біт скрізь, де це підтримують провайдер і DNS-панель, — сьогодні майже скрізь.
- 1024 біти ще перевіряються, але обирати таку довжину для нового ключа немає сенсу.
- Довші ключі (4096) потрібні рідко, а деякі DNS-панелі погано дають раду їхній довжині.
Для прикладу: promopilot.link підписує листи із селектором mail і RSA-ключем на 2048 біт (перевірено в жовтні 2026).
Ключі через CNAME
Багато провайдерів не просять публікувати сам ключ. Натомість ви ставите CNAME, що спрямовує селектор на запис провайдера:
selector1._domainkey.example.com. CNAME selector1-example-com._domainkey.provider.example.net.
Перевага в тому, що провайдер може змінювати ключі без вашої участі. Так влаштовано Microsoft 365 із двома селекторами, selector1 і selector2: ви публікуєте обидва CNAME, а сервіс чергує їх під час ротації. Багато платформ розсилок і транзакційної пошти теж видають два-три CNAME. Завжди копіюйте точні значення з адмін-панелі провайдера — у них є ім'я вашого акаунта, вгадати їх неможливо.
Як налаштувати DKIM
- Складіть список усіх сервісів, що надсилають пошту від домену: пошта, розсилки, CRM, підтримка, білінг, форми на сайті.
- В адмін-панелі кожного сервісу знайдіть розділ автентифікації домену або DKIM і додайте свій домен. Сервіс згенерує пару ключів або CNAME-записи.
- Опублікуйте записи в DNS-панелі точно як видано: ім'я (селектор плюс
._domainkey), тип і значення. - Дочекайтеся оновлення DNS, поверніться в сервіс і натисніть перевірку або ввімкнення підпису. Деякі провайдери не починають підписувати, доки ви цього не зробите.
- Надішліть тестовий лист і перевірте в заголовках
dkim=passіз вашим доменом уd=. - Повторіть для кожного сервісу, потім опублікуйте DMARC, щоб побачити загальну картину, — див. як налаштувати DMARC.
Ротація ключів
Ключ, який ніколи не змінюється, може бути вже скомпрометований. Чиста ротація має такий вигляд:
- Згенеруйте нову пару ключів і опублікуйте відкритий ключ під новим селектором.
- Перемкніть підпис на новий селектор.
- Залиште старий запис принаймні на кілька днів, щоб листи, які затрималися в чергах, теж перевірялися.
- Відкличте старий ключ — опублікуйте запис із порожнім
p=— або видаліть його.
За ключів через CNAME кроки 1–3 провайдер робить сам. Якщо ключами керуєте ви, звичайна практика — ротація раз на 6–12 місяців.
Часті проблеми з DKIM
- Запис не знаходиться — неправильне ім'я. Деякі панелі самі дописують домен, і
mail._domainkey.example.comперетворюється наmail._domainkey.example.com.example.com. Вводьте лишеmail._domainkey. - Ключ зіпсовано — зайві пробіли, лапки чи переноси всередині
p=, або ключ розбито на два записи. - Підпис не проходить після надсилання — лист змінюють уже після підпису: шлюз додає підпис, список розсилки, антиспам-фільтр.
- DKIM проходить, а DMARC ні — сервіс підписує своїм доменом. Увімкніть підпис вашим.
Чому для DMARC DKIM важливіший за SPF
SPF прив'язаний до IP, з якого доставлено лист, тому ламається за будь-якого пересилання: сервера, що переслав лист, немає у вашому SPF-записі. Підпис DKIM їде всередині листа й переживає пересилання, доки підписані частини не змінюють. Тому домен, що тримається лише на SPF, бачить у звітах DMARC провали від пересланої пошти, а домен із вирівняним DKIM у кожному потоці — ні. Якщо в стороннього відправника можна виправити лише одне, увімкніть DKIM із вашим доменом.
DKIM — одна з трьох частин. Як він працює разом із SPF і DMARC, розказано в статті SPF, DKIM і DMARC: що це і як налаштувати; решту налаштування пошти перевірять перевірка SPF, перевірка MX і перевірка IP за чорними списками.