Зачем она нужна? Например для того чтобы почтовые сервера gmail.com, mail.ru и ряд других не отправляли письма с вашего домена в папку «спам».
Ставим opendkim:
pkg install opendkim
Создадим файл конфигурации opendkim на основе примера:
cat /usr/local/etc/mail/opendkim.conf.sample | egrep -v '^#|^$' > /usr/local/etc/mail/opendkim.conf
mcedit /usr/local/etc/mail/opendkim.conf
Получим файл вида:
Domain example.com
KeyFile /var/db/dkim/example.private
Selector my-selector-name
Socket inet:port@localhost
Syslog Yes
Преобразуем его к виду:
Domain domen.ru
KeyTable /var/db/dkim/KeyTable
SigningTable /var/db/dkim/SigningTable
ExternalIgnoreList /var/db/dkim/TrustedHosts
Selector relay
Socket inet:12301@localhost
Canonicalization relaxed/relaxed
Syslog Yes
В файл /var/db/dkim/TrustedHosts добавим хосту с которых разрешены подключения:
*.domen.ru
127.0.0.1
localhost
Создаем каталог для хранения ключей и создаем собственно сами ключи:
mkdir -p /etc/opendkim/domen.ru
opendkim-genkey -D /etc/opendkim/tviinet.ru/ --domain tviinet.ru --selector relay
Создадим пользователя opendkim,зададим владельца и права доступа на файлы:
pw useradd opendkim -m -s /usr/sbin/nologin -w no
chown :opendkim /etc/opendkim/domen.ru/*
chmod g+rw /etc/opendkim/domen.ru/*
Создаем таблицу KeyTable. В ней хранится список соответствий между селекторами, доменами и файлами с закрытыми ключами. Формат записей:
<селектор>._domainkey.<домен> <домен>:<селектор>:<путь к закрытому ключу>
mcedit /var/db/dkim/KeyTable
Например:
relay._domainkey.tviinet.ru domen.ru:relay:/etc/opendkim/tdomen.ru/relay.private
Создаем SigningTable. В данной таблице хранятся соответствия между определенными email-адресами и записями в KeyTable.
mcedit /var/db/dkim/SigningTable
Добавляем в него:
*@domen.ru relay._domainkey.domen.ru
Далее пробуем стартовать сервис:
/usr/local/etc/rc.d/milter-opendkim onestart
Если всё хорошо, правим конфигурацию postfix:
mcedit /usr/local/etc/postfix/main.cf
Добавляем:
milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301
Перезапускаем postfix:
/usr/local/etc/rc.d/postfix restart
Если всё хорошо, остался последний шаг: правка DNS. Посмотрим содержимое:
cat /etc/opendkim/domen.ru/relay.txt
relay._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPHo37kaZ6zTfi8pZUE2QIDAQAB" ) ; ----- DKIM key relay for domen.ru
Добавим эту запись в зону TXT DNS. И пробуем отправить письмо например на gmail.com. В «исходном письме» должна присутствовать запись о DKIM.
