Захист від спаму в Exchange 2013, 2016 RBL

У цій статті ми поговоримо про особливості роботи і налаштування RBL фільтрів в Exchange 2013/2016. Коротенько нагадаємо про те, що таке RBL. RBL (Realtime Blackhole List) являє собою сервіс, який зберігає базу даних, що містить список IP-адрес поштових серверів, помічених в розсилці спаму. Найчастіше доступ до RBL здійснюється по протоколу DNS, тому такі сервіси називають також DNSBL (DNS Block Lists).

Поштовий сервер при отриманні листи від невідомого відправника може автоматично звірятися з такими списками і блокувати пошту з IP адрес, перерахованих в базі RBL сервісів. При виявленні збігу адреси відправника зі значенням в одному з RBL списків, у відповідь на команду RCPT TO ваш сервер Exchnage видасть 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 провайдерів.

Примітка. Найпопулярнішими RBL провайдерами на даний момент є Spamhaus і SpamCop.

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 можна вивести так:

Get-IPBlockListProvider

Перевірити наявність конкретного 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.

spam @ mail.ru ,, user @ winitpro.ru, 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.