Selectief greylisten voor mailservers

26/12/2006

De bergen spam die we dagelijks tegenhouden, is enorm. Op sommige van onze mailservers blokkeren we tot 95% van alle mail die binnenkomt. Toch blijft er een (te) grote hoeveelheid rommel zijn weg vinden naar de mailboxen van onze klanten. Zowel collega Bernard als ik schreven er vroeger al over.

Een essentieel onderdeel van elke anti-spam oplossing en een eerste line of defense zijn ongetwijfeld de blacklists. Dit zijn lijsten van mailservers die heel vaak door spammers gebruikt worden. Je hebt twee soorten lijsten: de defensieve die enkel mailservers opnemen waarvan ze 99% zeker zijn dat ze enkel door spammers gebruikt worden, en lijsten die iedereen opnemen waarvoor ook maar één spamklacht binnenkomt. De eerste hebben uiteraard het nadeel dat ze heel wat spam niet zien, als je de tweede gebruikt, riskeer je dat je legitieme mails blokkeert. Zo staan bv. de mailservers van Belgacom Skynet nogal vaak op die lijsten.

Een techniek die vaak gebruikt wordt, is greylisting. We hebben kunnen vaststellen dat heel wat spam tegenwoordig via geïnfecteerde Windows pcs komt, die spam versturen zonder dat de eigenaar van de computer door heeft dat zijn pc reclame maakt voor pillen of obscure aandelen. De programma’s die op die pcs de spam versturen, hebben geen volwaardige mailserver aan boord, en doen niet echt veel moeite om hun spam betrouwbaar te versturen. Als ze een mail proberen versturen, en de mailserver van de bestemmeling antwoordt met een “tijdelijke” fout, proberen ze niet later opnieuw, zoals een normale mailserver dat wel zou doen. Als we nu een databank bijhouden van alle mailservers die proberen connecteren naar onze mailservers, en we ze de eerste maal een tijdelijke error geven, kunnen we een heel deel van de spam tegehouden. De echte mailservers zullen de tijdelijke error begrijpen, de mail bewaren, en enkele minuten later opnieuw proberen. Spam-mailers zullen maar 1 keer proberen, en niet opnieuw proberen.

Er zijn twee grote nadelen aan greylisting. Vooreerst vertraagt het mails. Als je een mail stuurt naar een klant of leverancier over een probleem, dan verwacht je dat je mail binnen de 3 minuten toekomt. Bij greylisting worden de mails voor een niet te controleren tijd vertraagt. Het hangt immers van mailserver tot mailserver af wanneer die opnieuw zal proberen connecteren. Sommige proberen na 10 seconden opnieuw, andere na 5 minuten, anderen slechts na 5 uren. Het tweede nadeel is dat een aantal grotere isps mail-clusters gebruiken met soms wel 20 uitgaande mailservers. Afhankelijk van de instellingen kan het gebeuren dat een mail de eerste keer door serverA, de tweede maal door serverB wordt aangeboden, elk met een verschillend adres. De greylisting service ziet niet onmiddellijk dat het dezelfde mail is, met dezelfde mailserver.

Sinds enkele dagen draai ik voor een paar testdomeinen een “tussenoplossing”, die de voor- en nadelen van greylisting en agressieve blacklists combineert. We gaan selectief gaan greylisten. Als een mailserver probeert te verbinden met onze test-mailserver, wordt eerst gekeken welk besturingssysteem de andere mailserver gebruikt. Heel veel van alle Windows mailservers die proberen verbinden met onze mailservers, zijn immers geïnfecteerde windows-pcs die enkel spam versturen. Vervolgens wordt nagegaan of je ip op een hele waslijst blacklists staat. Niet enkel de defensieve, maar ook de agressieve blacklists worden geraadpleegt. Staat de mailserver op geen enkele blacklist, en is het geen Windows pc, dan aanvaarden we je mail, en gaat die gewoon door naar de volgende stap in het anti-virus/anti-spam verhaal.

Is de zender wel een Windows PC, of staat het ip op één van de blacklists, dan wordt die gegreylist. De zender krijgt dan een tijdelijke error van de mailserver, en moet het later opnieuw proberen, waarbij de mail zonder probleem aanvaard wordt.

Deze opstelling biedt het voordeel dat normale, legitieme mail niet vertraagd wordt, dat we indirect toch gebruik maken van de agressieve blacklists, en dat klassieke greylisting gebruikt wordt voor Windows of geblackliste mailservers. Eerlijk gezegd ben ik verbaasd van het resultaat. Dit blijkt een super interessante techniek te zijn die heel wat spam tegenhoudt. Een paar cijfers voor een paar kleine domeinnamen voor gisteren, 25 december.

  • Er werden 829 pogingen ontvangen door de mailserver.
  • In totaal werden er 647 (78%) doorgestuurd naar de greylisting service.
  • Daarvan waren er 68 (11%) die op één of meerdere blacklists staan
  • en waren er 579 (89%) mails afkomstig van Windows mailservers.
  • Van de 647 ge-greylistte mailservers, zijn er slechts 6 (minder dan 1%) die hun mail keurig opnieuw aanboden, en dus misschien geen spam zijn.

Mijn test was maar kort, en maar met een paar domeinnamen, maar de resultaten zien er alvast veel belovend uit.


Er zijn 12 reacties op dit artikel:

  1. Serge van Ginderachter says:

    23/07/2007

    Zijn "Window servers" ook "Windows PC's" in jou definitie? Als de mail van een Exchange server komt, kan je wellicht ook zonder meer de mail aanvaarden.

  2. Frank says:

    23/07/2007

    Momenteel neemt ie "alle windows versies", ook 2003 server enz. Exchange servers worden momenteel gegreylist, dat klopt. Velen ervan hebben echter de gewoonte om onmiddellijk opnieuw te proberen zonder cool-off tijd. Als we het in productie nemen voor alle klanten, zal ik waarschijnlijk Windows 2003 server whitelisten als OS.

    Ik merkte trouwens op je site het lijstje blacklists dat jij gebruikt. Een paar ervan zijn heel agressief en zou ik persoonlijk niet gebruiken om te blocken. Zo staan de Belgacom/Skynet mailservers regelmatig op bl.spamcop.net.

  3. Steven says:

    23/07/2007

    Wat je ook kan doen is die grotere ISP's te gaan inventariseren. De Belgische zijn vrij simpel bij te houden. Dit gaat wel wat in tegen het greylisting principe.
    <br /><br />
    Er is nog een mogelijkheid. Naarmate het aantal gehoste domeinen toeneemt is de kans groter dat er van verschillende servers mail verstuurt wordt hoe groter de database. Hoe minder een laatkomer van een mail zal voorkomen. Neem hiermee de factor tijd en na enkele maanden zal er een tamelijk stabiele database aangemaakt worden.
    Helaas... Een bedenking die ik mij net maak tijdens het typen van deze reactie. Wanneer er "massaal" veel domeinen gehost worden is de kans groter dezelfde spamserver zal proberen contact op te nemen. Waarschijnlijk is deze kans wel verwaarloosbaar.

  4. Peter Dedecker says:

    23/07/2007

    Cool!

    Zouden ze beter op UGent ook doen, daar doen ze nu enkel greylisting wat soms nogal ferm vertragend werkt.

  5. Frank says:

    23/07/2007

    @Steven: klopt, de grote Belgische/USA/... isps whitelist je best. Als je de gekende mailservers van Telenet, Skynet, GMail en Hotmail whitelist, heb je al heel wat mail. Ivm servers die veel domeinen hosten: ik ga ervan uit dat de isps die ik whitelist wel voldoende clue hebben om hun spammende klanten snel genoeg af te sluiten. Bovendien whitelist ik enkel de SMTP servers van die isps, niet de webservers enz.

    @Peter: ik weet dat een paar systeembeheerders daar mijn blog lezen. Bovendien zie ik er eentje later deze week, ik zal hem mijn bevindingen zeker doorgeven :)

  6. Jo says:

    23/07/2007

    Hetgeen wij doen is greylisting dmv enerzijds enkele publieke lijsten, maar die zijn nooit van doorslaggevend belang, maar voornamelijk door reputatie lijsten die we zelf automatisch aanleggen. Bij connecties van nieuwe IP's wordt de mail gescand en bewaren we de reputatie van het nieuwe IP adres. Dat geeft een veel beter resultaat. Momenteel zien we een reductie van zo'n 40%; voor filtering wel te verstaan.

    Jo
    IN-MX.COM

  7. Bart says:

    23/07/2007

    Greylisting selectief toepassen is een interessant idee. Ik doe iets gelijkaardig met reputatiescores: gekende spammers worden afgeblokt, twijfelgevallen worden vertraagd (max aantal berichten/tijd) en de rest wordt gewoon doorgelaten. Dat houdt al 70a80% tegen, een hoop minder werk voor de content filtering.

    Ik heb een afkeer van greylisting omdat ik er al regelmatig last van heb gehad, meestal omdat mails niet snel genoeg werden afgeleverd. Het globaal toepassen zou ik niet graag doen, zeker niet bij bedrijven waar de snelheid van mail vaak erg belangrijk is.

    Hoewel ik er geen grote fan van ben, gebruik ik greylisting wel op m'n privé server gewoon omdat het snel te configureren is en toch heel wat spam tegenhoudt.
    Welke software gebruiken jullie om dit soort configuratie te kunnen maken?

  8. Serge van Ginderachter says:

    23/07/2007

    @Frank: ja, zo goed ken ik die blacklists allemaal niet; 't is enkel op mijn speelservertje, en ik monitor wel geregeld wat er geblokeerd wordt, en dat valt best wel mee, in mijn geval.
    Waar ik het moeilijker mee heb zijn "reject_non_fqdn_hostname reject_unknown_hostname reject_invalid_hostname" op sender en helo restrictions - in theorie geen probleem, in de praktijk moet ik geregeld iets whitelisten

  9. Frank says:

    23/07/2007

    @Bart: Postfix MTA, een klassieke greylister (ik denk bij ons gld) via het postfix policy daemon princiepe, p0f voor de OS-fingerprinting en marbl om blacklists te checken de de p0f service te raadplegen en dan naar de greylister te sturen.

  10. Bart says:

    23/07/2007

    @Frank: Thanks, ik had gezocht op internet en had zo'n vermoeden dat het marbl was.

    Ik zou het nog verder willen uitbreiden zodat ook systemen met ontbrekende of foutieve reverse dns door de greylisting worden gestuurd. Berichten afkomsting van adressen zonder reverse dns zijn grotendeels spam maar regelmatig zit er iets nuttig tussen. Door die mails te vertragen leren de admins misschien dat reverse DNS tamelijk belangrijk is voor mailservers ;)

    Wat ik me wel afvraag is de performantie van dit soort opstellingen. Marbl bevat al 13 rbls, dus per inkomende verbinding kom je al snel aan 15 queries. Dat telt snel door.

  11. Frank says:

    23/07/2007

    Bart,

    Ik heb nog geen uitgebreide performantietesten gedaan met *veel* domeinen of grote hoeveelheden spam (dat is voor de komende weken), maar ik heb de indruk dat 10 - 15 dns-queries een veel kleinere performantie-impact heeft dan al die berichten gaan scannen met deftige anti-spam scanners. Het doel van die greylisting is net ervoor te zorgen dat je heel wat spam berichten niet moet gaan scannen.

    Bovendien kan je heel wat dns-based blacklists lokaal gaan slaven (al dan niet voor een fee) zodat je lookups een pak sneller gaan.

  12. Bart says:

    09/01/2008

    anno 2008 is spam nog steeds een groot probleem. Toch kan je ook de lol er wel in zien hoor! Vandaag las ik er een:
    'Viagra for a Elephant size but a Mouse price'.
    fantastisch toch?