Настройка DKIM в Exim

  • 08.09.2017
  • 12 755
  • 2
  • 30.01.2021
  • 9
  • 9
  • 0
Настройка DKIM в Exim

Чтобы письма, которые посылает наш почтовый сервер, не так часто попадали в Спам, необходимо настроить DKIM (DomainKeys Identified Mail). Делать мы это будем на примере Exim, ОС - Ubuntu.

Описание

Первым делом, нам необходимо создать каталог, в котором мы будем хранить наш приватный ключ.

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.public из нашего приватного ключа example.com.key

# openssl rsa -pubout -in example.com.key -out example.com.public
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:
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 = email
В том случае, если при установке Exim, вы выбрали вариант с разделением конфигов на маленькие, то тогда строчки выше необходимо вносить в конфигурационный файл /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp

Сохраняем изменения и перезапускаем Exim следующей командой:

service exim4 restart

Чтобы проверить конфигурацию, можно воспользоваться следующей командой:

exim -bP transports | grep dkim

Результат:

dkim_domain = ${lc:${domain:$h_from:}}
dkim_private_key = ${if exists{/etc/exim4/dkim/${lc:${domain:$h_from:}}.key}{/etc/exim4/dkim/${lc:${domain:$h_from:}}.key}{0}}
dkim_selector = email

Теперь нам необходимо создать в DNS зоне нашего домена запись типа TXT, в которой указать наш публичный ключ в соответствующем формате. В поле имя указываем:

email._domainkey

Где email - это селектор из предыдущего пункта настройки.
А в поле самой записи, указываем следующую строку:

v=DKIM1; h=sha256; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcbu6mvGWmF65Suqazr3Krb2Ky/EXs8qaT1yMDfc00YJD77dq6jCnAwxQUHHuKanlELGd1uqoVpKzmmVoquUChbmTzs5MBuzw0TCEhzIyyiD+ZZBbJQa85a7OhdLoDs7MkwlF2Asqj4k44CpJo0c7gAySdbIQNaY9YpTW0L1TatwIDAQAB

v=DKIM1 - версия DKIM
h=sha256 - предпочитаемый hash-алгоритм, может быть sha1 и sha256
k=rsa - тип публичного ключа p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcbu6mvGWmF65Suqazr3Krb2Ky/EXs8qaT1yMDfc00YJD77dq6jCnAwxQUHHuKanlELGd1uqoVpKzmmVoquUChbmTzs5MBuzw0TCEhzIyyiD+ZZBbJQa85a7OhdLoDs7MkwlF2Asqj4k44CpJo0c7gAySdbIQNaY9YpTW0L1TatwIDAQAB - сам публичный ключ, который лежит у нас в файлике /etc/exim4/dkim/example.com.public

Протестировать работу DKIM можно с помощью следующих сервисов:
Проверяем, что на DNS сервере существует DKIM запись и она корректна этим сервисом.
Если все хорошо, то можно приступать к проверке корректной работы Exim и послать тестовое письмо, для этого, можно воспользоваться этим сервисом.

Была ли эта статья Вам полезна?

Комментарии к статье (2)

    • Родион

    В статье не указано, что нужно еще добавить:

    dkim_domain = DKIM_DOMAIN
    dkim_selector = email
    dkim_private_key = DKIM_PRIVATE_KEY

    в секцию 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 = email

    Moжно положить эти макросы в /etc/exim4/exim4.conf.localmacros вне зависимости от dc_use_split_config.

Добавить комментарий для Родион

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.