Настройка и активация Postscreen в Postfix для предотвращения спама от ботов

В предыдущих уроках мы рассматривали процесс установки почтового сервера на Linux, включая версии для Ubuntu и CentOS/RHEL. В этом уроке мы узнаем, как активировать и настроить Postscreen в почтовом сервере Postfix SMTP. Postscreen является фильтром SMTP, который предотвращает доступ спам-ботов и заражённых устройств к основному демону Postfix smtpd, что позволяет избежать перегрузки и обеспечить более эффективную обработку законных писем.

Обратите внимание: если на вашем сервере установлены iRedMail или Modoboa, то Postscreen активирован по умолчанию. Тем не менее, вы сможете узнать что-то новое.

Включите и настройте Postscreen в Postfix для блокировки спам-ботов.

Уменьшение нагрузки на SMTP-сервер.

По умолчанию Postfix способен запускать до 100 процессов SMTP-сервера для обработки запросов от SMTP-клиентов. Чтобы узнать текущий лимит процессов, выполните следующую команду.

postconf default_process_limit

default_process_limit = 100

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

Используя Postscreen для блокировки спам-ботов, мы освобождаем ресурсы SMTP-сервера для настоящих клиентов. Postscreen служит первым уровнем защиты от спама. Он функционирует как отдельный процесс, который прослушивает порт 25 и способен обрабатывать множество входящих SMTP-соединений. Этот метод более быстрый и эффективный по сравнению с другими проверками на уровне SMTP.

Способы, применяемые Postscreen для борьбы со спам-ботами.

Большинство спам-ботов неправильно реализуют SMTP-протокол. Postscreen может воспользоваться этим и применить различные способы для блокировки спам-ботов.

  • Тестирование pregreet. Если SMTP-клиент начинает обмениваться данными слишком рано, соединение разрывается.
  • Мониторинг черных списков в режиме реального времени. В случае, если IP-адрес SMTP-клиента окажется в черном списке, например, Spamhaus, соединение будет разорвано.
  • Тщательная проверка протокола.

Активация Postscreen в Postfix

Postscreen был впервые внедрен в Postfix 2.8. Если вы используете актуальный дистрибутив Linux, вероятнее всего, у вас установлена версия Postfix 3.0 или новее. Для проверки версии Postfix выполните команду.

postconf mail_version

mail_version = 3.3.0

Измените файл конфигурации master для Postfix.

sudo nano /etc/postfix/master.cf

Добавьте символ # в начале строки, чтобы закомментировать её.

smtp inet n - y - - smtpd

После этого уберите символ # в начале следующих четырёх строк, чтобы раскомментировать их.

smtp inet n - y - 1 postscreen smtpd pass - - y - - smtpd dnsblog unix - - y - 0 dnsblog tlsproxy unix - - y - 0 tlsproxy

  • В первых двух строках активирован Postscreen. Оба, и Postscreen, и демон smtpd, будут следить за портом 25. Сначала Postscreen проведет проверку SMTP-клиента, а затем передаст соединение демону smtpd.
  • Служба dnsblog (DNS Blacklist Logger) осуществляет регистрацию проверок DNS черных списков.
  • Сервис tlsproxy внедряет поддержку STARTTLS для Postscreen, позволяя удалённым SMTP-клиентам создавать зашифрованные соединения при активированном Postscreen.

Сохраните изменения и закройте документ. (Не перезапускайте Postfix на данный момент.)

включить postscreen в postfix

Формирование неизменного списка разрешенных и запрещенных элементов.

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

sudo nano /etc/postfix/main.cf

Следует внести наши IP-адреса в белый список Postscreen, чтобы исключить проверку наших SMTP-запросов (таких как тест на приветствие, проверка по черным спискам, углубленный тест протокола и другие). Добавьте приведенные ниже строки в конец файла.

postscreen_access_list = permit_mynetworks cidr:/etc/postfix/postscreen_access. cidr postscreen_blacklist_action = drop

Сохраните изменения и закройте документ. Параметр permit_mynetworks даст возможность добавить в белый список все IP-адреса, указанные в настройке mynetworks. Чтобы узнать текущее значение mynetworks, выполните

postconf mynetworks

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

Вы можете также самостоятельно внести дополнительные IP-адреса в файл /etc/postfix/postscreen_access. cidr.

sudo nano /etc/postfix/postscreen_access. cidr

Возможно, вам следует внести в белый список публичные IPv4 и IPv6-адреса вашего почтового сервера. В связи с этим я добавляю следующие строки в файл. Замените указанные IP-адреса на ваши. Имейте в виду, что необходимо применять нотацию CIDR: для одного IPv4-адреса добавьте /32 в конце, а для одного IPv6-адреса — /128.

#разрешить мои собственные IP-адреса. 130.51.180.110/32 permit 2a0d:7c40:3000:b8b::2/128 permit

Если ваш почтовый сервер функционирует одновременно как VPN-сервер, вы можете рассмотреть возможность добавления IP-адреса этого VPN-сервера в белый список. Например, мой VPN-сервер использует частный IP-адрес 10.10.10.1, поэтому я добавляю следующую запись в файл.

10.10.10.1/32 permit

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

12.34.56.78/32 reject

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

sudo systemctl restart postfix

Примечание: Postscreen работает исключительно на порту 25, поэтому аутентифицированные пользователи, которые используют порты 587 или 465, не будут затронуты этой системой.

Postscreen также предлагает динамический белый список, который помогает сократить задержки для законных сообщений. Этот список определяется с помощью параметра postscreen_cache_map.

postconf postscreen_cache_map

postscreen_cache_map = btree:$data_directory/postscreen_cache

Каждый IP-адрес в динамическом белом списке обладает ограниченным периодом активности.

Испытание на приветствие.

В Postscreen предусмотрен тест на приветствие, который используется для выявления спама. Как вам, вероятно, известно, в протоколе SMTP принимающий сервер обязан сначала объявить свое имя хоста, прежде чем это сделает отправляющий сервер. Некоторые спамеры игнорируют это требование и первыми представляют свои имена хостов.

Читайте также:  Как в Linux Mint сделать загрузочную флешку Windows?

По умолчанию Postscreen активирует проверку приветствия, однако не принимает никаких мер в зависимости от результатов этой проверки. Как можно увидеть в следующих записях моего почтового журнала (/var/log/mail.log или /var/log/maillog), наличие текста «PREGREET» свидетельствует о том, что SMTP-клиент первым сообщил свое имя хоста, но Postscreen все равно передал соединение демону smtpd Postfix.

mail postfix/postscreen[24075]: CONNECT from [156.96.118.171]:62604 to [23.254.225.226]:25 mail postfix/postscreen[24075]: PREGREET 11 after 0.07 from [156.96.118.171]:62604: EHLO User\r\n mail postfix/smtpd[24076]: connect from unknown[156.96.118.171] mail postfix/smtpd[24076]: disconnect from unknown[156.96.118.171] ehlo=1 quit=1 commands=2

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

sudo nano /etc/postfix/main.cf

Вставьте данную строку в самый конец.

postscreen_greet_action = enforce

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

sudo systemctl restart postfix

С этого момента Postscreen будет прерывать соединение, если SMTP-клиент не соблюдает данное правило. Из приведенного ниже лога видно, что Postscreen остановил соединение, предотвратив спамера от атаки на демона smtpd.

mail postfix/postscreen[6471]: CONNECT from [192.241.239.123]:48014 to [23.254.225.226]:25 mail postfix/postscreen[6471]: PREGREET 19 after 0 from [192.241.239.123]:48014: EHLO zg-0131a-136

mail postfix/postscreen[6471]: DISCONNECT [192.241.239.123]:48014

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

postscreen_greet_action = drop

Применение открытых черных и белых списков.

Параметр postscreen_dnsbl_sites предназначен для проверки IP-адресов клиентов SMTP с использованием общедоступных черных списков (DNSBL). Возможно, вы уже применяете reject_rbl_client в smtpd Postfix, чтобы отклонять клиентов SMTP с IP-адресами, внесенными в эти черные списки. Однако это может вызвать ложные срабатывания, поскольку IP-адресы легитимных SMTP-серверов могут оказаться в черных списках по различным причинам, даже если вы используете permit_dnswl_client для проверки по публичным белым спискам (DNSWL).

Для снижения количества ложных срабатываний Postscreen предоставляет возможность проверки нескольких черных списков с добавлением весового коэффициента для каждого из них. К примеру, если IP-адрес зафиксирован в черном списке Spamhaus, ему присваивается 3 балла; если он в черном списке BarracudaCentral, добавляется 2 балла. Если суммарный балл превышает установленный порог (определяется параметром postscreen_dnsbl_threshold), соединение с клиентом SMTP будет отклонено. Эта система оценивания аналогична той, что используется в SpamAssassin.

В данной конфигурации мы устанавливаем пороговое значение на уровне 3 очков. Spamhaus имеет вес 3, BarracudaCentral — 2, а SpamCop — 1. Если итоговый балл достигает или превышает 3, Postscreen заблокирует клиента SMTP.

postscreen_dnsbl_threshold = 3 postscreen_dnsbl_action = enforce postscreen_dnsbl_sites = zen. spamhaus. org*3 b. barracudacentral. org=127.0.0.[2..11]*2 bl. spameatingmonkey.net*2 bl. spamcop.net dnsbl. sorbs.net

Также возможно применять postscreen_dnsbl_sites для проверки SMTP-клиентских IP-адресов по общественным белым спискам (DNSWL). В случае, если IP-адрес клиента включен в белый список, ему присваивается отрицательный балл.

postscreen_dnsbl_sites = zen. spamhaus. org*3 b. barracudacentral. org=127.0.0.[2..11]*2 bl. spameatingmonkey.net*2 bl. spamcop.net dnsbl. sorbs.net swl. spamhaus. org*-4, list. dnswl. org=127.[0..255].[0..255].0*-2, list. dnswl. org=127.[0..255].[0..255].1*-4, list. dnswl. org=127.[0..255].[0..255].[2..3]*-6

Если вы задействуете параметры reject_rbl_client или permit_dnswl_client в smtpd Postfix, их необходимо убрать, чтобы демон smtpd не осуществлял повторную проверку IP-адресов после работы Postscreen. Postscreen не проводит проверку черных и белых списков доменных имен, поэтому следует продолжать использовать reject_rhsbl для выявления доменных имен в публичных черных списках.

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, . . reject_rhsbl_helo dbl. spamhaus. org, reject_rhsbl_reverse_client dbl. spamhaus. org, reject_rhsbl_sender dbl. spamhaus. org,

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

sudo systemctl restart postfix

Обратите внимание: если в журнале почты появится данное сообщение, это указывает на то, что IP-адрес SMTP-клиента не включен в белый список (list. dnswl. org). Это не является ошибкой.

warning: dnsblog_query: lookup error for DNS query 161.223.143.185.list. dnswl. org: Host or domain name not found. Name service error for name=161.223.143.185.list. dnswl. org type=A: Host not found, try again

Если IP-адрес включен в белый список, сообщение примет следующий вид:

postfix/dnsblog[21188]: addr xx. xx. xx. xx listed by domain list. dnswl. org as 127.0.10.0

Если в списке list. dnswl. org вы видите IP-адрес 127.0.0.255, это указывает на то, что вы исчерпали лимит запросов. Рекомендуется настроить собственный локальный DNS-резолвер.

postfix/dnsblog[11951]: addr 202.66.174.152 listed by domain list. dnswl. org as 127.0.0.255

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

Настройка локального DNS-резолвера

Имейте в виду, что при работе с общедоступными черными и белыми списками необходимо настроить локальный DNS-резолвер на вашем почтовом сервере, поскольку большинство из них накладывает ограничения на число запросов. Если вы используете общедоступный DNS-резолвер, например 8.8.8.8, то, скорее всего, вы достигнете предела запросов быстрее, чем предполагаете.

Некоторые DNSBL-ресурсы, которые больше не функционируют или закрыты.

Избегайте использования неактивных или закрытых DNSBL-ресурсов, чтобы ваш почтовый сервер не отклонял законные сообщения.

  • С 2013 года dnsbl. njabl. org прекратил свою работу.
  • Публичный доступ к списку dnsbl. ahbl. org был закрыт в 2015 году.

Активация углубленных протокольных испытаний

В Postscreen имеется три популярных теста глубокого протокола:

  • Проверка SMTP-пайплайнинга
  • Тестирование команд, которые не связаны с SMTP.
  • Тест на «чистую» новую строку

Pipelining — это улучшенная версия протокола SMTP, которая позволяет клиентам отправлять несколько команд одновременно, не ожидая ответов от сервера. В Postfix поддержка pipelining включена по умолчанию. Для проверки этой функции можно использовать telnet для подключения к почтовому серверу.

telnet mail.yourdomain.com 25

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

EHLO mail.google.com

Ответ сервера SMTP ниже демонстрирует наличие поддержки функции pipelining.

250-PIPELINING 250-SIZE 157286400 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN

После этого завершите подключение.

quit

Некоторые спамеры прибегают к технике pipelining, отправляя несколько команд RCPT TO: одновременно, что позволяет им рассылать спам сразу нескольким адресатам в рамках одной SMTP-сессии. Если сервер SMTP не подтверждает поддержку pipelining, клиенту SMTP не следует отправлять несколько команд одновременно.

Включите проверку на pipelining и блокируйте SMTP-клиентов, не прошедших этот тест, добавив следующие две строки в файл /etc/postfix/main.cf.

postscreen_pipelining_enable = yes postscreen_pipelining_action = enforce

Тест на команды, не относящиеся к SMTP, позволяет Postscreen выявлять SMTP-клиентов, отправляющих команды, которые не имеют отношения к протоколу SMTP. Для того чтобы отклонять таких клиентов, добавьте следующие две строки в файл /etc/postfix/main.cf.

postscreen_non_smtp_command_enable = yes postscreen_non_smtp_command_action = enforce

Тестирование на наличие «голых» новых строк позволяет Postscreen выявлять SMTP-клиентов, которые завершают строки символом вместо обычного. Чтобы заблокировать таких SMTP-клиентов, добавьте следующие две строки в файл /etc/postfix/main.cf.

postscreen_bare_newline_enable = yes postscreen_bare_newline_action = enforce

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

sudo systemctl restart postfix

Воздействие серого листинга, вызванное тщательными тестами протоколов.

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

450 4.3.2 Service currently unavailable

Клиенту потребуется попробовать еще раз позже с того же IP-адреса. Это своего рода серый листинг, поэтому необходимо отключить иные варианты серого листинга. Например, если вы пользовались моим предыдущим руководством о настройке Postgrey в качестве сервера серого листинга, найдите соответствующую строку в файле /etc/postfix/main.cf и закомментируйте её.

check_policy_service inet:127.0.0.1:10023,

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

sudo systemctl restart postfix

Способы уменьшения отрицательного опыта пользователей.

Грейлистинг может вызывать недовольство у пользователей, так как им приходится ожидать несколько минут, прежде чем электронное письмо будет доставлено. Чтобы снизить этот негативный опыт, я могу предложить три метода, которые помогут при применении глубоких протокольных тестов Postscreen.

  • Добавьте вторую MX запись, которая будет ссылаться на тот же IP-адрес.
  • Если IP-адрес SMTP-клиента находится в публичном белом списке, то следует пропустить детальные протокольные проверки.
  • Применяйте Postwhite для внесения известных надежных IP-адресов в белый список Postscreen.

Добавьте вторую MX-запись, которая будет направлена на тот же IP-адрес.

Вы можете добавить несколько MX записей для своего доменного имени, как показано ниже.

Тип записи Имя Почтовый сервер Приоритет MX @ mail.yourdomain.com 0 MX @ mail2.yourdomain.com 5

Сначала отправитель сделает попытку установить соединение с первым почтовым сервером (имеющим приоритет 0). Если mail.yourdomain.com отклонит сообщение по причине грейлистинга, отправитель незамедлительно попытается подключиться ко второму почтовому серверу (приоритет 5).

Грейлистинг в Postscreen не создает задержек, в отличие от Postgrey. Если два почтовых сервера имеют одинаковый IP-адрес, то при попытке отправителя подключиться ко второму серверу письмо будет принято немедленно (при условии, что остальные проверки выполнены успешно), и пользователи не ощутят задержки в доставке письма из-за грейлистинга.

Имейте в виду, что не все почтовые серверы мгновенно обращаются ко вторичному MX хосту. Некоторые из них, например Gmail, могут попытаться подключиться к другому IP-адресу, который также будет отклонен. Postfix, как правило, пытается установить связь со вторым MX хостом по умолчанию. Не уверена, работает ли это в случае с Exim. Если вы используете SMTP сервер Exim, оставьте, пожалуйста, комментарий ниже.

Игнорирование углубленных протокольных проверок, если IP-адрес SMTP-клиента включен в публичный белый список.

Gmail не осуществляет повторную отправку писем с одного и того же IP-адреса. Тем не менее, IP-адрес Gmail включен в список list. dnswl. org. Мы можем настроить Postscreen так, чтобы он не учитывал таких SMTP-клиентов. Для этого добавьте следующую строку в файл /etc/postfix/main.cf, чтобы игнорировать клиентов с рейтингом -2 и ниже.

postscreen_dnsbl_whitelist_threshold = -2

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

sudo systemctl restart postfix

В следующем сообщении моего почтового журнала указано, что Postscreen не провел детальные протокольные проверки и передал соединение демону smtpd, поскольку IP-адрес Gmail входит в публичный белый список.

Feb 10 10:31:14 mail postfix/postscreen[16579]: CONNECT from [209.85.166.44]:38543 to [23.254.225.226]:25 Feb 10 10:31:14 mail postfix/dnsblog[16582]: addr 209.85.166.44 listed by domain list. dnswl. org as 127.0.5.0 Feb 10 10:31:15 mail postfix/postscreen[16579]: PASS NEW [209.85.166.44]:38543 Feb 10 10:31:15 mail postfix/smtpd[16639]: connect from mail-io1-f44.google.com[209.85.166.44]

На самом деле, большинство известных почтовых сервисов, таких как Gmail, Hotmail, Outlook, Yahoo Mail, GMX Mail и ProtonMail, находятся в белом списке на сайте list. dnswl. org. Кроме того, в этот список включены почтовые серверы из различных других секторов, что можно увидеть на dnswl. org.

  • Финансовые сервисы
  • 3 – Услуги почтовых провайдеров
  • 4 – Учреждения (включая как коммерческие, так и некоммерческие)
  • 5 – Услуги и сетевые провайдеры
  • 6 – Индивидуальные/персональные серверы
  • 7 – Сфера туризма и отдыха
  • 8 – Сектор государственного управления/государственные органы
  • 9 – Компании в области медиа и технологий
  • 10 – Определённые исключительные ситуации
  • 11 – Образование, учебные заведения
  • 12 – Сфера здравоохранения
  • 13 – Обрабатывающая отрасль/индустрия
  • 14 – Розничная и оптовая торговля, а также услуги.
  • 15 – Поставщики услуг email-маркетинга
  • 20 – Добавлено через систему самообслуживания без указания конкретной категории.

Использование параметра postscreen_dnsbl_whitelist_threshold позволит вам в большинстве случаев избежать попадания в серый список.

Применение Postwhite

Postwhite — это скрипт, созданный Стивом Дженкинсом, который автоматически формирует список статических IP-адресов для Postscreen. Он использует общедоступные SPF-записи известных веб-почтовых сервисов, социальных сетей, поставщиков электронной коммерции и отправителей массовых рассылок, соблюдающих необходимые стандарты. Этот белый список обеспечивает пропуск всех тестов Postscreen (включая тест на предприветствие, проверку по общедоступным черным и белым спискам, а также глубокие протокольные тесты) для разрешенных IP-адресов. Это способствует снижению нагрузки на систему и уменьшает количество DNS-запросов к публичным черным и белым спискам.

Для начала работы с Postwhite выполните команду cd в директорию /usr/local/bin/.

cd /usr/local/bin/

sudo apt install git

sudo dnf install git

Клонируйте репозитории SPF-Tools и Postwhite с платформы Github.

sudo git clone https://github.com/spf-tools/spf-tools. git sudo git clone https://github.com/stevejenkins/postwhite. git

Скопируйте файл postwhite.conf в директорию /etc/.

sudo cp /usr/local/bin/postwhite/postwhite.conf /etc/

sudo /usr/local/bin/postwhite/postwhite

постскрин белый список поствайт

Whitelist будет сохранён в файл /etc/postfix/postscreen_spf_whitelist. cidr. Необходимо внести изменения в главный конфигурационный файл Postfix.

sudo nano /etc/postfix/main.cf

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

postscreen_access_list = permit_mynetworks cidr:/etc/postfix/postscreen_access. cidr

Создайте новый файл whitelist.

postscreen_access_list = permit_mynetworks cidr:/etc/postfix/postscreen_access. cidr cidr:/etc/postfix/postscreen_spf_whitelist. cidr

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

sudo systemctl restart postfix

Измените файл crontab для пользователя root.

sudo crontab - e

Включите следующие две строки в конец, чтобы периодически обновлять список разрешенных адресов.

@daily /usr/local/bin/postwhite/postwhite > /dev/null 2>&1 #Обновление Whitelists для Postscreen @weekly /usr/local/bin/postwhite/scrape_yahoo > /dev/null 2>&1 #Обновление Yahoo! IPs для Whitelists Postscreen

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

Feb 10 13:04:17 mail postfix/postscreen[24895]: CONNECT from [209.85.166.44]:38257 to [23.254.225.226]:25 Feb 10 13:04:17 mail postfix/postscreen[24895]: WHITELISTED [209.85.166.44]:38257 Feb 10 13:04:17 mail postfix/smtpd[26596]: connect from mail-io1-f44.google.com[209.85.166.44]

Конфигурация Postscreen находится в файле /etc/postfix/main.cf.

публичный белый список для postscreen

Изучение журналов Postfix

Pflogsumm — замечательный инструмент для генерации отчетов по логам Postfix. Чтобы установить его на Ubuntu, используйте следующую команду:

sudo apt install pflogsumm

На CentOS/RHEL утилита pflogsumm доступна в составе пакета postfix-perl-scripts.

sudo dnf install postfix-perl-scripts

Для создания отчета за сегодняшний день воспользуйтесь следующей командой. Учтите, что на системах CentOS/RHEL файл журнала почты располагается по пути /var/log/maillog.

sudo pflogsumm - d today /var/log/mail.log

Подготовьте отчет за прошедший день.

sudo pflogsumm - d yesterday /var/log/mail.log

Для создания отчета за текущую неделю.

sudo pflogsumm /var/log/mail.log

Для того чтобы сначала отображались отчеты о «проблемах» (ошибки, задержки, предупреждения, отклонения), примените флаг —problems-first.

sudo pflogsumm - d today /var/log/mail.log --problems-first

Чтобы включить email отправителя в каждый элемент отчета об отказах, используйте параметр —rej-add-from.

sudo pflogsumm - d today /var/log/mail.log --rej-add-from

Для отображения полной причины отклонений в отчетах, применяйте флаг —verbose-msg-detail.

sudo pflogsumm - d today /var/log/mail.log --rej-add-from --verbose-msg-detail

Можно настроить cron-задачу, чтобы pflogsumm ежедневно отправлял отчет на вашу электронную почту.

sudo crontab - e

Вставьте строку, которая настроит ежедневное создание отчета в 4:00 утра.

0 4 * * * /usr/sbin/pflogsumm - d yesterday /var/log/mail.log --problems-first --rej-add-from --verbose-msg-detail - q

Для получения отчета на электронную почту добавьте следующую строку перед всеми задачами cron.

Обратите внимание на раздел с информацией об отклоненных сообщениях, где можно выяснить причину их отклонения и определить, есть ли среди них ошибочные блокировки. Сообщения, отклоненные по причине серого списка, можно не учитывать. На следующем скриншоте видно, что SMTP-клиент не прошел углубленные проверки протокола Postscreen.

глубокие протоколы тестирования постскрин

Если переменная MAILTO уже задана, но требуется отправлять сводку логов Postfix на другой почтовый адрес, добавьте следующую строку в ваше задание Cron.

Результат выполнения команды pflogsumm отправляется в почтовый клиент mutt, который принимает этот вывод как содержание письма и пересылает его на указанный вами адрес электронной почты. Для этого необходимо установить mutt на вашем сервере с операционной системой Linux.

sudo apt install mutt

sudo dnf install mutt

Проблема с обратным DNS-поиском в Postfix на CentOS/RHEL

Если ваш SMTP-сервер Postfix установлен на CentOS/RHEL и вы активировали Postscreen, это может привести к тому, что обратный DNS-поиск не будет выполняться. В результате, даже если IP-адрес имеет запись PTR, он все равно будет отображаться как неизвестный в логах Postfix (/var/log/maillog).

postfix/smtpd[14734]: connect from unknown[23.254.225.226]

Для решения этой проблемы нужно скопировать библиотеки, необходимые для обратного DNS-поиска, в chroot-среду.

sudo mkdir /var/spool/postfix/lib64 sudo cp - vl /usr/lib64/libnss_* /var/spool/postfix/lib64

После этого выполните перезапуск Postfix.

sudo systemctl restart postfix

Файлы /var/spool/postfix/etc/resolv.conf и /etc/resolv.conf имеют различия в системах Debian и Ubuntu.

Необходимо настроить DNS-резолвер на вашем почтовом сервере при использовании публичных черных и белых списков. Однако после установки DNS-резолвера на серверах Debian/Ubuntu может возникнуть следующая ошибка в файле /var/log/mail.log.

/var/spool/postfix/etc/resolv.conf и /etc/resolv.conf отличаются

Postfix анализирует файл /var/spool/postfix/etc/resolv.conf для определения используемого DNS-резолвера. Не рекомендуется изменять этот файл напрямую, поскольку он будет восстановлен при перезагрузке сервера.

Чтобы проверить, совпадают ли содержимое файлов /var/spool/postfix/etc/resolv.conf и /etc/resolv.conf, выполните следующие шаги.

Активируйте службы named-resolvconf.service и systemd-resolved.service.

sudo systemctl enable named-resolvconf.service systemd-resolved.service

После этого создайте папку для хранения ваших конфигураций Postfix.

sudo mkdir - p /etc/systemd/system/postfix.service.d/

Создайте конфигурационный файл с именем start.conf.

sudo nano /etc/systemd/system/postfix.service.d/start.conf

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

[Unit] After=systemd-resolved.service named-resolvconf.service

Закройте файл и сохраните изменения.

Таким образом, сервис postfix.service будет активироваться после завершения работы named-resolvconf.service и systemd-resolved.service.

Также возможно настроить следующее Cron-задание для конфигурации DNS-резолвера на адрес 127.0.0.1.

* * * * * echo "nameserver 127.0.0.1" | tee /var/spool/postfix/etc/resolv.conf > /dev/null

Заключение

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