DKIM + Exim для Ubuntu
Инструкция по настройке DKIM на сервере без панели управления
«DKIM (DomainKeys Identified Mail)» — метод E-mail аутентификации, разработанный для обнаружения подделки сообщений, пересылаемых по email. DKIM даёт возможность получателю убедиться, что письмо действительно было отправлено с заявленного домена. На VPS или выделенном сервере такую настройку легко реализовать, так как у вас полный контроль над почтовым сервером.
Настраивать будем в примере для домена example.com
.
Создадим каталог, в котором будем хранить приватный ключ:
mkdir /etc/exim4/dkim
Далее сгенерируем приватный ключ, который останется только на сервере, и публичный ключ, который позже добавим в DNS-запись.
Перейдём в каталог /etc/exim4/dkim
:
cd /etc/exim4/dkim
Генерируем приватный ключ example.com.key
:
# openssl genrsa -out example.com.key 1024
Generating RSA private key, 1024 bit long modulus
..........................++++++
..................++++++
e is 65537 (0x10001)
Далее генерируем публичный ключ example.com.pub
на основе приватного ключа example.com.key
:
# openssl rsa -pubout -in example.com.key -out example.com.pub
writing RSA key
Изменим владельца каталога /etc/exim4/dkim
и всех файлов внутри на Debian-exim
, так как именно под этим пользователем запускается Exim:
chown -R Debian-exim:Debian-exim /etc/exim4/dkim
Внесём изменения в конфигурационный файл Exim /etc/exim4/exim4.conf.template
, чтобы он использовал приватный ключ. Добавляем следующие строки перед секцией remote_smtp
:
DKIM_CANON = relaxed
DKIM_DOMAIN = example.com
DKIM_PRIVATE_KEY = /etc/exim4/dkim/example.com.key
DKIM_SELECTOR = email
Если при установке Exim вы выбрали вариант с разделением конфигурационных файлов на мелкие части, эти строки нужно добавить в
/etc/exim4/conf.d/transport/30_exim4-config_remote_smtp
.
Сохраняем изменения и перезапускаем Exim:
service exim4 restart
Для проверки конфигурации используем команду:
exim -bP transports | grep dkim
Теперь необходимо создать в DNS-зоне домена запись типа TXT с публичным ключом в нужном формате. В поле имени указываем:
email._domainkey
Где email
— это селектор из предыдущего шага.
В поле значения записи указываем:
v=DKIM1; h=sha256; k=rsa; p=0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcbu6mvGWmF65Suqazr3Krb2Ky/EXs8qaT1yMDfc00YJD77dq6jCnAwxQUHHuKanlELGd1uqomTzs5MBuzw0TCEhzIyyiD+ZZBbJQa85a7OhdLoDs7MkwlF2Asqj4k44CpJo0c7gAySdbIQNaY9YpTW0L1TatwIDAQAB
v=DKIM1
— версия DKIMh=sha256
— предпочитаемый хеш-алгоритм (может бытьsha1
илиsha256
)k=rsa
— тип публичного ключаp=...
— публичный ключ, соответствующий файлу/etc/exim4/dkim/example.com.pub