DKIM в Exim 4

Материал из Webko Wiki
Версия от 11:03, 20 апреля 2015; Sol (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Устанавливаем пакеты:

apt-get install opendkim-tools openssl exim4 dkim-filter Теперь нужно создать ключи, которые будут использоваться для подписи писем. Для начала создаем папку для хранения ключей:

mkdir /etc/exim4/dkim 

Генерируем открытый и закрытый ключи для домена example.com.

opendkim-genkey -D /etc/exim4/dkim/ -d example.com -s mail

Ключи можно так же сгенерировать и dkim-genkey:

dkim-genkey -d example.com -t -r -s mail

или

openssl genrsa -out example.com.key 1024
openssl rsa -in example.com.key -pubout > example.com.pub 

Эта команда создаст файлы etc/exim4/dkim/mail.private и /etc/exim4/dkim/mail.txt, с секретным и публичными ключами соответственно.

Настройка DNS

Открываем и копируем публичный ключ.

nano /etc/exim4/dkim/example.com.pub
-----BEGIN PUBLIC KEY-----
MIGfMA0111111111111111111111ADCBiQKBgQCy4cRpKEmBmlm6Enrc0Qk/WEG6
uQKrzAe+aS82222222222222222222222222222222222222222222222222222W
J88888888888888888888888888888888888888888888888888888888888888v
1111111111111111111B
-----END PUBLIC KEY-----

Копируем сам ключ, который содержится между ——BEGIN PUBLIC KEY—— и ——END PUBLIC KEY—— Добавляем в DNS запись вида TXT, имеющую название default._domainkey.example.com, (_domainkey — спец домен зарезервированный для хранения ключей) содержащую

v=DKIM1; k=rsa; p=MIGfMA0111111111111111111111ADCBiQKB
gQCy4cRpKEmBmlm6Enrc0Qk/WEG6uQKrzAe+a
S82222222222222222222222222222222222222222222222222222WJ888888888888888888
88888888888888888888888888888888888888888888v1111111111111111111B

Обратите внимание, что ключь не должен содержать пробелов, при копировании из терминала они могут добавиться. Проверямем DKIM DNS запись при помощи серевиса DNSWatch. Ответ должен содержать указанный ключ.

«v=DKIM1\; k=rsa\; p=MIGfMA0111111111111111111111ADCBiQKB
gQCy4cRpKEmBmlm6Enrc0Qk/WEG6uQKrzAe+aS8222
2222222222222222222222222222222222222222222222222WJ88888
888888888888888888888
888888888888888888888888888888888888v1111111111111111111B»

Важно! default — название селектора — произвольной строки идентифицирующей подпись DKIM. Необходимо, чтобы в конфигурации Exim и в DNS записи использовался один и тот же селектор. Для проверки отправляем письмо на домен gmail и смотрим исходное тело письма. Публичный ключ нужно добавить в соответствующую TXT запись вашего домена. У некоторых хостингов есть ограничения на 256 символов в TXT записях, в таких случаях не генерируйте большие ключи (Стоит использовать до 1024). После того как обновится DNS, проверите, что TXT запись добавлена:

dig txt mail._domainkey.example.com

Так же можно указать ключ t=y (режим тестирования) или t=s (боевой режим) в TXT записи домена.

Настраиваем Exim

Переименовываем закрытый ключ чтобы Exim мог его найти:

cd /etc/exim4/dkim/
mv mail.private example.com.key

Проставляем права на чтение файлов ключей:

chown -R Debian-exim:Debian-exim /etc/exim4/dkim/
chmod 640 /etc/exim4/dkim/*

В конфиг Exim /etc/exim4/exim4.conf.template или если он разделен, то /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp пишем:

DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_KEY_FILE = /etc/exim4/dkim/DKIM_DOMAIN.key
DKIM_PRIVATE_KEY = ${if exists{DKIM_KEY_FILE}{DKIM_KEY_FILE}{0}}
DKIM_SELECTOR = mail

Все готово, осталось перезапустить.

/etc/init.d/exim4 restart