В конце 2011 года разработчики проекта dkim-milter прекратили его поддержку и разработку. К счастью, на замену проекта dkim-milter пришел OpenDKIM, с помощью которого добавить DKIM-подпись в письма так же просто.
1.Установка Opendkim, postfix
1 |
# apt-get install opendkim opendkim-tools postfix |
1 |
# nano /etc/aliases |
root: myemail@kamaok.org.ua
1 |
# newaliases |
1 |
# cat /etc/hostname |
1 |
ubuntu |
1 |
# cat /etc/mailname |
1 |
ubuntu.kamaok.org.ua |
2.Настройка Postfix
1 |
# cat /etc/postfix/main.cf | grep -v \# | grep -v ^\$ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no append_dot_mydomain = no readme_directory = no smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination myhostname = ubuntu.kamaok.org.ua alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = ubuntu.kamaok.org.ua, localhost.kamaok.org.ua, , localhost relayhost = mynetworks = 127.0.0.0/8 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = 127.0.0.1 inet_protocols = ipv4 |
3.Настройка OpenDKIM
1 |
# mkdir /etc/opendkim/kamaok.org.ua |
Генерируем пару ключей приватный и публичный для подписи писем с домена kamaok.org.ua
1 |
# opendkim-genkey -D /etc/opendkim/kamaok.org.ua -d kamaok.org.ua -s mail |
d – имя домена, s – имя селектора
1 |
# ls -al /etc/opendkim/kamaok.org.ua |
1 2 |
mail.private mail.txt |
Публичный ключ mail.txt добавляем в TXT-запись DNS-зоны домена kamaok.org.ua
Аналогично можно создать пары ключей для других доменов
1 |
# mkdir /etc/opendkim/kamaok.org.us |
1 |
# opendkim-genkey -D /etc/opendkim/kamaok.org.us -d kamaok.org.us -s mail |
1 |
# chown -R opendkim:root /etc/opendkim/ |
1 |
# chmod 400 /etc/opendkim/kamaok.org.ua/mail.private |
Настройка OpenDKIM
1 |
# cp /etc/opendkim.conf /etc/opendkim.conf~ |
1 |
# cat /etc/opendkim.conf | grep -v \# | grep -v ^\$ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Syslog yes UMask 002 Mode sv OversignHeaders From AutoRestart Yes AutoRestartRate 10/1h PidFile /var/run/opendkim/opendkim.pid Canonicalization relaxed/relaxed SyslogSuccess yes KeyTable file:/etc/opendkim/keytable SigningTable file:/etc/opendkim/signingtable SoftwareHeader yes LogWhy yes UserID opendkim:opendkim Socket inet:12301@localhost |
Настраиваем какими ключами подписывать сообщения
Список имеющихся ключей укажем в файле /etc/opendkim/keytable в формате
«название домен:селектор:/путь/до/ключа»
1 |
# nano /etc/opendkim/keytable |
1 2 3 |
mail._domainkey.kamaok.org.ua kamaok.org.ua:mail:/etc/opendkim/kamaok.org.ua/mail.private #mail._domainkey.kamaok.org.us kamaok.org.us:mail:/etc/opendkim/kamaok.org.us/mail.private |
Ключей в этом файле может быть сколько угодно, для какого угодно числа доменов
Почту каких доменов какими ключами подписывать
Настраивается это в файле /etc/opendkim/signingtable в формате
«домен название-ключа»
1 |
# nano /etc/opendkim/signingtable |
1 2 3 |
kamaok.org.ua mail._domainkey.kamaok.org.ua #kamaok.org.us mail._domainkey.kamaok.org.us |
Если хочется подписывать вообще всю исходящую почту то можно указать * вместо домена.
1 |
# nano /etc/opendkim/signingtable |
1 |
* mail._domainkey.kamaok.org.ua |
В других файлах, указанных в директивах ExternalIgnoreList и InternalHosts, содержится просто список хостов и/или IP-адресов каждый на новой строке, подписи писем для которых будут либо проигнорированы, либо добавлены. Если за почту у вас отвечает единственный сервер, то с ними ничего не нужно делать.
Для взаимодействия с Postfix используем порт на localhost вместо unix-сокета (почему-то переопределение этого параметра в файле /etc/opendkim.conf оказалось недостаточно )
1 |
# nano /etc/default/opendkim |
1 2 |
# SOCKET="local:/var/run/opendkim/opendkim.sock" SOCKET="inet:12301@localhost" |
1 |
# service opendkim restart |
4.Настройка Postfix для подписи писем средствами OpenDKIM
1 |
# nano /etc/postfix/main.cf |
1 2 3 4 |
milter_default_action=accept milter_protocol=2 smtpd_milters = inet:localhost:12301 non_smtpd_milters = inet:localhost:12301 |
1 |
# postfix check |
1 |
# service postfix restart |
1 |
# update-rc.d opendkim defaults |
1 |
# update-rc.d postfix defaults |
Источник:
http://habrahabr.ru/post/151904/