Настройка DKIM подписи на FreeBSD 10.4 почтовый сервер Postfix
Зачем она нужна? Например для того чтобы почтовые сервера gmail.com, mail.ru и ряд других не отправляли письма с вашего домена в папку «спам».
Ставим opendkim:
| 1 | pkg install opendkim | 
Создадим файл конфигурации opendkim на основе примера:
| 1 2 | cat /usr/local/etc/mail/opendkim.conf.sample | egrep -v '^#|^$' > /usr/local/etc/mail/opendkim.conf mcedit /usr/local/etc/mail/opendkim.conf | 
Получим файл вида:
| 1 2 3 4 5 | Domain			example.com KeyFile			/var/db/dkim/example.private Selector		my-selector-name Socket			inet:port@localhost Syslog			Yes | 
Преобразуем его к виду:
| 1 2 3 4 5 6 7 8 | 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 добавим хосту с которых разрешены подключения:
| 1 2 3 | *.domen.ru 127.0.0.1 localhost | 
Создаем каталог для хранения ключей и создаем собственно сами ключи:
| 1 2 | mkdir -p /etc/opendkim/domen.ru opendkim-genkey -D /etc/opendkim/tviinet.ru/ --domain tviinet.ru --selector relay | 
Создадим пользователя opendkim,зададим владельца и права доступа на файлы:
| 1 2 3 | 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.<домен> <домен>:<селектор>:<путь к закрытому ключу>
| 1 | mcedit /var/db/dkim/KeyTable | 
Например:
| 1 | relay._domainkey.tviinet.ru domen.ru:relay:/etc/opendkim/tdomen.ru/relay.private | 
Создаем SigningTable. В данной таблице хранятся соответствия между определенными email-адресами и записями в KeyTable.
| 1 | mcedit /var/db/dkim/SigningTable | 
Добавляем в него:
| 1 | *@domen.ru relay._domainkey.domen.ru | 
Далее пробуем стартовать сервис:
| 1 | /usr/local/etc/rc.d/milter-opendkim onestart | 
Если всё хорошо, правим конфигурацию postfix:
| 1 | mcedit /usr/local/etc/postfix/main.cf | 
Добавляем:
| 1 2 3 4 | milter_protocol = 2 milter_default_action = accept smtpd_milters = inet:localhost:12301 non_smtpd_milters = inet:localhost:12301 | 
Перезапускаем postfix:
| 1 | /usr/local/etc/rc.d/postfix restart | 
Если всё хорошо, остался последний шаг: правка DNS. Посмотрим содержимое:
| 1 2 3 4 | 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.
