Kombinace Exchange serveru a předřazenych antivirů/antispamů postavených na bázi linuxu/SpamAssassinu/ClamAV antiviru/greylistingu je velmi častá a aspoň dle mého názoru velmi efektivní. Pro správné nastavení linuxových produktů je třeba předávat mezi platformami určité informace – minimálně jde o seznam inbound domén a dále o výpis všech adres všech SMTP enabled objektů, které v Exchange serveru existují. A to vše v ideálním případě automatizovaně bez zásahu lidské ruky.
Pokud není na Exchange serveru příchozí pošta pouze z jedné domény, vyplatí se zavést automatický export domén, jež jsou uvedeny v Recipient policies. Admin Exchange pak nemusí myslet na to, že po přidání další domény musí zkontaktovat admina linuxových AV/AS, aby si ten ručně zmodifikoval seznam inbound domén. Na druhou stranu, toto řešení je funkční pouze u instalací, u nichž se Recipient policies používají, není tak použitelné třeba u hostované Exchange, kde se jde alternativní cestou přes SMTP Event Sink.
Rozumný příkaz pro “meziprodukt” vypadá takto:
ldifde -d "cn=configuration,dc=<domain>[,dc=<domain>]" |
Výstup je následující:
dn: CN=Default Policy,CN=Recipient Policies,CN=DOLSBS,CN=Microsoft Exchange,CN=Services, |
Z toho se dá již velmi rozumně programově parsovat potřebné – začnu číst jednotlivé řádky a pokud je na začátku řetězec “gatewayProxy: smtp:@”, tak si dočtu zbytek. Je důležité nepoužívat case-sensitive porovnávání, protože SMTP: značí primární doménu, ze které se vytváří Reply-to adresy. Zapomenout se nesmí pochopitelně na odfiltrování pomocné interní domény – ve výše uvedeném případe jde o domena.local.
O způsobu generování všech existujících SMTP adres jsem již jednou psal. Pro AV/AS antiviry mohu zvolit třeba variantu s dsquery.
dsquery * forestroot -scope subtree -filter "(&(mail=*)(proxyaddresses=smtp:*))" |
Ukázka výstupu je taková – kvůli délce řádků jsem je musel zalomit a každý následující řádek odsadit o jeden úhoz zleva:
proxyaddresses |
Opět se jedná o dobře zpracovatelný tvar. Načtu postupně řádky, rozdělím do pomocného pole pomocí středníku a následně toto pomocné pole projdu a zkontroluji výskyt řetězce “smtp:” (opět pozor na case-sensitive). Ignorovat budu adresy končící na “@domena.local”. Výstupem bude požadovaný seznam všech SMTP adres s veřejně dostupnými doménovými názvy, tj. takové, které by pro greylisting měl předřazeny linuxový AV/AS systém znát.