Как попасть в Inbox: технология DKIM
В цикле статей «Как попасть в Inbox» рассказываем о SPF-записи, протоколе DMARC, чёрных списках, тактиках прогрева и многом другом. Эта статья цикла посвящена DKIM‑технологии. Рассказываем, как она работает, зачем её использовать и как настраивать.
Что такое DKIM
DKIM — это технология, объединяющая несколько существующих методов антифишинга и антиспама с целью повышения качества классификации и идентификации легитимной электронной почты. Проще говоря, DKIM, на ряду с SPF, является ещё одним методом емейл-аутентификации.
Принцип работы
Принцип работы базируется на двух ключах: публичном и приватном. Публичный ключ размещается в DNS‑записи в txt-поле. Приватный ключ размещается на стороне отправляющего сервера. В заголовки каждого отправляемого емейла с помощью приватного ключа в зашифрованном виде добавляются: тело письма, служебные заголовки, время отправки и другие параметры.
Почтовый провайдер обращается к домену отправителя сразу, как только получит подписанное емейл‑сообщение. С помощью публичного ключа расшифровывает заголовок и проверяет соответствие письма и информации в заголовке.
Зачем нужен DKIM
Наличие подписи в массовых емейл-рассылках является обязательным для большинства почтовых провайдеров. Она идентифицирует отправителя, и ISP считает его добросовестным. DKIM в совокупности с SPF-записью делает фишинг-атаки намного более сложными.
Как создать ключи
Пару ключей можно сгенерировать с помощью онлайн-сервисов, например, DKIM Core.
Либо без использования сторонних сервисов — с помощью OpenSSL:
- openssl.exe genrsa -out tstpriv.pem 1024 — генерируем секретный ключ длиной 1024 бит
- openssl.exe rsa -pubout -in tstpriv.pem -out tstpub.pem — получаем публичный ключ из секретного
Структура DKIM-заголовка
Заголовок, добавляемый сервером-отправителем, называется DKIM-Signature. Он состоит из списка тегов вида «тег=значение».
Основные теги и их значения:
- b — содержимое письма (тело + заголовки, закодированные в Base64)
- bh — хэш канонизированного тела письма (также в Base64)
- d — доменное имя отправителя
- h — список подписанных заголовков
- a — основной алгоритм для генерации сигнатуры
- v — версия системы
- s — селектор для разделения пространства имен для «d=» тега
- c — алгоритм для приведения тела письма и заголовков к каноническому виду
- q — список алгоритмов для получения публичного ключа
- x — время истечения сигнатуры
- i — подпись клиента, проставившего DKIM-подпись
- l — размер тела письма в байтах, включённых в криптографический хэш
- t — таймстамп проставленной сигнатуры
- z — копии заголовков на момент проставления сигнатуры
Таким образом, получив письмо с заголовком из примера, почтовый провайдер обратится к DNS-записи expertsender1k._domainkey.news.emailmatrix.ru для получения публичного ключа. Содержимое данной записи следующее:
Как настроить
В большинстве платформ для емейл-рассылок настройки подписи включены по умолчанию, в таком случае технически рассылки ведутся от имени сервиса рассылок. Для крупных кампаний рекомендуется вести рассылки от имени своего домена для формирования репутации и снижения возможности фишинговых атак.
Крупные ESP предоставляют возможность настройки подписи для вашего домена. В некоторых это является стандартной процедурой при открытии аккаунта, в некоторых дополнительной опцией. В обоих случаях платформа предоставляет сгенерированный публичный ключ, который необходимо разместить в DNS‑записи. После чего подпись писем настроится автоматически.
Если вы используете собственную платформу для рассылок, то воспользуйтесь дополнительными средствами для настройки подписи писем.
Как проверить настройку
После того как настройка подписи произведена и добавлена DNS-запись с ключом, проверим доступность публичного ключа. Сделать это можно известным нам www.dnswatch.info.
Для этого после перехода на сайт введите адрес по следующей структуре — *селектор*._domainkey.*рассылающий домен* и выберите тип записи TXT.
Если содержимое данной записи отображается верно, приступайте к живому тесту подписи, а именно к отправке тестового письма. Рассмотрим на примере веб-интерфейса Mail.ru.
Получив тестовое емейл-сообщение, открываем его. В меню ищем пункт «Служебные заголовки».
Открыв его, вы увидите все служебные заголовки письма. Среди них будет DKIM-Signature.
Немного выше над ним в блоке Authentication-Results при успешной проверке должна быть строка dkim=pass:
Если вместо значения pass там будет fail, проверьте правильность ключей.
Что будет, если не настроить DKIM
Наличие настроенного DKIM является обязательным требованием большинства почтовых провайдеров.
Несмотря на это, емейл-сообщения, не подписанные DKIM, могут быть доставлены, но придут они в папку «Спам». Поэтому не стоит игнорировать данное требование, тем более что, единожды настроив его, вы также обезопасите себя и своих подписчиков от действий злоумышленников.
Кроме того, на основе DKIM работает протокол DMARC, о котором рассказали в одной из статей цикла.