Приятного чтения!

← назад
Что такое DKIM и как его настроить

Что такое DKIM и как его настроить

calendar_today27.03.2024 visibility31

DKIM — это технология, объединяющая несколько существующих методов антифишинга и антиспама с целью повышения качества классификации и идентификации легитимной электронной почты.
Проще говоря, DKIM, на ряду с SPF, является ещё одним методом email-аутентификации.

Принцип работы

Принцип работы базируется на двух ключах: публичном и приватном. Публичный ключ размещается в DNS‑записи в txt-поле. Приватный ключ размещается на стороне отправляющего сервера. В заголовки каждого отправляемого письма с помощью приватного ключа в зашифрованном виде добавляются: тело письма, служебные заголовки, время отправки и другие параметры.

Почтовый провайдер обращается к домену отправителя сразу, как только получит подписанное email‑сообщение. С помощью публичного ключа расшифровывает заголовок и проверяет соответствие письма и информации в заголовке.

Зачем нужен DKIM

Наличие подписи в массовых email-рассылках является обязательным для большинства почтовых провайдеров. Она идентифицирует отправителя, и ISP считает его добросовестным. DKIM в совокупности с SPF-записью делает фишинг-атаки намного более сложными.

Как создать ключи

Пару ключей можно сгенерировать с помощью онлайн-сервисов, например, DKIM Core.

Либо без использования сторонних сервисов — с помощью OpenSSL:

  • генерируем секретный ключ длиной 1024 бит

openssl.exe genrsa -out tstpriv.pem 1024
  • получаем публичный ключ из секретного
openssl.exe rsa -pubout -in tstpriv.pem -out tstpub.pem

Структура DKIM-заголовка

Заголовок, добавляемый сервером-отправителем, называется DKIM-Signature. Он состоит из списка тегов вида «тег=значение».

Пример заголовка:

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=altrec.ru; s=altrec; t=1711450803; bh=BwBaaY6zop/jN/g6ydLEYVSCWWy1p2mVmwFJLaNknws=; h=Date:To:From:Subject:From; b=ZBTshiS8PjF02XDRzzbslmKTuxgnRIRjzlP0km1aOGqNQ3MpWVWMYktWIuK/fk0X9
	 d+2t2ifOsQgZIWuLsRZxiLYR0D0G3T35pFrrBK+opZJpbRfQ43WpZvwy52f1xfXyxZ
	 8+rDs6n+uYiBqrQxNYFS38DsyQn3pSwQls6/G4sYutlwpuQ0W6UdSJx+IkoUQQXU5h
	 h5rqThhDhH64Qvq2AetLiFsI7oaIB6WtvYMqUbt1/mxK5Le7SCyiCyYy/HmhV58aaI
	 VQzEMh67pdrDmqrPLkNxPSpXHjbejb0QrkYjqOEJgpGY2zToGHiD121FlFaY4WTraK
	 uiVigD2SV/s3A==

Основные теги и их значения:

  • b — содержимое письма (тело + заголовки, закодированные в Base64)
  • bh — хэш канонизированного тела письма (также в Base64)
  • d — доменное имя отправителя
  • h — список подписанных заголовков

Дополнительные теги:

  • a — основной алгоритм для генерации сигнатуры
  • v — версия системы
  • s — селектор для разделения пространства имен для «d=» тега
  • c — алгоритм для приведения тела письма и заголовков к каноническому виду
  • q — список алгоритмов для получения публичного ключа
  • x — время истечения сигнатуры
  • i — подпись клиента, проставившего DKIM-подпись
  • l — размер тела письма в байтах, включённых в криптографический хэш
  • t — таймстамп проставленной сигнатуры
  • z — копии заголовков на момент проставления сигнатуры

Таким образом, получив письмо с заголовком из примера, почтовый провайдер обратится к DNS-записи altrec._domainkey.altrec.ru для получения публичного ключа. Содержимое данной записи следующее:

DKIM-запись

 где значение за тегом «p» и является публичным ключом.

Как настроить

В большинстве платформ для email-рассылок настройки подписи включены по умолчанию, в таком случае технически рассылки ведутся от имени сервиса рассылок. Для крупных компаний рекомендуется вести рассылки от имени своего домена для формирования репутации и снижения возможности фишинговых атак.

Крупные ESP предоставляют возможность настройки подписи для вашего домена. В некоторых это является стандартной процедурой при открытии аккаунта, в некоторых дополнительной опцией. В обоих случаях платформа предоставляет сгенерированный публичный ключ, который необходимо разместить в DNS‑записи. После чего подпись писем настроится автоматически.

Если вы используете собственную платформу для рассылок, то воспользуйтесь дополнительными средствами для настройки подписи писем, например, OpenDKIM.

Как проверить настройку

После того как настройка подписи произведена и добавлена DNS-запись с ключом, проверим доступность публичного ключа. Сделать это можно известным нам способом, на главной странице нашего сайта во вкладке DNS.

Для этого после перехода на сайт введите адрес по следующей структуре — селектор._domainkey.рассылающий домен и выберите тип записи TXT.

DKIM-запись

Если содержимое данной записи отображается верно, приступайте к живому тесту подписи, а именно к отправке тестового письма. Рассмотрим на примере веб-интерфейса GMail.com с отправленным отчётом DMARC.

Получив email-сообщение, открываем его. В меню (вертикальное троеточие) ищем пункт “<> Показать оригинал”.

Пример веб-интерфейса GMail.com

Открыв его, вы увидите все служебные заголовки письма. Среди них будет DKIM-Signature.

Пример DKIM-Signature

Немного выше над ним в блоках ARC-Authentication-Results и Authentication-Results при успешной проверке должна быть строка dkim=pass:

Пример Authentication-Results

Если вместо значения pass там будет fail, проверьте правильность ключей.

Что будет, если не настроить DKIM

Наличие настроенного DKIM является обязательным требованием большинства почтовых провайдеров.

Несмотря на это, email-сообщения, не подписанные DKIM, могут быть доставлены, но придут они в папку «Спам». Поэтому не стоит игнорировать данное требование, тем более что, единожды настроив его, вы также обезопасите себя и своих подписчиков от действий злоумышленников.

Кроме того, на основе DKIM работает протокол DMARC, о  котором рассказали в одной из статей серии.