Настройка и установка OpenDKIM на почтовом сервере с операционной системой CentOS 8 или RHEL 8

Ранее я демонстрировал процесс настройки SPF и DKIM на почтовом сервере с операционной системой CentOS/RHEL. Существуют два популярных программных инструмента для выполнения подписи и проверки DKIM на Linux: OpenDKIM и Amavis. В предыдущем уроке я использовал Amavis, поскольку на тот момент OpenDKIM не был доступен в репозиториях CentOS 8/RHEL 8. В настоящее время OpenDKIM добавлен в репозиторий EPEL. Поскольку некоторые пользователи предпочитают OpenDKIM, в этом уроке я расскажу, как его настроить.

Что представляет собой DKIM?

DKIM (DomainKeys Identified Mail) — это вид TXT-записей в DNS, который помогает защищать электронную почту от подделки и гарантирует, что легитимные письма попадают во входящие сообщения получателя, а не в спам. Этот механизм использует закрытый ключ для добавления цифровой подписи к письмам, отправляемым с вашего домена. Серверы, принимающие SMTP, проверяют подпись, используя соответствующий открытый ключ, размещённый в DNS-записях вашего домена.

Отключение DKIM в Amavis.

Если вы уже ознакомились с моим предыдущим руководством по Amavis и теперь планируете использовать OpenDKIM, вам необходимо отключить DKIM в Amavis. Для этого откройте основной конфигурационный файл для редактирования.

sudo nano /etc/amavisd/amavisd.conf

Обнаружьте указанные строки.

$enable_dkim_verification = 1; # включить проверку подписей DKIM $enable_dkim_signing = 1; # загрузить код подписи DKIM, ключи определяются dkim_key

Поместите знак # в начало каждой строки, чтобы закомментировать их.

#$enable_dkim_verification = 1; # включить проверку подписей DKIM #$enable_dkim_signing = 1; # загрузить код подписи DKIM, ключи определяются dkim_key

Сохраните файл и закройте его. После этого перезапустите Amavis.

sudo systemctl restart amavisd

Инсталляция и конфигурация OpenDKIM на CentOS 8/RHEL 8.

В первую очередь активируйте репозиторий EPEL (Дополнительные пакеты для Enterprise Linux) и выполните установку OpenDKIM.

sudo dnf install epel-release sudo dnf install opendkim opendkim-tools

Внесите изменения в главный конфигурационный файл OpenDKIM.

sudo nano /etc/opendkim.conf

Определите следующую последовательность.

Mode v

По умолчанию OpenDKIM функционирует в режиме проверки (v), который осуществляет проверку подписи DKIM для входящих электронных писем. Чтобы подписывать исходящие сообщения, замените эту строку на следующую, чтобы активировать режим подписи.

Mode sv

После этого отыщите последующие строки.

Если проверка подписи не удалась и подпись содержит запрос на отчет («r=y»), а домен отправителя имеет адрес для отчетов (например, ra=user) в DNS-записи, OpenDKIM отправит структурированный отчет на указанный адрес с необходимыми деталями для устранения проблемы. Вы можете задать определённый адрес электронной почты для получения отчета, раскомментировав параметр ReportAddress и указав нужный адрес. Обратите внимание, что это не приведет к проблемам с обратной рассылкой, так как отчеты будут направлены на адрес, указанный в DNS-записи домена отправителя.

Читайте также:  Способы проверки подключенных USB устройств в Linux

Найдите следующую строку и закомментируйте её, поскольку мы будем применять отдельные ключи для каждого домена.

KeyFile /etc/opendkim/keys/default. private

После этого обнаружьте следующие четыре строки и уберите комментарии.

# KeyTable /etc/opendkim/KeyTable # SigningTable refile:/etc/opendkim/SigningTable # ExternalIgnoreList refile:/etc/opendkim/TrustedHosts # InternalHosts refile:/etc/opendkim/TrustedHosts

Сохраните изменения и закройте документ.

Формирование таблицы подписей, таблицы ключей и документа доверенных хостов.

Измените документ с подписями в формате таблицы.

sudo nano /etc/opendkim/SigningTable

Вставьте данную строку в конец файла. Это сигнализирует OpenDKIM о том, что если отправитель с вашего сервера использует адрес @your-domain.com, то электронное письмо должно быть подписано приватным ключом, который обозначен как 20200308._domainkey. your-domain.com.

*@your-domain.com 20200308._domainkey.your-domain.com

20200308 — это селектор для DKIM. У одного доменного имени может существовать несколько DKIM-ключей, и селектор DKIM служит для выбора конкретного ключа. Вы можете выбрать любое имя для селектора, но мне удобно использовать текущую дату (8 марта 2020 года). После этого сохраните и закройте файл, затем приступите к редактированию таблицы ключей.

sudo nano /etc/opendkim/KeyTable

Включите следующую строку, указывающую путь к закрытому ключу DKIM.

20200308._domainkey.your-domain.com your-domain.com:20200308:/etc/opendkim/keys/your-domain.com/20200308.private

Сохраните файл и закройте его. Затем внесите изменения в файл с доверенными хостами.

sudo nano /etc/opendkim/TrustedHosts

Адреса 127.0.0.0.1 и ::1 уже присутствуют в данном файле по умолчанию. Теперь следует добавить следующую строку. Это указывает OpenDKIM, что при получении электронного письма с вашего собственного домена он должен подписывать его, но не проводить проверку подлинности DKIM.

.your-domain.com

Сохраните изменения и закройте документ.

Примечание: Не вставляйте звездочку перед адресом домена, например: *.ваш-домен.com. Перед доменным именем должна находиться только точка.

Создание пары закрытого и открытого ключей.

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

Создайте отдельную директорию для домена.

sudo mkdir /etc/opendkim/keys/your-domain.com

Создайте ключи, воспользовавшись инструментом opendkim-genkey.

sudo opendkim-genkey - b 2048 - d your-domain.com-D /etc/opendkim/ключи/your-domain.com - s 20200308 - v

Данная команда сгенерирует ключи размером 2048 бит. Аргумент — d (domain) задает домен, а — D (directory) указывает папку для сохранения ключей. В качестве селектора DKIM я использую 20200308. После завершения выполнения команды закрытый ключ сохранится в файл 20200308.private, а открытый — в файл 20200308.txt.

Читайте также:  Официально вышел релиз GNOME 3.0

По умолчанию доступ к чтению и записи файлов ключей имеет только пользователь root. Установите владельцем закрытого ключа пользователя opendkim.

sudo chown opendkim:opendkim /etc/opendkim/keys/ - R

Размещение вашего открытого ключа в записях DNS.

Покажите открытый ключ.

sudo cat /etc/opendkim/keys/your-domain.com/20200308.txt

Строка, расположенная после параметра p, представляет собой открытый ключ.

В DNS-менеджере создайте запись типа TXT, указав в поле имени 20200308._domainkey (замените 20200308 на ваш селектор DKIM). Затем вернитесь к терминалу, скопируйте содержимое скобок и вставьте его в поле значения записи DNS. Убедитесь, что удалили все двойные кавычки и переносы строк в этом поле, иначе тест ключа на следующем этапе может завершиться неудачно.

Проверка DKIM-ключа

Выполните следующую команду на вашем сервере CentOS 8/RHEL 8, чтобы проверить ключ.

sudo opendkim-testkey - d your-domain.com - s 20200308 - vvv

Если все прошло успешно, появится уведомление, что ключ верен.

opendkim-testkey: using default configfile /etc/opendkim.conf opendkim-testkey: checking key '20200308._domainkey. linux16.ru' opendkim-testkey: key OK

Учтите, что для обновления вашей DKIM-записи может потребоваться время. В зависимости от регистратора домена, процесс распространения DNS-записи может занять от нескольких минут до 24 часов. Вы можете проверить статус распространения DKIM-записи, посетив https://www.dmarcanalyzer.com/dkim/dkim-check/, введя селектор 20200308 и указав имя вашего домена.

Если у вас отображается сообщение «Ключ не защищён», не стоит волноваться. Это связано с тем, что для вашего домена не активирована технология DNSSEC. DNSSEC представляет собой стандарт безопасности, обеспечивающий защиту DNS-запросов. В большинстве случаев эта технология не используется для доменов. Вы можете продолжать выполнение инструкций из данного руководства.

Теперь можно запустить службу opendkim.

sudo systemctl start opendkim

А также настроить автоматический запуск при старте системы.

sudo systemctl enable opendkim

OpenDKIM работает на локальном хосте по адресу 127.0.0.1:8891.

Настройка связи Postfix с OpenDKIM

Внесите изменения в главный файл конфигурации Postfix.

sudo nano /etc/postfix/main.cf

В конце данного файла необходимо добавить следующие строки, чтобы Postfix мог взаимодействовать с OpenDKIM через протокол milter. Учтите, что следует использовать 127.0.0.1 в качестве адреса, а не localhost.

# Конфигурация Milter milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters

Сохраните изменения и закройте документ. После этого внесите пользователя postfix в состав группы opendkim.

sudo gpasswd - a postfix opendkim

Перезапустите службу Postfix.

sudo systemctl restart postfix

Проверка SPF и DKIM.

Теперь у вас есть возможность воспользоваться настольным или веб-почтовым клиентом для отправки тестового письма на адрес [email protected] и получить бесплатный отчет о проверке аутентификации вашей электронной почты. Вот отчет, который я получил с портала port25.com.

postfix-spf-dkim-centos8-rhel8

Также есть возможность отправить тестовое сообщение с вашего почтового сервера на вашу учетную запись Gmail для проверки прохождения проверок SPF и DKIM. В открытом письме в Gmail, кликнув на кнопку «Показать оригинал» в выпадающем меню справа, вы сможете увидеть результаты аутентификации.

Читайте также:  Полное руководство по установке и настройке Debian 8.5 Jessie на вашем компьютере

Если ваше сообщение не имеет подписи и проверка DKIM не была успешной, возможно, стоит ознакомиться с журналом Postfix (/var/log/maillog), чтобы понять, что не так с вашей настройкой.

Ваш почтовый сервер также осуществляет проверку DKIM для входящих сообщений. Вы можете просмотреть результаты в заголовках писем. Ниже представлена проверка SPF и DKIM для отправителя, использующего Gmail.

Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::c2d; helo=mail-yw1-xc2d. google.com; [email protected]; receiver= Authentication-Results: email.linux16.ru; dkim=pass (2048-bit key; unprotected) header. d=gmail.com [email protected] header. b="XWMRd2co"; dkim-atps=neutral

Как сконфигурировать OpenDKIM для нескольких доменов

Я подготовил инструкцию по хостингу нескольких доменов на почтовом сервере CentOS 8/RHEL 8 с использованием PostfixAdmin. В данном материале я применил Amavis для подписки и проверки DKIM. Если вы работаете с OpenDKIM, шаг 3 в этой инструкции можно пропустить.

Для настройки OpenDKIM для нескольких доменов необходимо внести дополнительные домены в таблицу подписей, таблицу ключей и файл доверенных хостов, как указано ниже.

*@domain1.com 20200308._domainkey.domain1.com *@domain2.com 20200308._domainkey.domain2.com

20200308._domainkey.domain1.com domain1.com:20200308:/etc/opendkim/keys/domain1.com/20200308.приватный 20200308._доменный ключ.domain2.com domain2.com:20200308:/etc/opendkim/keys/domain2.com/20200308.private

127.0.0.1 localhost .domain1.com .domain2.com

После этого создайте пару DKIM-ключей: закрытый и открытый. Добавьте открытый ключ в DNS в соответствии с шагами 3, 4 и 5, которые описаны для других доменов. Затем перезапустите OpenDKIM, и процесс будет завершен.

sudo systemctl restart opendkim

Некорректная настройка в почтовом клиенте.

Подпись DKIM может оказаться неэффективной, если в вашем почтовом клиенте неправильно настроены параметры SMTP/IMAP.

Корректные параметры:

  • Протокол SMTP: укажите mail.your-domain.com в качестве адреса сервера, используйте порт 587 и выберите STARTTLS. В качестве метода аутентификации выберите стандартный пароль.
  • Протокол IMAP: укажите mail.your-domain.com в качестве сервера, установите порт 143 и используйте STARTTLS. В качестве способа аутентификации выберите стандартный пароль.
  • Протокол SMTP: укажите mail.your-domain.com в поле сервера, установите порт 465 и выберите SSL/TLS. В качестве метода аутентификации выберите стандартный пароль.
  • Протокол IMAP: укажите mail.your-domain.com в качестве адреса сервера, установите порт 993 и выберите SSL/TLS. В качестве метода аутентификации выберите обычный пароль.

Неверные конфигурации:

  • Применение порта 25 в роли SMTP для отправки исходящих сообщений в почтовых клиентах.
  • Метод шифрования не был выбран.

Порт 25 предназначен для взаимодействия между SMTP-серверами. Рекомендуем не применять его в почтовом клиенте для отправки исходящих сообщений.

В вашем почтовом клиенте необходимо выбрать способ шифрования: STARTTLS или SSL/TLS.

Далее этап.

Я надеюсь, что данный учебник был полезен для вас в процессе установки и настройки OpenDKIM на почтовом сервере CentOS 8/RHEL 8. Теперь вы можете перейти к следующему руководству, которое посвящено настройке OpenDMARC для предотвращения подделки электронной почты.

  • Настройка OpenDMARC с Postfix на CentOS/RHEL для предотвращения фальсификации электронных писем.

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