Генератор DKIM-записи

Создайте пару ключей DKIM в браузере и получите запись для публикации. Используете Google Workspace или Microsoft 365? Ключ создают они: мы покажем, где.

Ключи создаются через Web Crypto в вашем браузере и никуда не отправляются · RFC 6376, 8301 и 8463 · проверена настройка DKIM у 20 отправителей
Пример

Сгенерировать ключ для example.com

Создаётся в вашем браузере через Web Crypto. Закрытый ключ не покидает эту вкладку.

Кто подписывает вашу почту?
Создаёт свой ключ
Принимает ваш ключ
Использует ваш ключ
kТип ключа

Это просит RFC 8301. Обычный выбор.

sСелектор
._domainkey.example.com
Новое имя для каждого нового ключа. Имена с датой подсказывают, когда ключ создан.
tПараметры записи
Дополнительно
Создаётся в вашем браузере через Web Crypto. Закрытый ключ не покидает эту вкладку.

Ваш ключ

Закрытый ключ · Храните на своём сервереИзолированный фрейм: без сети, и ни один другой скрипт этой страницы не может его прочитать

Работает офлайн: выключите Wi-Fi и сгенерируйте снова.

Настроить OpenDKIM

Key file
# Key file: only the opendkim user may read it
$ sudo mkdir -p /etc/opendkim/keys/example.com
$ sudo nano /etc/opendkim/keys/example.com/s.private
$ sudo chown -R opendkim:opendkim /etc/opendkim/keys
$ sudo chmod 600 /etc/opendkim/keys/example.com/s.private

План смены ключа

  1. СегодняОпубликуйте , затем начните подписывать им.
  2. Через полгодаСоздайте … и опубликуйте рядом с .
  3. ПереключениеПодписывайте ключом ….
  4. Через 7–30 днейДержите опубликованным для писем, ещё находящихся в пути.
  5. ОтзывОпубликуйте пустой ключ у , не удаляйте его.v=DKIM1; k=rsa; p=

После публикации

Полная проверка: example.comВ ссылке эти настройки, но никогда не ключ. Запрос из вашего браузера: резолвер Cloudflare, Google — для второго мнения.

Как сгенерировать ключ DKIM и запись?

Создайте пару ключей RSA 2048, храните закрытый ключ на сервере, который подписывает вашу почту, и опубликуйте открытый ключ как TXT-запись у selector._domainkey.yourdomain (RFC 6376).

Выбирайте новое имя селектора для каждого ключа, например месяц его создания, чтобы старый ключ мог оставаться опубликованным, пока письма, подписанные им, ещё в пути.

Затем установите закрытый ключ в своего подписывающего и отправьте тестовое письмо: заголовок DKIM-Signature называет домен (d=) и селектор (s=), которые будут искать получатели.

Закрытый ключостаётся на вашем почтовом сервереподписывает каждое письмо
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=s202610; …
Открытый ключпубликуется в DNSs202610._domainkey.example.comполучатели проверяют им ✓
Две половины одного ключа
Генератор DKIM: закрытый ключ RSA 2048 в изолированном фрейме браузера, файлы OpenDKIM и план смены ключаГенератор DKIM: закрытый ключ RSA 2048 в изолированном фрейме браузера, файлы OpenDKIM и план смены ключаЗакрытый ключ, который не прочитает ни один другой скриптСоздан и хранится в изолированном фрейме, у которого нет доступа к сети.Форма, которую читает ваш подписывающийPKCS#8, PKCS#1 или одна строка base64, выбранная под вашего подписывающего.Ноль запросов, и работает офлайнЖивой счётчик сетевых запросов с момента нажатия «Сгенерировать».Файлы вашего подписывающегоOpenDKIM, rspamd, Exim, Postfix или Amazon SES, с подставленными вашим доменом и селектором.Селектор с датойЕго имя говорит, когда создан ключ; план смены ниже датирует следующий ключ и отзыв.
Ключ RSA 2048 для OpenDKIM, созданный через Web Crypto: закрытый ключ в изолированном фрейме без сети, файлы подписывающего заполнены и план смены ключа с реальными датами.

Нужно ли мне генерировать свой ключ DKIM?

Только если вашу почту подписывает ваш собственный сервер: Google Workspace, Microsoft 365 и большинство почтовых сервисов сами создают ключ и показывают запись для публикации, поэтому ключ из любого генератора никогда не использовался бы.

Свой ключ нужен для Postfix с OpenDKIM, rspamd, Exim, Haraka, вашего приложения и сервисов, которые его принимают, вроде Amazon SES (BYODKIM) и Mailgun.

ОтправительКлюч создаётВы публикуетеСелекторы
Google WorkspaceпоставщикTXT (их ключ)google
Microsoft 365поставщикCNAME на их ключиselector1, selector2
SendGridпоставщикCNAME на их ключиs1, s2
MailchimpпоставщикCNAME на их ключиk2, k3
PostmarkпоставщикTXT (их ключ)<date>pm
BrevoпоставщикCNAME на их ключиbrevo1, brevo2
Zoho MailпоставщикTXT (их ключ)zoho
Amazon SESлюбой из двухTXT (ваш ключ)любые
Mailgunлюбой из двухTXT (ваш ключ)любые
OpenDKIMвыTXT (ваш ключ)любые
rspamdвыTXT (ваш ключ)любые
EximвыTXT (ваш ключ)любые
Кто создаёт ключ

Что входит в запись DKIM?

TXT-запись у selector._domainkey.domain с v=DKIM1, типом ключа k= и открытым ключом p=; необязательные теги ограничивают хеши (h=) или службы (s=) либо помечают ключ как тестовый (t=).

Пустой p= означает, что ключ отозван. Ключи RSA публикуются как SubjectPublicKeyInfo, которого требуют OpenDKIM и rspamd; ключи Ed25519 — как сырые 32 байта.

s202610._domainkey.example.com · TXT
v=DKIM1; k=rsa; h=sha256; s=email; p=MIIBIjANBgkqhkiG9w0BAQ…GQIDAQAB
ТегЗначениеПо умолчанию
vВерсия, первой, если естьDKIM1
kТип ключа: rsa или ed25519rsa
hДопустимые хешивсе
sСлужбы: email или **
ty — тестирование, s — точный доменнет
nЗаметки для людейнет
pОткрытый ключ; пусто — отозванобязателен
Запись DKIM, тег за тегом

RSA 1024, 2048, 4096 или Ed25519?

Берите RSA 2048: 1024 — минимум, который принимают получатели, 4096 перегружает DNS, а Ed25519 короткий, но независимые тесты показали, что крупные почтовые провайдеры его не проверяют, поэтому он помогает только рядом с подписью RSA.

Многие инструменты по-прежнему используют 1024 по умолчанию: opendkim-genkey, dkim_keygen в rspamd и Microsoft 365. RFC 8301 просит 2048.

Если добавляете Ed25519, подписывайте и RSA, под вторым селектором; Yahoo может не засчитать DMARC, если одна из нескольких выровненных подписей не проходит.

RSA 1024234 символов · 1минимум
RSA 2048410 символов · 2рекомендуется
RSA 3072582 символов · 3проверьте своего подписывающего
RSA 4096754 символов · 3может не поместиться в UDP
Ed2551966 символов · 1крупные провайдеры не проверяют

строки по 255 байт: 255, 510, 765

Длина записи для каждого типа ключа

Как настроить OpenDKIM, rspamd или Exim?

Храните закрытый ключ там, где его может прочитать только подписывающий, сопоставьте с ним домен и селектор в конфигурации подписывающего и перезапустите; вкладки показывают файлы каждого подписывающего с подставленными вашими именами.

Проверьте результат, отправив себе письмо и прочитав результат DKIM в заголовках, или нашей проверкой DKIM.

OpenDKIM · KeyTable · SigningTable
# /etc/opendkim/KeyTable
s202610._domainkey.example.com example.com:s202610:/etc/opendkim/keys/example.com/s202610.private

# /etc/opendkim/SigningTable
*@example.com s202610._domainkey.example.com

# /etc/opendkim/TrustedHosts
127.0.0.1
localhost
Rspamd · dkim_signing.conf
# /etc/rspamd/local.d/dkim_signing.conf
domain {
  example.com {
    selector = "s202610";
    path = "/var/lib/rspamd/dkim/example.com.s202610.key";
  }
}
# only if example.com is a subdomain: use_esld = false;
# only if users log in without @example.com: allow_username_mismatch = true;

$ sudo rspamadm configtest && sudo systemctl restart rspamd
Файлы вашего подписывающего

Почему моя DKIM-запись разбита на несколько строк?

Запись ключа в 2048 бит — около 410 символов, больше одной строки TXT в 255 байт, поэтому DNS хранит её как две строки, которые проверяющие склеивают без промежутков.

Cloudflare, Azure и панели вроде cPanel принимают значение целиком и разбивают его сами; Route 53 и Google Cloud DNS хотят, чтобы вы вставили строки в кавычках. GoDaddy ограничивает значение 1024 символами.

v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtw0DwsqwlKexAE5H5WDgWwJlEz/C+7FIeL9/Y1TahjkvMvvX+lUQofjxhVmt/yMXVjvgrYb9jZIxtG96iO9qggOWi0vAeClBst4m3rj3O7GjkC/dfbG2BhQBpwJYt6ec76B8y6cyHBZ0+hMWGfAxuLQt/kkiVsaqwRxRQvEuMfnL4L9S8I7evV8GHFihlEgIaM9W8ag4zzL0ZxiEeznDaHYmJDbmgzarExXIY1IuMdpPu1/GmSrq9RCHEifKVvKsOPcmbv2u6xMbW63/EZmPIY78eZRqkioT8TangIPKsP7HEFZRKQwnQJy/OybqexdiFmt29BXBo7A745shhzueGQIDAQAB
1255 B2155 B
s202610._domainkey.example.com. 3600 IN TXT ( "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtw0DwsqwlKexAE5H5WDgWwJlEz/C+7FIeL9/Y1TahjkvMvvX+lUQofjxhVmt/yMXVjvgrYb9jZIxtG96iO9qggOWi0vAeClBst4m3rj3O7GjkC/dfbG2BhQBpwJYt6ec76B8y6cyHBZ0+hMWGfAxuLQt/kkiVsaqwRxRQvEuMfnL4L9S8I7evV8GHFihlEgIa"
	"M9W8ag4zzL0ZxiEeznDaHYmJDbmgzarExXIY1IuMdpPu1/GmSrq9RCHEifKVvKsOPcmbv2u6xMbW63/EZmPIY78eZRqkioT8TangIPKsP7HEFZRKQwnQJy/OybqexdiFmt29BXBo7A745shhzueGQIDAQAB" )
Запись в 2048 бит так, как её хранит DNS

Как менять ключи DKIM?

Опубликуйте новый ключ под новым селектором, переключите на него подпись, держите старую запись 7–30 дней для писем, ещё находящихся в пути, затем отзовите её пустым p=; M3AAWG советует менять ключ не реже раза в полгода.

Отзывайте, а не удаляйте, чтобы проверяющие сообщали, что старый селектор отозван. Никогда не используйте имя селектора повторно для нового ключа.

нояб.дек.янв.февр.мартапр.майиюньиюль
s202611подписываетхранится 7–30 днейp= (отозван)
s202705подписывает
Два селектора, одна передача

Безопасно ли генерировать ключ DKIM онлайн?

Только если ключ создаётся в вашем браузере и никуда не отправляется: эта страница создаёт его через Web Crypto в изолированном фрейме без доступа к сети, что можно подтвердить в инструментах разработчика браузера.

Некоторые онлайн-генераторы создают ключ на своём сервере и присылают его в ответе, где его могут записать в журнал или сохранить. Ключ, созданный в вашем браузере, существует только в вашей вкладке, пока вы его не сохраните.

Ни один другой скрипт этой страницы не может прочитать фрейм с ключом, а страница работает офлайн: выключите Wi-Fi и сгенерируйте снова.

Создан в вашем браузереизолированный фреймработает офлайн0сетевых запросов
Создан на сервереGET /generate?key_size=2048200 {"private_key": "-----BEGIN…"}может попасть в журнал
Куда идёт закрытый ключ

Генератор DKIM-записи: частые вопросы

Что такое DKIM-запись?

DKIM-запись — это TXT-запись у selector._domainkey.yourdomain, которая публикует открытую половину пары ключей. Ваш почтовый сервер подписывает каждое письмо закрытой половиной, а получатели берут открытый ключ, чтобы проверить, что письмо действительно пришло с вашего домена и не было изменено по пути. Она описана в RFC 6376.

Безопасно ли генерировать здесь ключи DKIM?

Да. Пара ключей создаётся через Web Crypto в вашем браузере, в изолированном фрейме без доступа к сети, и ни один другой скрипт страницы не может её прочитать. Ничего не отправляется: можно смотреть, как вкладка сети в инструментах разработчика остаётся пустой, или отключить соединение и сгенерировать снова.

Какой размер ключа выбрать?

RSA 2048. RFC 8301 просит у подписывающих не меньше 2048 бит, Gmail и Yahoo его рекомендуют, а его запись помещается у большинства DNS-хостингов в две строки. 1024 — минимум, который принимают получатели; берите его, только если ваш DNS-хостинг не принимает длинные значения. 4096 даёт длинную запись, которая может не поместиться в обычный ответ DNS.

Нужен ли ключ DKIM для Google Workspace или Microsoft 365?

Нет. Google Workspace создаёт ключ в консоли администратора и показывает TXT-запись для google._domainkey; Microsoft 365 подписывает ключами за двумя записями CNAME, selector1 и selector2. Ключ из любого генератора никогда не использовался бы. Выберите своего отправителя в генераторе, чтобы увидеть, что именно публиковать.

Что такое селектор DKIM?

Селектор — это имя перед ._domainkey, которое сообщает получателям, какой ключ взять, например s202610 в s202610._domainkey.example.com. Он позволяет одному домену иметь сразу несколько ключей — по одному на сервер, сервис или дату. Генератор предлагает селектор с датой, поэтому каждый новый ключ получает новое имя, а смена ключа проходит легко.

В каком формате закрытый ключ?

По умолчанию PKCS#8 PEM (BEGIN PRIVATE KEY), который читают OpenDKIM, rspamd и Exim. Можно переключиться на PKCS#1 (BEGIN RSA PRIVATE KEY), традиционную форму, которую описывают некоторые инструменты, или на одну строку base64 без заголовка и переносов, которую просит Amazon SES BYODKIM. Сохраните его с правами, при которых его прочитает только подписывающий.

Может ли у домена быть больше одной DKIM-записи?

Да, под разными селекторами: у каждого сервиса, подписывающего вашу почту, может быть своя, а при смене ключа ненадолго появляются две ваши. Но одно имя селектора должно хранить только одну TXT-запись; две записи по одному имени делают результат неопределённым, и проверяющие могут выбрать любую.

Почему моя DKIM-запись длиннее 255 символов?

Открытый ключ RSA в 2048 бит — это 392 символа base64, поэтому вся запись занимает около 410. Строка TXT вмещает не больше 255 байт, поэтому DNS хранит её как две строки, а проверяющие склеивают их без промежутков. Большинство DNS-хостингов разбивают её за вас; Route 53 и Google Cloud DNS нужны строки в кавычках.

Что значит t=y в DKIM-записи?

t=y помечает ключ как тестовый: проверяющие должны относиться к письмам, подписанным им, точно как к неподписанным, даже когда подпись не проходит. Используйте его, пока проверяете настройку, затем уберите, потому что тестовый ключ ничего не даёт DMARC. t=s — другое: он требует, чтобы идентичность подписи использовала именно ваш домен, а не поддомен.

Как часто менять ключи DKIM?

Не реже раза в полгода, как советует M3AAWG. Опубликуйте новый ключ под новым селектором, переключите на него своего подписывающего и держите старую запись 7–30 дней, пока подписанная почта ещё в пути. Затем отзовите старый селектор, опубликовав его с пустым p=, а не удаляя.

Чего-то не хватает?Предложите функцию или новый инструмент