Dkim — Это Просто

Привет. Хочу поделиться своим небольшим опытом подключения DKIM (DomainKeys Identified Mail) к своему домену и почтовому серверу.

У нас есть:

Задача:
  • Разберитесь с системой подписи сообщений DKIM, чтобы Gmail распознавал их как действительные и выдавал заветный: dkim=pass.
Начать сначала.

Что такое DKIM вообще и что нам нужно, чтобы наша почтовая система отправляла почту с поддержкой DKIM. Из описания DKIM в Вики :

Идентифицированная почта DomainKeys Метод аутентификации по электронной почте.

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

Вместо традиционного IP-адреса DKIM добавляет цифровую подпись, связанную с доменным именем организации, для идентификации отправителя сообщения.

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

Технология DomainKeys использует доменные имена для аутентификации отправителей.

DomainKeys использует существующую систему доменных имен (DNS) для передачи общедоступных ключей шифрования.

Для работы с DKIM нам понадобится:
  1. Поддержка DKIM почтовым сервером для подписи отправляемой почты;
  2. Получение пары приватного и публичного ключей;
  3. Внесение в DNS домена необходимых записей о наличии поддержки DKIM.
С поддержкой DKIM для почтовых серверов всё вполне понятно.

hMailServer начиная с версии 5.1 поддерживает подписание исходящей корреспонденции ключом.

Теперь нам нужно выяснить, как сформировать пару закрытого и открытого ключей.

Перебрав несколько вариантов, я остановился на веб-утилите сервиса port25.com, которая помимо генерации необходимых ключей еще и генерирует подсказку для DNS-записей: www.port25.com/support/support_dkwz.php Небольшое пояснение по поводу определенного поля «селектора домена».

Это поле позволяет привязать к одному домену несколько записей DKIM для разных нужд (например, для разных почтовых серверов).

В моем случае у меня только один почтовый сервер и селектор мне не нужен, поэтому я просто выбрал в качестве селектора «mail».

Сохраняем полученный приватный ключ на сервере в папке, к которой имеет доступ почтовый сервер.

В принципе, открытый ключ не обязательно сохранять в виде файла.

Он понадобится нам только для внесения необходимых записей в DNS. В конфигурации домена в hMailServer нам необходимо указать путь к файлу закрытого ключа, а также указать выбранный селектор (напомню, в качестве селектора я взял «mail»).

В файле зоны DNS нам необходимо указать такие записи, как:

_domainkey.example.com. TXT "t=s; o=~;" mail._domainkey.example.com. TXT "k=rsa\; t=s\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQmO9AuWRbWPgl/jzDPQodrLfFLFqYYi6bCBnsTOCOJQrFbGgiR1C01j4zLw8XgG3rQ0WAaeg6Z/y39Ah7IONfs5gQuK 6e GZMmYwIsZyz2dQoUDmDLCb1WygpkrqsCbyPw3SWGihM4iChOwo7Ovo2mTOWOf5ejeZcP2qqNb9nRMQIDAQAB"
Где «mail» перед _domainkey во второй записи — это не что иное, как выбранный нами селектор, а длинный набор символов в той же записи после «p=» — это наш открытый ключ.

Кажется, это все.

Теперь попробуем отправить письмо с нашего почтового сервера на gmail, поскольку доподлинно известно, что gmail проверяет DKIM. Смотрим полученное письмо в gmail и видим заветные строки:

Результаты аутентификации: mx.google.com; spf=pass (google.com: домен [email protected] обозначает 123.123.123.123 как разрешенный отправитель) [email protected]; dkim=pass [email protected]
Поздравляю с успешным покорением ДКИМ))) и желаю вам того же.

Удачи.

УПД: Чтобы получить пару ключей без использования внешних сервисов, вы можете использовать OpenSSL:

openssl.exe genrsa -out tstpriv.pem 1024 — сгенерировать секретный ключ (1024 — длина ключа).

openssl.exe rsa -pubout -in tstpriv.pem -out tstpub.pem - получить открытый ключ из секрета

Спасибо Лорк за дополнение.

УПД 2: Небольшое дополнение от Ншопик : Вы также можете зарегистрировать запись ADSP для домена ( RFC5617 ) — это позволит принимающему серверу понять, нужно ли подписывать ваше письмо или нет. Запись будет выглядеть так:

_adsp._domainkey.example.com. TXT "dkim=все"
Может быть три значения dkim=:
  • all — Все письма должны быть подписаны
  • отбрасываемый — неподписанные электронные письма не должны приниматься.

  • неизвестно — аналогично отсутствию записи
УПД 3: Обновить информацию из tolik89u : ADSP в RFC5617 уже помечены как ИСТОРИЧЕСКИЕ, потому что технология «не взлетела».

Вместо них теперь используются ДМАРК , который сейчас широко доступен:tools.ietf.org/html/rfc7489. Теги: #антиспам #Спам и антиспам #электронная почта #dkim

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.