DKIM (почтовая идентификация на основе домена)

Электронная почта и безопасность
Механизм электронной почты, который добавляет к письму криптографическую подпись для проверки отправителя и целостности сообщения.
← Вернуться к глоссарию

Что такое DKIM?

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

Как работает DKIM

1. Генерация ключей: владелец домена создаёт пару открытого и закрытого ключей

2. Публикация в DNS: открытый ключ публикуется как TXT-запись

3. Подпись сообщения: исходящие письма подписываются закрытым ключом

4. Проверка подписи: получающий сервер получает открытый ключ и проверяет подпись

Процесс подписания

При отправке письма:

1. Mail server calculates a hash of message headers and body

2. Hash is encrypted with the private key (creating the signature)

3. Signature is added as a DKIM-Signature header

4. Email is transmitted

Процесс проверки

При получении письма:

1. Server extracts the DKIM-Signature header

2. Finds selector and domain (s=selector; d=domain.com)

3. Queries DNS for selector._domainkey.domain.com TXT record

4. Uses public key to decrypt the signature

5. Calculates its own hash of the message

6. Compares: match = pass, mismatch = fail

Формат DKIM-записи

DKIM-записи являются TXT-записями в определённом поддомене:

selector._domainkey.example.com.    IN    TXT    "v=DKIM1; k=rsa; p=MIGfMA0..."

Компоненты записи

ТегОписаниеПример
vВерсияv=DKIM1
kТип ключаk=rsa
pОткрытый ключ (base64)p=MIGfMA0GCSqG...
tФлаги (необязательно)t=y (режим тестирования)
hАлгоритмы хешированияh=sha256

Селекторы

Селекторы позволяют использовать несколько DKIM-ключей для одного домена:

google._domainkey.example.com       # Google Workspace

s1._domainkey.example.com # Sendgrid

mailchimp._domainkey.example.com # Mailchimp

Каждый почтовый сервис предоставляет собственный селектор и ключ.

Заголовок подписи DKIM

Подпись DKIM выглядит так:

DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=google;

c=relaxed/relaxed; q=dns/txt;

h=from:to:subject:date:message-id;

bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;

b=AuUoFEfDxTDkHlLXSZEpZj79...

Основные поля:

Настройка DKIM

Для Google Workspace

1. Откройте консоль администратора (Admin Console) → Apps → Gmail → Authenticate email (аутентификация почты)

2. Сгенерируйте DKIM-ключ (рекомендуется 2048 бит)

3. Добавьте предоставленную Google TXT-запись

4. Активируйте подпись DKIM

Для сторонних сервисов

Большинство почтовых сервисов (SendGrid, Mailchimp и другие) предоставляют:

1. CNAME-запись для добавления (для управляемого ими ключа)

2. либо TXT-запись с открытым ключом

Пример (SendGrid):

s1._domainkey.example.com    CNAME    s1.domainkey.sendgrid.net

Проверка DKIM

Отправьте тестовое письмо в сервис, который показывает заголовки (Gmail отображает результаты аутентификации). Из командной строки:
dig google._domainkey.example.com TXT
С помощью DomScan:
curl "https://domscan.net/v1/health?domain=example.com"

# Reports DKIM status based on common selectors

Лучшие практики DKIM

Используйте ключи 2048 бит

Старые ключи 1024 бит становятся всё более уязвимыми. Большинство провайдеров теперь используют 2048 бит по умолчанию.

Регулярно меняйте ключи

Меняйте DKIM-ключи ежегодно или после инцидентов безопасности. Перед переключением публикуйте новый ключ с новым селектором.

Подписывайте важные заголовки

Убедитесь, что From, To, Subject, Date и Message-ID включены в подпись.

Не изменяйте подписанные сообщения

Списки рассылки и сервисы пересылки, изменяющие содержимое, нарушают DKIM. Для пересылаемой почты используйте ARC (Authenticated Received Chain).

Ограничения DKIM

DKIM сам по себе не предотвращает подмену: он лишь подтверждает, что сообщение не было изменено. У домена может быть действительная DKIM-подпись, пока злоумышленники отправляют неподписанные поддельные письма. DMARC определяет, что делать с неподписанными сообщениями.

Применяйте эти знания на практике

Используйте API DomScan для проверки доступности доменов, их состояния и многого другого.