DomainKeys Identified Mail — метод E-mail аутентификации, разработанный для обнаружения подделывания сообщений, пересылаемых по email. Метод дает возможность получателю проверить, что письмо действительно было отправлено с заявленного домена. DKIM упрощает борьбу с поддельными адресами отправителей, которые часто используются в фишинговых письмах и в почтовом спаме.
Технология DomainKeys Identified Mail (DKIM) объединяет несколько существующих методов антифишинга и антиспама с целью повышения качества классификации и идентификации легитимной электронной почты. Вместо традиционного IP-адреса, для определения отправителя сообщения DKIM добавляет в него цифровую подпись, связанную с именем домена организации. Подпись автоматически проверяется на стороне получателя, после чего, для определения репутации отправителя, применяются «белые списки» и «чёрные списки».
Пример конфигурационного файла
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# This is a basic configuration that can easily be adapted to suit a standard # installation. For more advanced options, see opendkim.conf(5) and/or # /usr/share/doc/opendkim/examples/opendkim.conf.sample. # Log to syslog Syslog yes # Required to use local socket with MTAs that access the socket as a non- # privileged user (e.g. Postfix) UMask 002 LogWhy yes X-Header yes # Sign for example.com with key in /etc/mail/dkim.key using # selector '2007' (e.g. 2007._domainkey.example.com) #Domain example.com #KeyFile /etc/mail/dkim.key Selector default # Commonly-used options; the commented-out versions show the defaults. Canonicalization relaxed/simple Mode sv #SubDomains no #ADSPAction continue # Always oversign From (sign using actual From and a null From to prevent # malicious signatures header fields (From and/or others) between the signer # and the verifier. From is oversigned by default in the Debian pacakge # because it is often the identity key used by reputation systems and thus # somewhat security sensitive. OversignHeaders From # List domains to use for RFC 6541 DKIM Authorized Third-Party Signatures # (ATPS) (experimental) #ATPSDomains example.com KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHost |
Не забудем поменять владельца всех файлов и папок:
1 2 3 |
chown -R opendkim:opendkim /etc/opendkim |
Далее осталось только в конфигурации почтовика(у меня это Postfix) дописать в main.cf:
1 2 3 4 5 6 |
milter_default_action = accept milter_protocol = 3 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = inet:127.0.0.1:8891 |
И небольшой скрипт, работающий из коробки
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#!/bin/bash if [ "$1" = "" ]; then echo "Не верно указаны параметры. Формат: addkim site.com" exit fi if ! [ -d /etc/opendkim ]; then mkdir /etc/opendkim; fi if ! [ -d /etc/opendkim/keys ]; then mkdir /etc/opendkim/keys; fi if ! [ -f /etc/opendkim/KeyTable ]; then touch /etc/opendkim/KeyTable; fi if ! [ -f /etc/opendkim/TrustedHosts ]; then touch /etc/opendkim/TrustedHosts; fi if ! [ -f /etc/opendkim/SigningTable ]; then touch /etc/opendkim/SigningTable; fi mkdir /etc/opendkim/keys/$1 opendkim-genkey -D /etc/opendkim/keys/$1/ -d $1 -s default mv /etc/opendkim/keys/$1/default.private /etc/opendkim/keys/$1/default chown -R opendkim:opendkim /etc/opendkim/keys/$1 echo "default._domainkey.$1 $1:default:/etc/opendkim/keys/$1/default" >> /etc/opendkim/KeyTable echo "*@$1 default._domainkey.$1" >> /etc/opendkim/SigningTable echo "$1" >> /etc/opendkim/TrustedHosts cat /etc/opendkim/keys/$1/default.txt service opendkim restart |