Что такое DKIM и как это работает?
DKIM (DomainKeys Identified Mail) — метод аутентификации почты, который позволяет отправителю криптографически подписывать каждое исходящее сообщение. Принимающий почтовый сервер проверяет эту подпись с помощью открытого ключа, опубликованного в DNS отправителя. Действительная подпись DKIM подтверждает два факта: сообщение действительно пришло с указанного домена, и оно не было изменено в пути.
В отличие от SPF, который сверяет IP отправителя со списком разрешённых адресов, DKIM прикрепляет цифровую подпись к самому сообщению. Поэтому проверка DKIM сохраняется при пересылке почты, тогда как SPF часто не проходит: IP пересылающего сервера отсутствует в исходной записи SPF.
Формат DNS-записи DKIM
Запись DKIM — это DNS TXT-запись, опубликованная на конкретном поддомене: selector._domainkey.yourdomain.com. Селектор — метка, которую вы выбираете: типичные значения — mail, google, s1 или default. Значение записи начинается с v=DKIM1; k=rsa; p= и далее следует открытый ключ в кодировке base64.
Закрытый ключ хранится в секрете на почтовом сервере или у вашего провайдера почтовых услуг. Открытый ключ публикуется в DNS. Принимающие серверы используют открытый ключ для проверки подписей, созданных закрытым ключом — классическая схема криптографии с открытым ключом.
Где найти открытый ключ DKIM
Открытый ключ DKIM создаёт ваш почтовый провайдер при включении подписи DKIM. Ниже — где его найти у самых распространённых провайдеров:
- Google Workspace: консоль Admin → Apps → Google Workspace → Gmail → Authenticate email. Создайте новый ключ и скопируйте значение TXT-записи.
- Microsoft 365: Exchange admin center → Protection → DKIM. Включите DKIM для домена и скопируйте записи CNAME (Microsoft использует CNAME, а не прямые TXT-записи).
- Mailchimp: Account → Domains → Verify a domain. Mailchimp выдаёт значение TXT-записи DKIM для добавления в DNS.
- SendGrid: Settings → Sender Authentication → Domain Authentication. SendGrid формирует полную TXT-запись DKIM за вас.
- Свой сервер (Postfix, Exim): используйте opendkim-genkey, чтобы создать пару ключей. Файл открытого ключа содержит значение TXT-записи.
Рекомендации по DKIM
По возможности используйте ключ длиной 2048 бит — ключи на 1024 бита считаются слабыми и могут помечаться некоторыми почтовыми системами. Периодически ротируйте ключи DKIM (не реже раза в год), чтобы ограничить ущерб при компрометации. После ротации оставьте старый ключ в DNS на несколько дней, чтобы успели пройти проверку сообщения, уже находящиеся в пути.
Одного DKIM недостаточно, чтобы защитить видимый заголовок From. Чтобы завершить настройку аутентификации почты, добавьте политику DMARC, которая согласует результаты DKIM с доменом From. Чистый список адресов тоже важен — даже аутентифицированная почта попадает в спам при повторных отказах в доставке. Используйте проверку адресов , чтобы удалить недействительные адреса, или проверьте большие списки с помощью массовой проверки почты.