Настройка DKIM для писем, отправляемых с сервера

Для писем, отправляемых с сервера функцией php mail(), указать DKIM-подпись очень сложно. На помощь в данном случае приходит библиотека PHPMailer или же специальные плагины для отправки писем в CMS. 

В этом случае для того, чтобы письма, отправляемые с сервера виртуального хостинга, проходили проверку DKIM, необходимо выполнить следующую настройку:

  1. Подключиться к серверу по SSH.
  2. Сгенерировать закрытый ключ командой ниже, указав вместо domain.ru имя вашего домена:
openssl genrsa -out domain.ru.private 1024 
  1. Сохранить путь к сгенерированному ключу — файлу domain.ru.private (путь потребуется ввести в процессе настройки далее). Файл будет создан в той же директории, откуда выполнялась команда.
  2. Сгенерировать открытый ключ командой ниже, указав вместо domain.ru имя вашего домена:
openssl rsa -in domain.ru.private -out domain.ru.public -pubout

Содержимое файла domain.ru.public после генерирования ключа будет следующим:

-----BEGIN PUBLIC KEY-----
ключ
-----END PUBLIC KEY-----
  1. В разделе «Домены и поддомены» в настройках домена создать TXT-запись для поддомена mail._domainkey.domain.ru со следующим содержимым:
v=DKIM1; k=rsa; p=ключ_из_предыдущего_пункта

Ключ должен быть указан в одну строку, без BEGIN и END.

  1. В настройках скрипта библиотеки PHPMailer или используемого для отправки писем плагина CMS указать полный путь к файлу domain.ru.private, который был сгенерирован в пункте 2 (например, /home/u/user/domain.ru.private).

В случае если вы используете PHPMailer, необходимо указать путь в параметре DKIM_private; в параметре DKIM_selector указать mail