DomainKeys Identified Mail (OpenDKIM) — метод E-mail аутентификации. DKIM использует внешние модули для поиска ключей и пересылки писем. Технология DKIM используется для предотвращения спуфинга, то есть подделки заголовка письма.
DKIM (DomainKeys Identified Mail) - это цифровая подпись, которую почтовый сервер добавляет к письмам от отправителей из обслуживаемых им доменов. Для этого сервер использует секретную часть ключа, которая известна только ему. Получатель может проверить подпись письма при помощи публичной части ключа, доступной через DNS-запись домена отправителя.
Нужно понимать, что DKIM не защищает от подделки отправителя и не может являться гарантией того, что письмо является полезным и безопасным, т.е. не содержит спама и вирусов. DKIM лишь удостоверяет, что почтовый сервер уполномочен владельцем домена на обслуживание почты, исходящей из этого домена. Спамеры вполне могут приобрести домен, настроить DNS и почтовый сервер для отправки писем с DKIM-подписью. Однако это требует финансовых затрат, а источник спама при этом легко идентифицировать и заблокировать. Спамеры же стараются зарабатывать деньги, оставаясь анонимными. Поэтому письмо, имеющее правильную DKIM-подпись, можно с высокой степенью достоверности считать полезным и безопасным.
DKIM- подпись — это цифровая подпись, которая добавляется к заголовкам письма сервером отправителя, по которой сервер получателя может удостовериться, что отправитель письма соответствует полю From в заголовках письма. Если сервер получателя проверяет эту подпись, то по результатам проверки сервер может принять решение о том, как поступать с письмом: принять, отправлять в папку «Спам», отправить на дополнительную проверку или вовсе отказаться от приёма. Подписи DKIM проверяют и используют сами все ведущие почтовые службы, включая Яндекс и Mail.ru.
Postfix DKIM:
У почтового домена действительно может быть несколько DKIM-записей. Причины для нескольких DKIM-записей, например разные ключи для разных приложений: Организации могут использовать разные ключи для разных приложений или сервисов, чтобы повысить безопасность. Например, один ключ может использоваться для маркетинговых рассылок, а другой — для транзакционных писем.
Для настройки 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
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
Порядок действий такой:
Тип записи — TXT Имя — hosting._domainkey Содержимое — данные полученной записи