Exchange server 2007/2010: Filtrace zpráv pomocí transportních pravidel

Každý správce jakéhokoliv poštovního serveru nejspíš řešil problémy s nevyžádanou poštou s různými výsledky. Vestavěné nástroje v systémech MS Exchange 2007, 2010 přápadně v MS Forefront for Exchange 2010 nabízí širokou škálu konfigurací různých ochran, ale i tak se někdy najde místo, kudy se nechtěná pošta do schránek dostane. Pokud uživatel nepoužívá MS Outlook (používá například Mac OS v kombinaci s MS Entourage) a konfigurace „Junk email options“ je tedy velmi omezená, tak tím začíná známý proces zjišťování odkud, co, kdy, komu (procházení serverových logů, emailových hlaviček, kontrola konfigurace...).

Osobně jsem řešil problém s nevyžádanou poštou v azbuce, která přicházela v domén .ru a .ua. Po chvíli bádání jsem objevil způsob, jak tuto poštu eliminovat a byť je mi jasné, že řešení není univerzální, mohlo by vám pomoci alespoň k ilutraci možností, kterých se dá za pomoci transportních pravidel dosáhnout.

Představme si následující konfiguraci:

  • mx1: MS Exchange 2010 s MS Forefront for Exchange 2010
  • mx2: linux sendmail (absolutně bez jakéhokoliv filtrování příchozí pošty)

Přičemž největším problémem je větší množství nevyžádané pošty v azbuce.

Protože komunikace s žádným partnerem neprobíhá v azbuce, úkol zněl odfiltrovat veškerou příchozí komunikaci obsahující azbuku.

Po prozkoumání hlaviček doručených emailů se nabízelo několik řešení. Protože všechny emaily byly doručeny z nechráněného mx2 serveru, první zamýšlené řešení spočívalo vypnout mx2 server a nechat všechno pouze na MS Exchange a MS Forefront, ale po přehodnocení kvality ISP a několika dalších faktorů jsem tuto variantu nakonec neuskutečnil.

Dalším nadějným krokem bylo transportním pravidlem filtrovat příchozí emaily a ty třídit podle kontent typu/charsetu z hlavičky (obsahuje-li koi-8 či jiný definovaný). Tato varianta se jevila jako elegantní a přesně taková jakou jsem hledal, nicméně nefunkční. Po nastavení pravidla byla nevyžádaná pošta stejně doručována dál. Po bližším zkoumání jsem zjistil, že transportí pravidla neumějí vyhledávat v hlavičkách za středníkem - Content-Type: text/html; charset="ISO-8859-1" to znamená, že v transportním pravidle umíme identifikovat Content-Type, ale nikoliv již charset.

Po selhání předchozího pokusu jsem problém na chvíli odložil s nadějí objevení nečeho jiného později. Prošel jsem opět všechny hlavičky a hledal něco, co by emaily spojovalo a našel. Všechny emaily, co jsem měl k dispozici byly odeslány z domény *.ru . Jak jsem v úvodu zmínil, žádná naše komunikace neprobíhá v azbuce, a proto i další pokus o vyřešení směřoval zpět k transportním pravidlům. Založil jsem si testovací email na .ru doméně a vytvořil pravidlo s regulárním výrazem říkajícím, že všechny emaily odeslané z .ru domén pro začátek odfiltruji do karanténové schránky k další analýze.

Exchange_1 Exchange_2

Set-TransportRule -Identity 'Filter messages from unwanted TLD (.ru, .ua,..)' -Name 'Filter messages from unwanted TLD (.ru, .ua,..)' -Comments '' -FromAddressMatchesPatterns '(.*).ru$','(.*).ua$'

Od 1. dne aktivity tohoto pravidla jsem takto odfiltroval více než 300 emailů které by jinak skončily v uživatelských schránkách.

Outlook_1

Samozřejmě vím, že tímto pravidlem filtruji i emaily nepsané v azbuce, ale přesto je pro mé účely plně v pořádku. Jestli řešíte podobný problém, můžete pravidlo zkusit aplikovat. A v případě, že byste věděli, jak pravidla nastavit, aby filtrovala i podle charsetu, můžete se podělit v komentářích.

- Michal Jakoubě