DKIM

Попалась хорошая статья с описанием технологии DKIM
Цитата:

Принцип работы

DKIM основывается на стандартном асинхронном шифровании.
5 основных этапов работы DKIM:

    Для каждого сервера генерируется пара (или несколько пар) из закрытого и открытого ключей шифрования.
    Закрытый ключ помещается на сервере отправителя и используется для создания соответствующих DKIM-заголовков для всей исходящей почты клиента.
    Открытый ключ помещается владельцем домена в его файл DNS-зоны в виде специальной TXT-записи, и она становится доступна для всех желающих.
    Письмо с DKIM-подписью пересылается получателю.
    С помощью полученного с DNS-сервера открытого ключа проверяется подлинность отправителя письма.

Оригинал статьи
https://securelist.ru/analysis/obzor/25010/texnologiya-dkim-na-strazhe-v...

Для настройки работы dkim под FreeBSD устанавливаем opendkim
Можно создать пользователя dkim чтобы процесс opendkim запускался с ограниченными правами.
прописываем в /etc/rc.conf

milteropendkim_enable="YES"
milteropendkim_uid="opendkim"
milteropendkim_cfgfile="/usr/local/etc/opendkim.conf"

запускаем
 opendkim-genkey -r -s dkim -d yourdomain.com -D /usr/local/etc/dkim
можно дополнительно указать длину ключа больше 1024 bit. На выходе имеем два файла dkim.private(ключ) и dkim.txt(запись для dns сервера) для которых устанавливаются ограниченные права доступа. В случае использования пользователя dkim устанавливаем требуемые пермишены. При этом postfix при запуске будет ругаться сообщениями вида:
ostfix/postfix-script: warning: not owned by root: /usr/local/etc/dkim
postfix/postfix-script: warning: not owned by root: /usr/local/etc/dkim/dkim.private
postfix/postfix-script: warning: not owned by root: /usr/local/etc/dkim/dkim.txt
postfix/postfix-script: starting the Postfix mail system

За основу opendkim.conf берем простейший конфиг из /usr/local/share/doc/opendkim/opendkim.conf.sample и правим в нем строки
Domain                yourdomain.com
KeyFile                /usr/local/etc/dkim/dkim.private
Selector                dkim
Socket                  inet:8891@localhost
UserID                 opendkim
Стартуем opendkim
Добавляем в конфиг postfix main.cf:
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
milter_default_action = accept
, перезапускаем postfix.
Добавляем на сервер dns запись с типом TXT значение которой берем из файла dkim.txt. Правильная запись при проверке выдаст примерно следующее
host -t TXT dkim._domainkey.yourdomain.com ns1.yourdns.server.com
dkim._domainkey.YOURDOMAIN.COM descriptive text "v=DKIM1\; k=rsa\; s=email\; p=MIGfMVtTn3VRRdFgqgm...........FwOpngblI"

После обновления кеша dns все должно заработать. Письмо, отправляемое вашим почтовым сервером будет иметь дополнительный заголовок DKIM-Signature с данными , а полученное от вашего сервера другим почтовиком будет иметь в заголовке Authentication-Results значения вида dkim=pass

Дополнительные ссылки
man opendkim
man opendkim.conf
http://www.fryaha.ru/freebsd-postfix-dkim/
http://www.prado.it/2012/04/26/how-to-run-postfix-with-opendkim-on-freeb...