Zoals waarschijnlijk bij iedereen wel bekend is is het percentage spam dat je ontvangt tegenwoordig vaak meer als de normale mail die je ontvangt. Gelukkig heb je hier anti-spam oplossingen voor, bijvoorbeeld de Fortimail van Fortinet of de IMSS van Trend Micro.
Exchange 2007 bevat een aantal anti-spam agents om spam te voorkomen. Deze zijn standaard actief op de Edge Transport server maar je kunt deze ook activeren op de Hub Transport server d.m.v. onderstaand commando uit te voeren vanuit Powershell:
./install-AntispamAgents.ps1
Dit commando dient uitgevoerd te worden vanuit de scripts directory, deze kun je vinden in de Exchange installatie directory.

Wanneer dit commando is uitgevoerd dien je de Transport services te herstarten, dit kan door onderstaand commando uit te voeren:
Restart-Service MSExchangeTransport

Nadat dit is uitgevoerd kun je de Exchange Management Console opstarten, klik vervolgens op Organizational Configuration en daarna op HUB Transport. Je ziet dat er dan een tabblad is bijgekomen genaamd Anti-Spam klik hier op

Je ziet dat er diverse anti-spam agents zijn:
- content filtering
- IP Allow list
- IP Allow list providers
- IP Block list
- IP Block list providers
- Recipient filtering
- Sender filtering
- Sender ID
- Sender reputation
Onderstaand bespreken we de agents stuk voor stuk:
Content Filtering
In deze agent kun je mails filteren op woorden die je opgeeft in de agent. Zo kun je bijvoorbeeld op het woord Make Money Fast filteren zoals onderstaand te zien is. Maar stel dat je zaken doet in Hovercrafts dan wil je uiteraard niet dat mails met dit woord erin, eruit worden gefilterd. Dit kan ook door het betreffende woord aan het bovenste gedeelte van het scherm toe te voegen, genaamd Messages with these words or phrases will not be blocked.

Naast de laatst genoemde opties is het ook mogelijk om bepaalde mail-adressen uit te sluiten van deze filter. Dit kan op het tabblad Exceptions ingesteld worden

Als laatste stap dient de action ingesteld te worden, dit kunnen er drie zijn; delete, reject en quarantine. Per actie kan opgegeven worden wanneer deze moet worden uitgevoerd. Dit gebeurd afhankelijk van het SCL (Spam Confidence Level), dit wordt bepaald door de IMF (Intelligent Message Filter) i.c.m. de ingestelde woorden. Indien je gaat experimenteren met de filter door bijvoorbeeld al op een lagere SCL waarde mails te markeren als spam dan zou ik adviseren om dit eerst te testen door deze in quanrantaine te plaatsen. Dit voorkomt dat zogenaamde false positives mails die geen spam zijn verdwijnen.

Powershell commando’s:
Set-ContentFilterConfig -SclQuarantineEnabled:$true -SclRejectEnabled:$true -SclDeleteEnabled:$true -SclQuarantineThreshold 5 -SclRejectThreshold 6 -SclDeleteThreshold 8 -QuarantineMailbox spamQ@contoso.com -RejectionResponse ”Message rejected due to content restrictions” -AuthenticatedMessageBypassEnabled:$true -PuzzleValidationEnabled:$true -BypassedRecipients user1@contoso.com, user2@contoso.com
De content filter wordt ingeschakeld met de volgende opties:
- Quarantaine wordt geactiveerd en alle mails met een SCL van 5 worden hierin geplaatst, de quarantaine box heeft als adres spamQ@contoso.com
- Reject wordt geactiveerd en alle mails met een SCL van 6 worden geweigerd, afzenders die worden geweigerd krijgen de volgende melding terug ”Message rejected due to content restrictions”.
- Delete wordt geactiveerd en alle mails met een SCL van 8 worden gedelete
- Wanneer een mail gericht is aan user1/user2@contoso.com wordt de filter niet toegepast.
- Het zet Autenticated Message Bypass aan
- Het zet Puzzle Validation aan.
Get-ContentFilterConfig haalt de huidige instellingen op van de Content filter agent
Add-ContentFilterPhrase -Phrase:”Dit is een mail die je niet wil ontvangen” -Influence:BadWord
Bovenstaand commando voegt “Dit is een mail die je niet wil ontvangen” toe aan de lijst met niet toegestane woorden/zins-delen.
Get-ContentFilterPhrase haalt de huidige instellingen op van de Content filter phrase agent
Remove-ContentFilterPhrase -Identity “Dit is een mail die je niet wil ontvangen”
Bovenstaand commando verwijdert “Dit is een mail die je niet wil ontvangen” vande lijst met niet toegestane woorden/zins-delen.
IP Allow List
Zoals de naam al zegt kun je met deze agent IP-adressen white-listen. Dit kan bijvoorbeeld gebruikt worden wanneer een zakenrelatie op een black-list staat maar je mail toch door wil laten. Door op Add drukken kun je een IP-adres of zelfs een hele IP-reeks toevoegen.

Powershell commando’s:
Set-IPAllowListConfig -InternalMailEnabled:$true -DomainController ad-server.test.nl
Met bovenstaand commando wordt de DC aangegeven waar de configuratie van de IP Allow list moet worden weggeschreven.
Get-IPAllowListConfig haalt de huidige instellingen op van de IP Allow list agent
Add-IPAllowListEntry -IPRange:192.168.0.1/24
Voegt de IP-reeks 192.168.0.1/24 toe aan de IP Allow list
Get-IPAllowListEntry haalt de huidige instellingen op van de betreffende IP Allow list entry
Remove-IPAllowListEntry -Identity <Integer> verwijdert het IP-adres/de IP-reeks van de IP Allow list waar de integer de id van de regel is.
IP Allow List Providers
Naast RBL providers zijn er ook white-list providers. Dit zijn providers die lijsten aanbieden met veilige IP-adressen. Op de pagina van SpamLinks staat een overzicht van Whitlist providers.

Powershell commando’s:
Add-IPAllowListProvider -Name:Example -LookupDomain:Example.com
Bovenstaand commando voegt Allow List Provider toe met de naam Example en domeinnaam/adres example.com
Get-IPAllowListProvider haalt de huidige instellingen op van de IP Allow list provider
Set-IPAllowListProvider -Identity Example.com -AnyMatch:$true
Bovenstaand commando zorgt ervoor dat elke mail die gecontroleerd wordr bij de Allow List provider example.com ondanks de code die de Allow List Provider teruggeeft hetzelfde wordt behandelt.
Remove-IPAllowListProvider -Identity Example.com
Verwijdert de allow list provider example.com uit de IP Allow List Provider agent.
Test-IPAllowListProvider -IPAddress 192.168.0.1 -Provider ExampleProviderName
Met dit commando kan er een lookup van IP-adres 192.168.0.1 gedaan worden bij in dit geval ExampleProviderName
IP Block List
De agent bevat IP-adressen waarvan de connectie geweigerd moet worden. Het kan bijvoorbeeld voorkomen dat je een bepaald IP-adres of zelfs een hele IP-reeks wil blokkeren omdat je er veel spam of virussen van ontvangt. Vaak is het echter makkelijker om een RBL provider te gebruiken omdat de handmatige IP Block list veel tijd vergt om bij te houden.

Powershell commando’s:
Set-IPBlockListConfig -InternalMailEnabled:$true -DomainController ad-server.test.nl
Met bovenstaande commando wordt de DC aangegeven waar de configuratie van de IP Block list moet worden weggeschreven.
Get-IPBlockListConfig haalt de huidige instellingen op van de IP Blocklist agent
Add-IPBlockListEntry -IPRange:192.168.0.1/24
Voegt de IP-reeks 192.168.0.1/24 toe aan de IP Block list
Get-IPBlockListEntry haalt de huidige instellingen op van de betreffende IP Block list entry
Remove-IPAllowListEntry -Identity <Integer> verwijdert het IP-adres/de IP-reeks van de IP Block list waar de integer de id van de regel is.
IP Block List providers
In deze agent kunnen de RBL providers toegevoegd worden. Dit zijn instanties die lijsten bijhouden van IP-adressen waar bijvoorbeeld veel spam van afkomstig is of servers die zijn geconfigureerd als open-relay. Op deze pagina een groot overzicht van de diverse providers.

Naast dit verschil is er in deze agent ook nog een extra tab aanwezig exceptions deze kan weer gebruikt worden om bepaalde IP-adressen uit te sluiten van de agent.
Powershell commando’s:
Add-IPBlockListProvider -Name:Example -LookupDomain:Example.com -RejectionResponse “Originating IP addressed matched to Example.com’s IP Block List provider service”
Bovenstaand commando voegt een Block List Provider toe met de naam Example en domeinnaam/adres example.com. Wanneer een IP adres hierop voorkomt krijgt de verzender de volgende melding terug: “Originating IP addressed matched to Example.com’s IP Block List provider service”
Get-IPBlockListProvider haalt de huidige instellingen op van de IP BLock List Provider agent
Set-IPBlockListProvider -Identity Example.com -AnyMatch:$true
Bovenstaand commando zorgt ervoor dat elke mail die gecontroleerd wordt bij de Block List provider example.com ondanks de code die de Block List Provider teruggeeft hetzelfde wordt behandeld.
Remove-IPBlockListProvider -Identity Example.com
Verwijdert de block list provider example.com uit de IP Allow Block Provider agent.
Test-IPBlockListProvider -IPAddress 192.168.0.1 -Provider ExampleProviderName
Met dit commando kan er een lookup van IP-adres 192.168.0.1 gedaan worden bij in dit geval ExampleProviderName
Recipient Filtering
Met recipient filtering kun je mails naar niet bestaande adressen al gelijk op de Hub Transport server blokkeren zonder dat deze in een mailbox terecht komen. Dit scheelt aardig wat ruimte, denk maar aan de expres verkeerde e-mail-adressen die worden gebruikt zoals administratornn@domain.com.
De agent heeft de mogelijkheid om de GAL als bron te gebruiken, deze wordt dus ook automatisch geupdate wanneer je een gebruiker toevoegd. Daarnaast is er nog een mogelijkheid om handmatig adressen in te vullen die je wil blokkeren, als echter de vorige optie aanstaat dan is dit niet nodig.

Powershell commando’s:
Set-RecipientFilterConfig -RecipientValidationEnabled:$true
Schakelt Recipient Filtering in en gebruikt de GAL om te kijken of het adres van de geadresseerde bestaat.
Set-RecipientFilterConfig -BlockListEnabled:$true -BlockedRecipients klaas@domein.com,pietje@domein.com
Kijkt of de mail is gericht aan klaas@domeincom of pietje@domein.com indien dit het geval is wordt de mail geblokkeerd
Get-RecipientFilterConfig haalt de huidige instellingen op van de Recipient Filtering agent
Sender Filtering
Indien je een bepaalde afzender wil blokkeren omdat je veel spam van het betreffende adres ontvangt. Dan kun je gebruik maken van sender filtering. Hierin kun je adressen toevoegen waarvan je geen mail wil ontvangen. Daarnaast bestaat er nog een extra mogelijkheid om e-mails waarvan de afzender leeg is te blokkeren. Afhankelijk van welke actie er is ingesteld op de tab action wordt de mail gereject of wordt de mail gekenmerkt als spam

Powershell commando’s:
Set-SenderFilterConfig -BlankSenderBlockingEnabled:$true -BlockedDomainsAndSubdomains *example.com -BlockedSenders klaas@domein.com,pietje@domein.com
Wanneer mail van het domein of een van de subdomeinen van example.com afkomstig is, wordt mail geblokkeerd. Wanneer mail afkomstig is van klaas@domein.com of pietje@domein.com worden deze afzenders ook geblokkeerd.
Get-SenderFilterConfig haalt de huidige instellingen op van de Sender Filtering agent
Sender ID
Met de sender ID kan voorkomen worden dat spoofing mails worden afgeleverd. Zodra een mail wordt afgeleverd bij de Hub Transport server zal deze de SMTP header uitlezen om vervolgens een query te doen in de DNS naar het betreffende domein. Er wordt dan gezocht naar een SPF record; in dit record staan alle IP-adressen waarvan mail van het betreffende domein afkomstig kan zijn.

Komt hierin niet het IP-adres voor dat in de SMTP header gevonden wordt, dan wordt het betreffende mailtje gereject, gedelete of gemarkeerd als spam.

Powershell commando’s:
Set-SenderIdConfig -SpoofedDomainAction Delete -BypassedRecipients klaas@domein.com,pietje@domein.com
Wanneer mail vanaf een gespoofed domein wordt verstuurd wordt de mail gedelete, behalve voor de adressen klaas@domein.com, pietje@domein.com
Get-SenderIdConfig haalt de huidige instellingen op van de Sender ID agent
Test-SenderID -IPAddress 213.144.234.221 -PurportedResponsibleDomain example.com
Met dit commando kun je handmatig controleren of het betreffende IP adres gebruikt mag worden om mail van example.com te verzenden.
Sender Reputation
Zoals in de beschrijving in de afbeelding al te lezen is, controleert deze agent of een mail afkomstig is van een open proxy. De Sender Reputation wordt o.a. bepaalde door onderstaande parameters
- helo/ehlo analyse
- reverse dns lookup
- analyse door de content filter om het SCL level te bepalen
- open proxy test

Op het tab-blad action kan de gevoeligheid van de filter ingesteld worden, daarnaast kan de duur van de blokkade ingesteld worden. Alle mails die namelijk aan de vereisten voldoen worden standaard 24 uur geblokkeerd. Daarnaast kunnen de volgende acties ingesteld worden:

Powershell commando’s:
Set-SenderReputationConfig -SrlBlockThreshold 8 -SenderBlockingEnabled:$true -SenderBlockingPeriod 24
Bovenstaand commando zorgt ervoor dat e-mails die de open proxy test niet doorstaan, worden geblokkeerd indien de SRL (Spam Reputation Level) 8 of hoger is. De tijd van de blokkade is 24 uur.
Get-SenderReputationConfig haalt de huidige instellingen op van de Sender Reputation agent
Het is een aardig lange tutorial geworden maar volgens mij zijn alle punten besproken. Mocht je toch nog meer over de commando’s willen weten, achter de Powershell commando’s zitten links naar de Technet pagina’s.