В этой статье мы поговорим об особенностях работы и настройке RBL фильтров в Exchange 2013/2016. Вкратце напомним о том, что такое RBL. RBL (Realtime Blackhole List) представляет собой сервис, хранящий базу данных, содержащую список IP-адресов почтовых серверов, замеченных в рассылке спама. Чаще всего доступ к RBL осуществляется по протоколу DNS, поэтому такие сервисы называют также DNSBL (DNS Block Lists).
Почтовый сервер при получении письма от неизвестного отправителя может автоматически сверяться с такими списками и блокировать почту с IP адресов, перечисленных в базе RBL сервисов. При обнаружении совпадения адреса отправителя со значением в одном из RBL списков, в ответ на команду RCPT TO ваш сервер Exchange выдаст SMTP сообщение об ошибке 550 5.x.x, а отправитель получат соответствующий отбойник.
За функционал блокировки соединений на основе списков IP адресов в Exchange 2016 и 2013 отвечает агент фильтрация подключений (Connection Filtering). Агент Connection Filtering включает в себя:
- IP Block Lists – черный список IP адресов, почта с которых не принимается (запрещенные отправители);
- IP Allow Lists — белый список IP адресов (разрешенные отправители);
- RBL Providers – список провайдеров RBL.
Первые два списка являются статическими и ведутся вручную администратором Exchange. В списке RBL провайдеров указывается список сторонних источников данных RBL, с которыми необходимо сверится при получении письма.
В Exchange 2007/2010 антиспам фильтрация включалась с помощью скрипта install-AntispamAgents.ps1, причем оба агента фильтрации (Connection Filtering и Content Filtering) устанавливались на одном сервере с ролью Hub Transport. В Exchange 2013 транспортная роль разбита на 2 составляющие: Front End Transport и Back End Transport, а функционал фильтрации разделен спама на 2 части. На сервере Front End выполняется фильтрация подключений (Connection Filtering), а на Back End – фильтрация содержимого (включает в себя IMF-фильтр — Exchange Intelligent Message Filter и агент обнаружения вирусов — Malware Agent).
В Exchange 2013, если роли CAS и Mailbox установлены на одном сервере, скрипт Install-AntispamAgents.ps1 устанавливает только агент контентной фильтрации. Это означает, что функционал RBL-фильтрации будет не доступен.
Чтобы установить агент Connection Filtering, нужно воспользоваться командлетом Install-TransportAgent:
Install-TransportAgent -Name "Connection Filtering Agent" -TransportService FrontEnd -TransportAgentFactory "Microsoft.Exchange.Transport.Agent.ConnectionFiltering.ConnectionFilteringAgentFactory" -AssemblyPath "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\agents\Hygiene\Microsoft.Exchange.Transport.Agent.Hygiene.dll"
Т.к. в Exchange 2016 все роли (кроме Edge Transport) совмещены, поэтому, если у вас нет выделенного сервера с ролью Edge Transport, вам придется установить антиспам агентов с помощью скрипта install-AntispamAgents.ps1 на всех серверах. Затем службе транспорта Exchange нужно указать адреса внутренних SMTP серверов, которые должны игнорироваться при проверке на спам:
Set-TransportConfig -InternalSMTPServers @{Add="192.168.100.25","192.168.0.25"}
После установки агента, его нужно включить и перезапустить службу Front End Transport:
Enable-TransportAgent -TransportService FrontEnd -Identity "Connection Filtering Agent"
Restart-Service MSExchangeFrontEndTransport
Проверить, что агент фильтрации подключений установлен и работает можно так:
Get-TransportAgent -TransportService FrontEnd
Далее нужно указать список используемых RBL провайдеров.
Add-IPBlockListProvider -Name zen.spamhaus.org -LookupDomain zen.spamhaus.org -AnyMatch $true -Enabled $True
Чтобы изменить текст отбойника, возвращаемого отправителю, воспользуемся такой командой:
Set-IPBlockListProvider zen.spamhaus.org -RejectionResponse "Your IP address is listed by Spamhaus Zen. You can delete it on page http://www.spamhaus.org/lookup/”
Можно добавить сразу несколько RBL провайдеров, предварительно ознакомившись с их особенностями и политикой коммерческого использования.
Список используемых RBL можно вывести так:
Проверить наличие конкретного IP адреса на предмет присутствия в RBL списке можно так:
Test-IPBlockListProvider -Identity zen.spamhaus.org -IPAddress x.x.x.x
Логи агента Connection Filter по умолчанию сохраняются в каталог
C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\FrontEnd\AgentLog.
Вы можете получить информацию о том, какой из RBL провайдеров отклонил письмо, выполнив поиск по *.log файлам в этом каталоге. Чтобы найти файл лога с указанным email адресом, откройте cmd и выполните команды:
cd “C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\FrontEnd\AgentLog”
find /c "[email protected]" *.log | find ":" | find /v ": 0"
Потом откройте найденный log файл в любом текстовом редакторе и поиском по отклонённому email вы сможете определить RBL провайдера, который заблокировал письмо и время блокировки.
В этом пример видно, что письмо отклонено провайдером zen.spamhaus.org.
[email protected],,[email protected],1,Connection Filtering Agent,OnRcptCommand,RejectCommand,”550 5.7.1 Recipient not authorized, your IP has been found on a block list”,BlockLictProvider,zen.spamhaus.org,,,
После накопления первичной информации (обычно нужно в два – три дня, в зависимости от объема почтового трафика), вы можете получить статистику результатов работы RBL фильтрации спама с помощью скрипта Get-AntispamTopRBLProviders.ps1.
.\get-AntispamTopRBLProviders.ps1 -location "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\FrontEnd\AgentLog"
Первое время начала использования RBL-фильтрации нужно внимательно изучить логи фильтрации на предмет ложных срабатываний, чтобы не заблокировать почту от ваших партнеров. Вы можете добавить такие доверенные email адреса или имена доменов в белый список Exchange:
Set-ContentFilterConfig -BypassedSenderDomains partner1.ru, partner2.com,partner3.net
Или добавить IP адрес определенного SMTP сервера в доверенные:
IPAllowListEntry -IPAddress x.x.x.x
Дополнительно для получения статистики о фильтрации писем фильтрами Connection Filtering Agent можно использовать следующие предустановленные PowerShell скрипты:
- get-AntispamFilteringReport.ps1
- get-AntispamSCLHistogram.ps1
- get-AntispamTopBlockedSenderDomains.ps1
- get-AntispamTopBlockedSenderIPs.ps1
- get-AntispamTopBlockedSenders.ps1
- get-AntispamTopRBLProviders.ps1
- get-AntispamTopRecipients.ps1
Для отключения фильтрации входящей почты нужно отключить Connection Filtering Agent:
Disable-TransportAgent -TransportService FrontEnd -Identity “Connection Filtering Agent”
Списки RBL являются достаточно эффективным средством борьбы с нежелательной почтой, но в большинстве случаем для полноценной антиспам защиты нужно использовать их совместно с другими способами борьбы со спамом. В дополнении к RBL вы можете вручную заблокировать конкретные адреса или домены отправителей в Exchange.