Конфигурация OpenDMARC совместно с Postfix на Ubuntu для предотвращения спама и фальсификации электронной почты

В ранее опубликованных материалах мы рассматривали, как быстро установить собственный почтовый сервер с использованием iRedMail или Modoboa, а также делились полезными рекомендациями по борьбе со спамом. В данном руководстве мы покажем, как интегрировать OpenDMARC с почтовым сервером Postfix на Ubuntu для защиты от фальсификации электронной почты и спама. OpenDMARC представляет собой фильтр DMARC с открытым исходным кодом, предназначенный для MTA (агента передачи сообщений, также известного как SMTP-сервер).

DMARC — это протокол, предназначенный для защиты доменов от подделки и несанкционированного использования.

DMARC (Аутентификация сообщений на основе домена, отчетность и соблюдение) — это стандарт в интернете (RFC 7489), предназначенный для защиты владельцев доменов от злоупотреблений, связанных с подделкой электронной почты с использованием их доменных имен. Ранее, до появления DMARC, мошенники могли без особых усилий подделывать адреса отправителей, используя доменные имена других людей.

Если владелец домена настроил DMARC-запись в DNS, а почтовый сервер, принимающий сообщения, поддерживает проверку DMARC, то злоумышленники обязаны пройти проверку SPF или DKIM для успешного прохождения DMARC. В случае, если проверка DMARC не проходит, фальшивое сообщение может быть отклонено и не дойдет до конечных получателей. Мошенникам сложно обойти проверку SPF или DKIM, если только почтовый сервер владельца домена не был скомпрометирован.

OpenDMARC для Postfix на Ubuntu

Пример фальшивого электронного письма.

Мне пришло письмо от спамера с угрозой выкупа, в котором в качестве отправителя указан домен winsaaluminyumankara.com. Данные о данном домене можно найти в открытых источниках. Ясно, что спамер не имеет отношения к этому домену.

Настройка DMARC

winsaaluminyumankara.com настроил запись DMARC.

Установка и настройка OpenDMARC для Postfix на Ubuntu.

Затем я взглянул на заголовки электронной почты и увидел, что проверка SPF не прошла. Отсутствует DKIM-подпись, из-за чего также не удается пройти проверку DMARC. Это письмо является подделкой.

Данный факт свидетельствует о том, что злоумышленники могут использовать не только известные бренды, но и любые доменные имена в Интернете для создания поддельных писем. К сожалению, политика DMARC для данного домена установлена на уровне p=none, что означает, что сервер получателя не будет предпринимать никаких мер в случае неудачной проверки DMARC. Если бы политика была p=reject, то мой сервер Postfix SMTP отклонил бы такое письмо с помощью OpenDMARC.

Paypal и Facebook внедрили политику DMARC с настройкой reject для своих доменных имен.

Следовательно, если мошенник попытается создать фальшивое письмо от Paypal или Facebook, мой почтовый сервер сможет заблокировать это подделанное сообщение с помощью OpenDMARC. Кроме того, многие другие популярные доменные имена уже применили политику DMARC с настройкой reject, что отображено в таблице ниже.

Поставщик защищенной электронной почты Protonmail применяет Postfix и OpenDMARC для проверки DMARC входящих сообщений. В этом руководстве я расскажу, как настроить аналогичную систему на вашем собственном сервере Postfix SMTP.

Условия, которые необходимо выполнить

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

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

Конфигурация OpenDMARC с почтовым сервером Postfix SMTP на Ubuntu 22.04, 20.04 или 18.04.

OpenDMARC — это софт с открытым кодом, который способен осуществлять проверку и формировать отчеты по DMARC. Он доступен в репозитории Ubuntu, и для его установки достаточно выполнить следующую команду.

Читайте также:  Как отобразить скрытые файлы в Linux и управлять ими через терминал

sudo apt install opendmarc

Если вам предложат настроить базу данных для OpenDMARC через dbconfig-common, можете смело выбрать «Нет». Настройка базы данных требуется только в том случае, если вы планируете генерировать DMARC-отчеты для других почтовых провайдеров. Для небольших почтовых операторов, как мы, создание таких отчетов не приносит особой пользы, поэтому этот этап можно пропустить.

Настройка базы данных для opendmarc с использованием dbconfig-common.

После завершения установки она запустится автоматически. Чтобы проверить ее состояние, используйте:

systemctl status opendmarc

opendmarc.service - Milter OpenDMARC загружен: (/lib/systemd/system/opendmarc.service;отключеноПредустановка от поставщика: активирована.активно функционирует с Вт 2018-10-30 19:49:52 CST; 23 сек. назад Документация: man:opendmarc(8) man:opendmarc.conf(5) Основной PID: 14858 (opendmarc) Задачи: 6 (ограничение: 1110) CGroup: /system. slice/opendmarc.service └─14858 /usr/sbin/opendmarc

Если команда, указанная выше, не выполнится сразу, вы можете прервать ее, нажав клавишу Q.

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

sudo systemctl enable opendmarc

После этого внесите изменения в основной файл конфигурации, используя текстовый редактор.

sudo nano /etc/opendmarc.conf

Отыщите следующий ряд:

# AuthservID name

По умолчанию OpenDMARC устанавливает имя хоста MTA в качестве AuthservID, однако рекомендуется использовать иное имя для службы аутентификации, поскольку Amavisd-new изменит заголовок результатов аутентификации, добавленный OpenDMARC. Вы можете изменить его на следующее, чтобы проще различать, какая программа добавляет определённый заголовок результатов аутентификации.

AuthservID OpenDMARC

После этого добавьте следующую строку. Убедитесь, что вы заменили имя хоста на фактическое имя хоста Postfix. Это позволит OpenDMARC доверять результатам аутентификации с mail.yourdomain.com в идентификаторе. Данное действие необходимо, если у вас настроен OpenDKIM для проверки DKIM.

TrustedAuthservIDs mail.yourdomain.com

Если имя хоста Postfix отсутствует в TrustedAuthservIDs или в нем есть ошибка, OpenDMARC не будет учитывать заголовок Authentication-Results, который создается OpenDKIM, и вы увидите соответствующее сообщение об ошибке в почтовом логе /var/log/mail.log.

opendmarc[1133]: A436A205C9 игнорирование Authentication-Results от mail.yourdomain.com

Затем отыщите данную строку:

# RejectFailures false

По умолчанию OpenDMARC не отказывает в доставке письмам, которые не соответствуют проверке DMARC, даже если для домена установлена политика p=reject. Если вы хотите отклонять такие письма при данной политике, раскомментируйте эту строку и измените значение false на true.

RejectFailures true

Существует вероятность, что вы захотите настроить OpenDMARC так, чтобы он не обращал внимания на SMTP-клиентов, которые успешно прошли аутентификацию с помощью SMTP AUTH. К примеру, у меня имеется SMTP-сервер Postfix, работающий на веб-сервере моего блога, который использует мой основной почтовый сервер для ретрансляции уведомлений по электронной почте. Поэтому мне нужно, чтобы OpenDMARC не обрабатывал сообщения, отправленные с веб-сервера моего блога. Это также касается настольных и мобильных почтовых клиентов, отправляющих письма через порт 587. В таком случае добавьте следующую строку в конце данного файла.

IgnoreAuthenticatedClients true

Вставьте следующую строку в конце данного файла.

RequiredHeaders true

Данный процесс будет блокировать письма, которые не соответствуют требованиям заголовков электронной почты, установленным в RFC5322. Например, если поступающее сообщение не содержит заголовка From: или даты, оно будет отклонено. Кроме того, будет отклонено поле From:, из которого невозможно извлечь доменное имя.

Также рекомендуется включить следующую строку в конце данного файла. Это позволит OpenDMARC самостоятельно выполнять резервную проверку SPF в случае, если он не обнаружит результаты SPF в заголовках сообщения.

SPFSelfValidate true

OpenDMARC реализован в виде milter (фильтра для электронной почты). Postfix может взаимодействовать с milter-приложениями через Unix-сокет. По умолчанию файл сокета OpenDMARC располагается в /var/run/opendmarc/opendmarc. sock. Однако демон SMTP Postfix, который поставляется с Ubuntu, работает в окружении chroot, что подразумевает разрешение всех имен файлов относительно каталога очереди Postfix (/var/spool/postfix). Поэтому необходимо изменить путь к файлу сокета, используемому OpenDMARC.

Читайте также:  Как установить SimpleNote на Ubuntu Linux?

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

Socket local:/var/run/opendmarc/opendmarc. sock

Socket local:/var/spool/postfix/opendmarc/opendmarc. sock

Закройте файл, предварительно сохранив изменения.

Файл /etc/default/opendmarc может также указывать расположение сокета, однако в версиях Ubuntu 18.04 и 20.04 пакет opendmarc этот файл не обрабатывает, поэтому необходимо задать путь к сокету непосредственно в файле /etc/opendmarc.conf.

Создайте директорию для хранения сокет-файла OpenDMARC и настройте права доступа, чтобы пользователь и группа opendmarc имели возможность его использовать.

sudo mkdir - p /var/spool/postfix/opendmarc sudo chown opendmarc:opendmarc /var/spool/postfix/opendmarc - R

Установите права доступа 750, чтобы ограничить доступ к этому каталогу и предотвратить доступ пользователей, не входящих в группу opendmarc.

sudo chmod 750 /var/spool/postfix/opendmarc/ - R

Добавьте учетную запись postfix в группу opendmarc.

sudo adduser postfix opendmarc

Перезапустите OpenDMARC после этого.

sudo systemctl restart opendmarc

Конфигурация почтового сервера Postfix SMTP

Измените главный файл настроек.

sudo nano /etc/postfix/main.cf

Если вы уже выполнили настройку OpenDKIM, в этом файле должны присутствовать строки, аналогичные приведённым ниже.

# Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = local:opendkim/opendkim. sock non_smtpd_milters = $smtpd_milters

Теперь необходимо просто подключить файл сокета OpenDMARC, чтобы Postfix мог работать с OpenDMARC. (Убедитесь, что он расположен после сокета OpenDKIM.)

# Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = local:opendkim/opendkim. sock,local:opendmarc/opendmarc. sock non_smtpd_milters = $smtpd_milters

Сохраните изменения в файле и закройте его. После этого перезапустите Postfix, чтобы новые настройки начали действовать.

sudo systemctl restart postfix

При использовании iRedMail

Если вы настраивали почтовый сервер с помощью iRedMail, то, скорее всего, у вас отсутствует OpenDKIM. В этом решении iRedMail применяет Amavis для подписки и проверки DKIM, однако OpenDMARC не может извлекать результаты проверки DKIM от Amavis, что может привести к неудаче проверки DMARC. Поэтому необходимо произвести настройку проверки DKIM следующим образом.

Используйте следующую команду для установки OpenDKIM.

sudo apt install opendkim

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

sudo nano /etc/opendkim.conf

Найдите последующий ряд.

#Mode sv

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

Mode v

После этого введите следующие строки в конце данного файла.

#OpenDKIM user # Не забудьте добавить пользователя postfix в группу opendkim UserID opendkim # Хосты, которые следует игнорировать при проверке подписей ExternalIgnoreList /etc/opendkim/trusted. hosts InternalHosts /etc/opendkim/trusted. hosts Socket local:/var/spool/postfix/opendkim/opendkim. sock

Сохраните файл и закройте его. Включите пользователя postfix в группу opendkim.

sudo adduser postfix opendkim

Сформируйте документ с перечнем доверенных хостов.

sudo mkdir /etc/opendkim/ sudo nano /etc/opendkim/trusted. hosts

Включите указанные строки в созданный файл.

127.0.0.1 localhost *.your-domain.com

Это значит, что сообщения, приходящие с указанных IP-адресов и доменных имен, будут считаться надежными. Сохраните изменения и закройте файл. После этого смените владельца.

sudo chown - R opendkim:opendkim /etc/opendkim

Затем создайте папку для хранения файла сокета OpenDKIM и установите права доступа так, чтобы только пользователь и группа opendkim могли к ней обращаться.

sudo mkdir /var/spool/postfix/opendkim sudo chown opendkim:opendkim /var/spool/postfix/opendkim

Если вы обнаружите следующую строку в файле /etc/default/opendkim.

SOCKET="local:/var/run/opendkim/opendkim. sock"

SOCKET="local:/var/spool/postfix/opendkim/opendkim. sock"

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

sudo nano /etc/postfix/main.cf

В конце файла добавьте строки для интеграции Postfix с OpenDKIM и OpenDMARC.

# Конфигурация Milter milter_default_action = accept milter_protocol = 6 smtpd_milters = local:opendkim/opendkim. sock, local:opendmarc/opendmarc. sock non_smtpd_milters = $smtpd_milters

Сохраните изменения в файле и закройте его. Затем перезапустите службы OpenDKIM, OpenDMARC и Postfix.

sudo systemctl restart opendkim opendmarc postfix

Проверка верификации OpenDMARC.

Теперь отправьте сообщение с вашего другого почтового ящика, например Gmail, на ваш доменный адрес. Затем проверьте заголовки письма. Если OpenDMARC функционирует корректно, вы увидите результаты проверки DMARC, как указано ниже.

Читайте также:  Ошибка Requested Range Not Satisfiable

Authentication-Results: OpenDMARC; dmarc=pass (p=none dis=none) header. from=gmail.com

Я отправил сообщение с моего аккаунта Gmail на доменный адрес, и оно успешно прошло проверку DMARC. Если вы не обнаружили этот заголовок, пожалуйста, просмотрите логи почты.

sudo nano /var/log/mail.log

Вы заметите нечто аналогичное, что свидетельствует о том, что OpenDMARC функционирует.

opendmarc[26495]: implicit authentication service: mail.linux16.ru opendmarc[26495]: 61DAA3EA44: gmail.com pass

Пренебрежение итогами проверки подлинности.

Если вы наблюдаете данное сообщение.

ignoring Authentication-Results at 1 from mail.linux16.ru

Это указывает на то, что OpenDMARC не учитывает результаты проверок SPF и DKIM, и в результате не функционирует. Для решения этой проблемы необходимо внести следующую строку в файл /etc/opendmarc.conf, после чего следует перезапустить OpenDMARC.

TrustedAuthservIDs mail.yourdomain.com

При изменении параметра myhostname в Postfix не забудьте внести новое имя хоста в список TrustedAuthservIDs. Вы можете указать несколько имен хостов, разделив их запятыми.

TrustedAuthservIDs mail.yourdomain.com, mail2.yourdomain.com

Postfix не удается установить соединение с OpenDMARC.

Если в журнале почты Postfix (/var/log/mail.log) вы увидите следующую ошибку, это указывает на то, что Postfix не в состоянии установить соединение с OpenDMARC через Unix-сокет (local

connect to Milter service local:opendmarc/opendmarc. sock: No such file or directory

Необходимо убедиться, что сервис opendmarc активирован.

sudo systemctl status opendmarc

Если служба opendmarc активна, но ошибка не устраняется, попробуйте перенастроить OpenDMARC на использование TCP/IP-сокета вместо Unix-сокета, чтобы решить проблему. (Хотя Unix-сокет обычно работает быстрее, если он не функционирует на вашем сервере, можно перейти на TCP/IP-сокет.)

sudo nano /etc/opendmarc.conf

Отыщите следующий ряд:

Socket local:/var/spool/postfix/opendmarc/opendmarc. sock

Поменяйте её на

Socket inet:8893@localhost

OpenDMARC теперь будет прослушивать сокет TCP/IP на адресе 127.0.0.1:8893. Сохраните изменения и закройте данный файл. После этого внесите правки в основной конфигурационный файл Postfix.

sudo nano /etc/postfix/main.cf

Отыщите следующий ряд:

smtpd_milters = local:opendkim/opendkim. sock, local:opendmarc/opendmarc. sock

Замените её на:

smtpd_milters = local:opendkim/opendkim. sock, inet:127.0.0.1:8893

Postfix будет устанавливать соединение с OpenDMARC через TCP/IP сокет. Перезапустите службы OpenDMARC и Postfix.

sudo systemctl restart opendmarc postfix

Проверка OpenDMARC через Telnet

С помощью telnet можно подделать доменное имя, к примеру, paypal.com. Для этого на вашем компьютере необходимо выполнить команду для подключения к порту 25 почтового сервера.

telnet mail.yourdomain.com 25

Следуйте этим шагам для отправки фальшивого письма. (Введите текст, отмеченный жирным шрифтом.)

HELO mail.paypal.com 250 mail.yourdomain.com MAIL FROM:[email protected]> 250 2.1.0 Ok RCPT TO:[email protected]> 250 2.1.5 Ok DATA 354 Завершите ввод данных с помощью . From: [email protected] To: [email protected] Subject: Пожалуйста, обновите ваш пароль. Нажмите на эту ссылку, чтобы обновить пароль. . 550 5.7.1 отклонено политикой DMARC для paypal.com quit

Мой почтовый сервер отверг это письмо, так как оно не прошло проверку DMARC, а Paypal применяет политику p=reject.

Если для домена установлена политика DMARC с параметром p=quarantine, фильтр OpenDMARC отправит фальшивое письмо в очередь задержки Postfix на неопределённый срок. Администратор почтового сервера может просмотреть все письма в очереди с помощью команды postqueue — p, а затем освободить их из задержки с помощью утилиты postsuper.

Способы включения IP-адреса в белый список OpenDMARC.

Чтобы разрешить пересылку писем с другого сервера через порт 25 вашего основного почтового сервера, на котором установлено OpenDMARC, необходимо внести IP-адрес этого сервера в белый список OpenDMARC. Это связано с тем, что OpenDMARC также проводит проверку домена в поле From: для пересылаемых сообщений.

Настройте файл конфигурации OpenDMARC.

sudo nano /etc/opendmarc.conf

Вставьте следующую строку в конце данного файла.

IgnoreHosts /etc/opendmarc/ignore. hosts

Сохраните изменения и закройте документ. После этого создайте каталог /etc/opendmarc/.

sudo mkdir /etc/opendmarc/

Сформируйте файл с названием ignore. hosts.

sudo nano /etc/opendmarc/ignore. hosts

Внесите IP-адреса, которые вы хотите разрешить, в этот файл следующим образом:

127.0.0.1 12.34.56.78

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

sudo systemctl restart opendmarc

Заключение

Надеюсь, данный урок оказался полезным для вас в настройке OpenDMARC на сервере Postfix SMTP под управлением Ubuntu, чтобы предотвратить подделку электронной почты и спам. Если вы считаете эту информацию ценной, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать дополнительные советы и рекомендации.