Заставить exim4 подписывать исходящую почту совсем просто. Для этого в конфиг экзима /etc/exim4/exim4.conf.template
дополняем следующими строками
######################### ## DKIM SETTINGS DKIM_DOMAIN = ${lc:${domain:$h_from:}} DKIM_FILE = /etc/mail/${lc:${domain:$h_from:}}.key DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}} DKIM_SELECTOR = m01 ## DKIM SETTINGS END ########################
По вкусу можно поместить конфигурацию не в шаблон, а в какой-нибудь из conf.d
-файлов. Далее, чтобы все работало как надо:
- Создаем пару ключей с помощью
openssl
, - Прописываем открытый ключ в DNS,
- Закрытый ключ помещаем в
/etc/mail/domain_name.key
(вместо domain_name имя домена) и меняем его права и владельца на0640
иroot:Debian-exim
, - Перезагружаем exim4, отправляем тестовое письмо на адрес с включенной верификацией DKIM-подписи и убеждаемся, что все работает правильно.
В вышеприведенной конфигурации селектор зафиксирован в конфиге намертво (m01
), обычно этого вполне достаточно если серверная инфраструктура небольшая: каждому серверу можно присвоить свой селектор. По желанию селектор можно сделать и динамическим, формируемым из расширения файла, следующим образом:
DKIM_SELECTOR = ${extract{-1}{.}{DKIM_PRIVATE_KEY}}
Кроме настройки DKIM в exim
полезно настроить обрезание определённых нежелательных заголовков в целях безопасности. Такими, например, могут быть имена формирующих письмо скриптов или IP-адреса отправителей письма (при отправке по SMTP с другой машины, которая может стоять во внутренней сети), которые раскрывают внутреннюю структуру системы. Для этого в тот же шаблон /etc/exim4/exim4.conf.template
рядом с DKIM добавляем фильтр по заголовкам
system_filter = /etc/exim4/filter
Содержимое файла конфигурации фильтра /etc/exim4/filter
может быть, например, таким
headers remove X-PHP-Originating-Script headers remove Received
В конце обязательно релодим экзим и проверяем, что все работает корректно. Проверить почту можно прямо из шелла:
$ echo "This will go into the body of the mail." | mail -s "Hello world" -a "From: me@mydomain.com" myemail@example.com
PS: вышеприведенная конфигурация — Debian-based дистрибутивов. Для RedHat и других файлы конфигов могут быть немного другими.