Найти в Дзене
knowledge base

Настройка DomainKeys Identified Mail (DKIM) для почтовых серверов Communigate Pro.

DKIM - метод аутентификации, который позволяет проверить, что почтовое сообщение переслано переслано именно сервером, обслуживающим почтовый домен, и не было изменено в процессе доставки. Суть метода заключается в следующем: Формат записи DKIM в зоне DNS такой:
selector._domainkey.company.com TXT "v=DKIM1; p=<открытый ключ>" , где Сервер Communigate Pro имеет встроенный механизм создания ключевой пары, заходим в меню "Пользователи=>Домены" и выбираем домен, для которого будет настраивать DKIM, далее заходи в "Безопасность=>DKIM" В меню "Параметры DKIM-Подписи" выбираем наш домен (по умолчанию уже стоит), и меняем селектор с дефолтного "mail", на свой (в поле пишем любое слово, я предпочитаю указывать selector-"hostname", чтобы было понятно, к какому хосту относится данный ключ DKIM, например "selector-mail-cgp1"). В меню "Закрытый ключ", можно выбрать длинну ключа, и сгенерировать ключ (так же возможно импортировать свой закрытый ключ). После генерации ключа, система покажет его пара

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

Суть метода заключается в следующем:

  • для почтового сервера генерится ключевая пара из закрытого и открытого ключа (можно использовать как сторонние сервисы для создания ключевых пар, например программу openSSL, но как правило, многие почтовые сервера имеют встроенные механизмы генерации ключевых пар);
  • открытый ключ помещается в доменную зону в запись TXT определённого формата, называемую DKIM записью;
  • в момент отправки письма, от сообщения берётся хэш, и шифруется ранее созданным закрытым ключом;
  • шифрованный хэш добавляется к заголовку письма, и письмо отправляется;
  • сервер, который принял сообщение, берёт хэш от присланного письма, расшифровывает хэш в заголовке открытым ключом, который находится в зоне ДНС домена отправителя письма;
  • два хэша сравнивается, и если они равны, то письмо действительно отправлено с сервера обслуживающего домен отправителя и не было модифицировано по пути.

Формат записи DKIM в зоне DNS такой:

selector._domainkey.company.com TXT "v=DKIM1; p=<открытый ключ>"

, где

  • selector - текстовая метка для сервера, написать тут можно всё, что угодно, это нужно для случая, когда имеется несколько почтовых серверов, обслуживающих один домен, тогда для каждого сервера будет своя DKIM запись (у каждого сервера свой ключ);
  • company.com - наш почтовый домен;
  • v - версия DKIM (всегда равна DKIM1);
  • есть ряд необязательных параметров, например k - алгоритм шифрования (по умолчанию rsa), h - hash алгоритм.

Сервер Communigate Pro имеет встроенный механизм создания ключевой пары, заходим в меню "Пользователи=>Домены" и выбираем домен, для которого будет настраивать DKIM, далее заходи в "Безопасность=>DKIM"

В меню "Параметры DKIM-Подписи" выбираем наш домен (по умолчанию уже стоит), и меняем селектор с дефолтного "mail", на свой (в поле пишем любое слово, я предпочитаю указывать selector-"hostname", чтобы было понятно, к какому хосту относится данный ключ DKIM, например "selector-mail-cgp1").

-2

В меню "Закрытый ключ", можно выбрать длинну ключа, и сгенерировать ключ (так же возможно импортировать свой закрытый ключ).

-3

После генерации ключа, система покажет его параметры (размер), будет возможность удалить ключи, а также будет показан открытый ключ

-4

В пункте "DNS Запись", можно проверить правильно ли задана DKIM в доменной зоне.

-5

Если запись правильная, то в поле появится копия записи с DNS сервера, если в зоне DNS записи нет или она неправильная, выйдет сообщение обшибке

selector-mail-cgp1._domainkey.mail-cgp1.conpany.com: host name is unknown

Для того, чтобы сервер начал подписывать сообщения, помимо перечисленных настроек, в пункте "Подписывать исходящие сообщения", нужно выставить параметр "Да" (всё это на той же странице).

-6

Когда все параметры заданы, применяем их нажав кнопку "Модифицировать".

Создаём запись DKIM в доменной зоне:

  • выбираем создать запись TXT;
  • в поле Name прописываем наш селектор с доменом в виде selector-mail-cgp1._domainkey.company.com;
  • в поле Текст прописываем наш сгенерённый сервером открытый ключ, с параметрами (я обычно ставлю только версию dkim), v=DKIM1; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwhGXTurw2/MlAiqPTh3q6grY4KzQfRs7kpbc4HmLQWKRC3vpRgUXAJIUsBTzXoZLO11twZgzb7q4qykS5jDnGoKm+5MtVrJ6GmQsSNL6FNPNgxFp9IPb/NvymUyy0h5VfmxU5A7zmc/X4H/umDki6aYaKFY+Y/8p+fGMRDCUr+yvLOFd9gBcbaD0aUwTL26zkRVvSgz56ET3LTcWCbITj3x5yvc8YzG1k5O0g0DBVGiyBqQ30omiwVb4bSIKMtgjv4jTYW6NakfbtI9m3Tgqn4U/s3K7Moh49/JzHSp5V2f/fJsRPoaUa7zUluh0RDkDL9jkGdW8tq6fAQGTxnB1dQIDAQAB

Сама запись получится такой:

selector-mail-cgp1._domainkey TXT v=DKIM1; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwhGXTurw2/MlAiqPTh3q6grY4KzQfRs7kpbc4HmLQWKRC3vpRgUXAJIUsBTzXoZLO11twZgzb7q4qykS5jDnGoKm+5MtVrJ6GmQsSNL6FNPNgxFp9IPb/NvymUyy0h5VfmxU5A7zmc/X4H/umDki6aYaKFY+Y/8p+fGMRDCUr+yvLOFd9gBcbaD0aUwTL26zkRVvSgz56ET3LTcWCbITj3x5yvc8YzG1k5O0g0DBVGiyBqQ30omiwVb4bSIKMtgjv4jTYW6NakfbtI9m3Tgqn4U/s3K7Moh49/JzHSp5V2f/fJsRPoaUa7zUluh0RDkDL9jkGdW8tq6fAQGTxnB1dQIDAQAB

доменное имя после параметра _domainkey обычно "съедается", т.к. эта запись принадлежит той же доменной зоне.

Теперь, после нажатия кнопки "Проверить", в настройках DKIM на сервере, сервер покажет правильную запись DKIM

В заголовках писем теперь будет поле dkim, содержащее зашифрованный хэш сообщения.

Это можно посмотреть через почтовые клиенты, надо только включить отображение заголовков в письме.
Я использую thunderbird, и там включить отображение заголовков можно так:

  • заходим в письмо, справа вверху раскрываем выпадающее меню "Больше", выбираем пункт "Настроить"
-7

В появившемся меню ставил галку "Показать все заголовки" и нажимаем кнопку "Готово"

-8

Посылаю тестовое письмо с ящика на communigate pro с включённым DKIM, на сторонний почтовый сервер, получив письмо и открыв его через thunderbird, в заголовке можно увидеть данные по нашей DKIM подписи, в частности selektor, и непосредственно сам хэш в таком виде:

DKIM-Signature:v=1; a=rsa-sha256; q=dns/txt; c=simple/simple; d=company.com; s=selector-mail-cgp1; bh=CwlqIGnvTq5iMja2KOTBaZfV8vZ6YBE3dYyVgH+hKS0=; h=Content-Transfer-Encoding:Content-Type:Subject:From:To:Content-Language: MIME-Version:Date:Message-ID; b=MO/U+a41cSPPhpbwn3mp6M382gcTaSSXp+ui/eVeUWIwI pTjycU4mBZnjtrEhug4mfCu8BuBzRo8g/Q0wglP06f1YZH5IiR7CAadHhsWQR0k/Gv3Hog/xiekUb UA/NYEvjp3PJIwpU+4PlXX4s4evxNcN/6nRNRhO+e+enBrYN8=

проверить настройки DKIM записи можно на следующих online ресурсах:

  • mxtoolbox - тут можно проверить многие параметры, в том числе корректность записей MX, SPF, DKIM, DMARC;
  • mail-tester - тут проверяются общие настройки почты, находится ли домен в спам листах, корректность записей X, SPF, DKIM. Суть сервиса в отправке со своего почтового сервера письма на специально сформированный адрес, и оценка как самого письма, так и настроек сервера и доменных записей (сервис платный, но в день можно бесплатно сделать 3 теста).