Как настроить DKIM

DomainKeys Identified Mail — метод E-mail аутентификации. DKIM использует внешние модули для поиска ключей и пересылки писем. Технология DKIM используется для предотвращения спуфинга, то есть подделки заголовка письма.

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

Нужно понимать, что DKIM не защищает от подделки отправителя и не может являться гарантией того, что письмо является полезным и безопасным, т.е. не содержит спама и вирусов. DKIM лишь удостоверяет, что почтовый сервер уполномочен владельцем домена на обслуживание почты, исходящей из этого домена. Спамеры вполне могут приобрести домен, настроить DNS и почтовый сервер для отправки писем с DKIM-подписью. Однако это требует финансовых затрат, а источник спама при этом легко идентифицировать и заблокировать. Спамеры же стараются зарабатывать деньги, оставаясь анонимными. Поэтому письмо, имеющее правильную DKIM-подпись, можно с высокой степенью достоверности считать полезным и безопасным.

DKIM- подпись — это цифровая подпись, которая добавляется к заголовкам письма сервером отправителя, по которой сервер получателя может удостовериться, что отправитель письма соответствует полю From в заголовках письма. Если сервер получателя проверяет эту подпись, то по результатам проверки сервер может принять решение о том, как поступать с письмом: принять, отправлять в папку «Спам», отправить на дополнительную проверку или вовсе отказаться от приёма. Подписи DKIM проверяют и используют сами все ведущие почтовые службы, включая Яндекс и Mail.ru.

Postfix DKIM:

При возникновении ошибки доступа добавьте значение UMask 0002 в файл /etc/opendkim.conf

Для настройки dkim устанавливаем соответствующий пакет:

yum install opendkim

Создаем директорию для хранения ключей:

mkdir -p /etc/postfix/dkim && cd /etc/postfix/dkim

Генерируем ключи для домена, где task41.topadm.in имя почтового домена mail непосредственно имя сервера:

opendkim-genkey -D /etc/postfix/dkim/ -d task41.topadm.in -s mail

На выходе получаете пару файлов - закрытый (приватный) и открытый ключ. Закрытый останется на сервере, открытый будет опубликован в dns. Переименуем их сразу, чтобы не путаться, если у вас будет несколько доменов. Ключи нужно будет делать для каждого домена.

mv mail.private mail.task41.topadm.in.private
mv mail.txt mail.task41.topadm.in.txt

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

nano keytable
mail._domainkey.task41.topadm.in task41.topadm.in:mail:/etc/postfix/dkim/mail.task41.topadm.in.private

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

nano signingtable
*@task41.topadm.in mail._domainkey.task41.topadm.in

Выставляем права доступа на все файлы:

chown root:opendkim *
chmod u=rw,g=r,o= *

Создаем конфигурационный файл службы opendkim.

mv /etc/opendkim.conf /etc/opendkim.conf.bak
nano /etc/opendkim.conf
opendkim.conf
AutoRestart Yes
AutoRestartRate 10/1h
PidFile /var/run/opendkim/opendkim.pid
Mode sv
Syslog yes
SyslogSuccess yes
LogWhy yes
UserID opendkim:opendkim
Socket inet:8891@localhost
Umask 022
Canonicalization relaxed/relaxed
Selector default
MinimumKeyBits 1024
KeyFile /etc/postfix/dkim/mail.zeroxzed.ru.private
KeyTable /etc/postfix/dkim/keytable
SigningTable refile:/etc/postfix/dkim/signingtable

Добавляем в конфигурационный файл postfix в самый конец следующие параметры:

nano /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
milter_protocol = 2

Перезапускаем postfix и dkim. Dkim добавляем в автозагрузку.

systemctl restart postfix
systemctl restart opendkim.service
systemctl enable opendkim.service

Теперь нам надо добавить открытый ключ в dns. Идем в консоль управления dns и добавляем новую txt запись. Ее содержание берем из файла /etc/postfix/dkim/mail.task41.topadm.in.txt

cat /etc/postfix/dkim/mail.task41.topadm.in.txt
mail._domainkey IN      TXT     ( "v=DKIM1; k=rsa; "
          "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjlluUlx5E2SuShzxfpmIi4qOwY9uamLYx3M22yUFxcZH9CGiVzAuwDRP3yWUePHoPz9mQBtSnl1RRfm5u1+VGnQL6vFa4d6yqNnTiBK9kmel+pqle3Os9rSaD9Kiu1vevA8B3RZZ79Oiu/KxPQG3LTUlFzKekVPgg5znozk7uAwIDAQAB" )  ; ----- DKIM key mail for task41.topadm.in

Убираем кавычки, лишние проблемы и создаем txt запись в dns.

Читайте также: Как защитить домен от спуфинга и спама с помощью DMARC

Порядок действий такой:

  1. Установить для домена наши NS.
  2. Включить DKIM в разделе «Почтовые ящики» в нашей панели.
  3. Скопировать сформированную TXT-запись для поддомена hosting._domainkey любым способом, например: Выполнить команду dig hosting._domainkey.ваш_домен.com txt. Воспользоваться онлайн-сервисом вроде dmarcian.com/dkim-inspector/ и указать там ваш домен и селектор hosting
  4. Полученную запись добавить в настройки домена в панели Cloudflare:
    Тип записи — TXT
    Имя — hosting._domainkey
    Содержимое — данные полученной записи
  5. Вернуть для домена NS Cloudflare.
PQ VPS сервера в 28+ странах.