Настройка dkim exim4 debian

Обновлено: 07.07.2024

Повысить доверие к вашим письмам и, соответственно, уменьшить шансы их попадания в “Спам”, можно с помощью:

  • настройки PTR записи;
  • настройки SPF записи;
  • настройки DKIM.

Настройка PTR записи

PTR запись связывает IP адрес с доменом вашего сайта. DNS-серверы хранят так называемые А записи, по которым сопоставляется домен и IP адрес сервера, на котором расположен сайт. PTR запись обратна A записи: она показывает связку IP адреса и домена. Иногда PTR называют Reverse DNS.

Зачем и как указывать PTR запись?

PTR запись указывается владельцем IP адреса сервера, с которого работает ваш сайт. Нужна та запись только в том случае, если вы используете VPS или выделенный сервер. На виртуальных хостингах PTR обычно есть и так, и указывает эта запись на имя сервера хостинг-провайдера.

Как посмотреть PTR запись?

Узнать PTR запись можно с помощью следующих команд:

Команды запускаются в терминале (командной строке); вместо “ip адрес” следует подставлять реальный IP.

Настройка SPF записи

SPF расшифровывается как Sender Policy Framework, что можно перевести как “инфраструктура политики отправителя”. Это расширение для протокола отправки электронной почты через SMTP, которое позволяет добавить DNS записи типа TXT к доменному имени и указать в этих записях IP адреса серверов, с которых разрешена отправка электронной почты.

SPF используется как фактор повышения доверия к исходящей от домена почте и в целях снижения вероятности попадания писем в “Спам”. Репутация домена, которую SPF позволяет защитить, также имеет не последнее значение: при рассылке спама или фишинговых писем, злоумышленники могут подставить в поле “От” любой адрес в любом домене, что может стать причиной проблем для владельца такого домена. IP адрес почтового сервера, с другой стороны, подделать невозможно, поэтому когда SPF запись для домена есть, принимающая сторона (почтовая служба) проверяет её и действует соответственно.

Как создать SPF запись?

SPF запись -- текст с определённым синтаксисом. Пример SPF записи:

В записи указано, что следует принимать почту с IP адресов, которые указаны в DNS записях типа A и MX для домена, сопровождаемого этой записью. Если же адреса иные, почту лучше отклонить. Запись может быть немного короче: "v=spf1 a mx -all", её суть и функциональность от этого не меняются.

Синтаксис SPF записи

"v=spf1" — используемая версия SPF.

"+" — принимать почту. Этот знак не является обязательным.

"-" — отклонять почту.

" — принимать почту, но фильтровать её в “Спам”.

"?" — воспринимать письмо нейтрально, то есть применять к нему обычные правила.

"mx" — IP адреса всех серверов, указанных в DNS записях типа MX для домена.

"ip4" — здесь можно указать конкретные IPv4 адреса.

"ip6" — здесь можно указать конкретные IPv6 адреса.

"a" — IP адреса, которые указаны в DNS записях типа A для домена.

"include" — разрешает применение SPF другого домена.

"all" — устанавливает правила для всех других доменов, которых нет в SPF записи.

Пример SPF записи

Рассмотрим такую SPF запись:

mx — принимать почту со своих почтовых серверов.

a — принимать почту с серверов, которые указаны в записях типа A для своего домена.

ip4:123.45.125.94— принимать почту, отправленную с IP 123.45.125.94. Здесь можно указывать подсети в формате 123.45.125.0/24.

all — вся почта с доменов, не указанных в SPF, будет направляться в “Спам”. Если тильду заменить на минус (-all), такая корреспонденция вообще не будет приниматься.

Настройка DKIM

DKIM расшифровывается как DomainKeys Identified Mail, что можно перевести как “Идентифицированная ключом домена почта”. Это метод аутентификации, дающий возможность проверить, действительно ли письмо отправлено с домена, фигурирующего в поле “От”. DKIM -- эффективный метод борьбы с фишинговыми письмами и спамом.

Создание ключей DKIM при помощи opendkim-tool

1. Для начала, необходимо установить opendkim-tools. Сделать это можно с помощью следующей команды:

2. Затем надо создать папку dkim, в которой будут хранится ключи:

3. Права на папку необходимо поменять с root на Debian-exim:

D - каталог, в который будут сгенерированы ключи;

d - домен, который будет использовать этот ключ для подписания;

s - mymail — имя селектора, строкового идентификатора, который, в принципе, может быть любым.

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

Настройки DNS

В файле mail.txt (cat /etc/exim4/dkim/mymail.txt) должно быть следущее содержимое:

Эту информацию необходимо добавить в TXT запись DNS зоны. В поле имя надо добавить

Теперь mymail.txt можно просто удалить.

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

Ответ должен быть такого вида:

Определение DKIM Author Domain Signing Practices (DKIM ADSP)

Чтобы указать практики DKIM Author Domain Signing Practices (DKIM ADSP), следует добавить в TXT DNS домена ещё одну запись:

unknown — домен может подписывать некоторые или все письма.

Настройка Exim

Настройка Exim начинается с добавления следующих строк в конфигурационный файл /etc/exim4/exim4.conf.template (перед секцией remote_smtp):

Конфигурационный файл может быть разделён на несколько более мелких файлов в процессе установки exim4. В таком случае, указанные строки необходимо добавить в файл /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp

Ещё один вариант -- ручное создание конфигурационного файла /etc/exim4/exim4.conf. В таком случае, добавлять строки следует в этот файл.

Операцию следует повторить для каждого домена, а затем перезапустить exim командой:

Проверка записей в конфигурационным файле Exim

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

Ответ должен иметь следующий вид:

где dkim_selector это первое слово перед ._domainkey в открытом ключе

exim_dkim

Настроим на нашем почтовым сервере Exim DKIM подписи, для того чтобы письма с нашего почтового сервера не попадали в спам и быстрее проходили проверку в различных спам-фильтрах, а также повысить доверие к нашему почтовому серверу со стороны популярных почтовых систем mail, yandex, gmail.

И добавим в DNS нашего домена необходимых записей о наличии поддержки DKIM.

Рассмотрим настройку DKIM при помощи opendkim-tool

создаем папку dkim в которой будет лежать наш приватный ключ

Меняем права на папку с root на Debian-exim

D

d

      Называет домена, который будет использовать этот ключ для подписания

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

Настройки DNS

посмотрим содержимое файла mail.txt

И добавляем эту информацию в нашу DNS зону в TXT запись.

Добавляем в поле имя
email._domainkey

а в поле Контент

v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxweK5
+F42YFdkRQqZI922yCQc68pdgWUhYr7CSeCxcQ5P10oKi2mXtYxOOKmeA7NExY6U5jrGEJ6gyr
BfsJPUp25PwApbpGZ+cIRB2/N3KcevEfiOVyyO7f7WduM+jmz69nyLozWO7QM2QjCCxWx6aKZm

После того как мы добавили запись в DNS домена то mail.txt можно удалять файл.

Проверяем добавление записи в DNS

в ответ должны получить

email._domainkey.adminunix.ru. 2214 IN TXT "v=DKIM1\; k=rsa\; t=s\; p=MIIBIj.

Последним этапом настройки DKIM подписи является определение DKIM Author Domain Signing Practices (DKIM ADSP)
Добавляем еще одну запись TXT в DNS домена.

all

discardable

unknown

Настройка Exim

Добавляем в конфиг /etc/exim4/exim4.conf.template перед секцией remote_smtp:

или если конфиг разделен (при установке exim4 был вопрос «разделить конфиги на мелкие файлы?»), то писать в /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp

Если вы в ручную создали конфигурационный файл /etc/exim4/exim4.conf, то добавлять надо в него.

И так для каждого домена. И потом рестарт екзима:
/etc/init.d/exim4 restart

Посмотрим наши записи в конфигурационным файлом Exim

где dkim_selector это первое слово перед ._domainkey в открытом ключе

И проверяем через сервис [urlspan]сервис[/urlspan] всели у нас получилось.

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

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

Описание

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

Далее нам необходимо сгенерировать приватный ключ, который будет только у нас на сервере и публичный ключ, который мы потом внесем в DNS запись.
Переходим в папку /etc/exim4/dkim

Меняем владельца каталога /etc/exim4/dkim и всех файлов внутри на Debian-exim, именно под этим пользователем запускается Exim. Эту нужно, чтобы он имел доступ к файлу приватного ключа.

Далее, нам необходимо внести изменения в файл конфигурации Exim /etc/exim4/exim4.conf.template , чтобы он использовал наш приватный ключ. Для этого, открываем файл конфигурации и вносим следующие строчки перед секцией remote_smtp:

В том случае, если при установке Exim, вы выбрали вариант с разделением конфигов на маленькие, то тогда строчки выше необходимо вносить в конфигурационный файл /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp

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

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

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

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

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

При организации почтового сервера для небольшой организации очень часто выбор падает на MTA Exim, который отличается надёжностью и простотой конфигурации. В последнее время набирает популярность механизм DKIM (DomainKeys Identified Mail), позволяющий получателю проверить подлинность отправителя и неизменность текста письма, благодаря электронной подписи.

Сам по себе механизм достаточно прост: в письмо добавляется ЭЦП, сделанная с помощью приватного ключа, а публичный ключ публикуется в текстовой записи DNS и с его помощью получатель проверяет ЭЦП письма. Для одного домена может быть несколько пар ключей. Имена ключей называются селекторами. Далее будет показано как можно быстро добавить DKIM к Exim, работающему на сервере под управлением Ubuntu 18.04.

Verified by DKIM

Чтобы немного упростить себе жизнь в дальнейшем (например если понадобится добавить новые домены) создадим скрипт "gen.sh", следующего содержания:

Теперь генерируем ключи для наших доменов:

Сгенерировав ключи остаётся только настроить exim. В Ubuntu конфигурация exim храниться в виде большого количества небольших файлов и управляется с помощью макросов. Кому-то это может показаться неудобным, но с другой стороны можно все макросы для одной задачи определить в одном файле, что весьма удобно. Мы создадим файл "/etc/exim4/conf.d/main/000_localmacros_dkim" следующего содержания:

После этого необходимо обновить конфигурацию exim и перезапустить сервис:

С этого момента все исходящие письма будут подписаны с учётом соответствующего домену ключа. В качестве селектора будет указываться "mailsrv1".

Но чтобы принимающая сторона могла проверить подпись необходимо опубликовать публичные ключи в DNS. Для этого в наших зонах необходимо создать TXT-записи "mailsrv1._domainkey" следующего вида:

Например если публичный ключ имеет вид:

То запись будет иметь вид:

После внесения изменений в DNS всё должно начать работать. Но всё-же стоит добавить в DNS ещё одну запись: описание политики DKIM. Для этого достаточно добавить запись:

Здесь параметр "o-" означает что все письма должны быть подписаны (если это не так то укажите "o

"). А параметр "r=" указывает e-mail адрес, на который будут присылаться уведомления о некорректных подписях.

Также ещё можно настроить SPF и DMARC, но об этом как-нибудь в другой раз:)

Кроме того различные спам-фильтры по результатам проверки подписи добавляют различные отметки. Например spamassassin добавляет заголовок "X-Spam-Status" и в случае успешной проверки DKIM-подписи в нём будет флаг "T_DKIM_INVALID". Яндекс почта добавляет заголовок "Authentication-Results" и в нём флаг "dkim=pass".

Читайте также: