← Alle berichten

E-mailspam bestrijden met AI: als traditionele filters tekortschieten

Op deze pagina

Ik gebruik al jaren Fastmail. Briljante dienst, redelijke prijs, geen advertenties of tracking. Maar de spamfilters? Enorm wisselvallig.

Gewone spam is het probleem niet. Die vangt Fastmail prima af. Kloppen DKIM- of SPF-records niet? Geblokkeerd. Domeinen op de zwarte lijst? Gefilterd. Dat werkt allemaal.

Het probleem is de rest die erdoorheen komt. Een phishingmail van een echt gmail.com-adres die zich voordoet als Netflix. Een marketingcampagne van een bedrijf waar ik nog nooit van gehoord heb en dat toch mijn e-mailadres heeft. Die slagen voor alle technische controles, met nette authenticatie en een schone afzenderreputatie, maar het blijft ongewenste rotzooi in mijn inbox.

Het moderne spamprobleem

Dit komt er regelmatig binnen:

  • “We hebben je website opnieuw ontworpen”-spam van wat betrouwbare bureaus lijken
  • SEO-bedrijven die beloven mijn ranking te verbeteren
  • Marketingmails waarvoor ik me echt nooit heb aangemeld
  • Nieuwsbriefspam die professioneel is vormgegeven maar totaal irrelevant is

Traditionele spamfilters slaan hier niet op aan. De mails komen van geldige domeinen of zelfs van gmail.com- en outlook.com-adressen. Ze hebben correcte SPF- en DKIM-records. De grammatica is perfect. Naar alle technische maatstaven zijn het legitieme e-mails, alleen wil ik ze helemaal niet.

En nu wordt het interessant: 89% van de kwaadaardige e-mails glipt voorbij SPF-, DKIM- en DMARC-authenticatie1. Die authenticatieprotocollen moesten e-mailfraude oplossen, maar spammers hebben zich aangepast. Ze gebruiken nu legitieme infrastructuur.

Wat je eigenlijk moet filteren

Het probleem is niet alleen “minder spam”. Het ligt genuanceerder:

Phishing: frauduleuze e-mails met links die niet bij het opgegeven merk horen. Ik krijg een gestage stroom nep-mails van “Netflix” en “Spotify” waarin ik mijn betaalgegevens moet bijwerken. Ze worden beter: nette opmaak, overtuigende taal, domeinen die bijna kloppen. Traditionele filters vangen er een paar, maar de geraffineerde glippen erdoorheen. Fastmail vangt deze helemaal niet af.

Traditionele spam: domeinvervalsing, waarbij de mail zegt van het ene domein te komen maar van een ander afkomstig is. SPF/DKIM-controles pakken dit makkelijk genoeg aan. Niet het echte probleem.

Junk: hier valt alles uit elkaar. E-mails die er legitiem uitzien, van echte domeinen, zelfs van gmail.com- of outlook.com-adressen, maar die gewoon ongevraagde marketingrotzooi zijn. “We zagen dat je website een nieuw ontwerp nodig heeft.” “Laat ons je SEO regelen.” “Exclusieve aanbieding voor ondernemers.” Ze slagen voor authenticatie omdat ze via echte infrastructuur komen. Ze zijn grammaticaal correct. Ze zien er professioneel uit. Maar ik heb er nooit om gevraagd, me nooit aangemeld, en ze vervuilen mijn inbox. Hiervoor heb je inhoudsanalyse nodig, niet alleen een blik op de headers.

De cijfers vertellen het verhaal

De omvang van dit probleem is enorm. Zo’n 47% van al het e-mailverkeer is spam in 20242. Dat zijn 160 miljard spammails per dag wereldwijd3. Alleen Gmail blokkeert 15 miljard spammails per dag met AI-filters, en haalt daarmee een vangstpercentage van 99,9%4.

Maar het wordt nog gekker: Google blokkeerde in 2024 265 miljard niet-geauthenticeerde e-mails5, omdat die makkelijk te herkennen zijn. De geauthenticeerde spam? Die is lastiger.

Slechts 33,4% van de top 1 miljoen domeinen heeft DMARC-records, en daarvan gebruikt 57,2% het tandeloze p=none-beleid dat niets doet6. Dat betekent dat 85,7% van de domeinen geen effectieve DMARC-bescherming heeft. Spammers weten dat en buiten het meedogenloos uit.

Maar het wordt nog gekker: 89% van de kwaadaardige e-mails glipt voorbij SPF-, DKIM- en DMARC-authenticatie1. Die authenticatieprotocollen moesten e-mailfraude oplossen, maar spammers hebben zich aangepast. Ze gebruiken nu legitieme infrastructuur.

De cijfers liegen er niet om. Kijk je naar wat er echt doorheen komt, dan vertelt de verdeling van de spam een interessant verhaal:

De aanpak van Fastmail (en waarom die niet genoeg is)

Fastmail gebruikt SpamAssassin in combinatie met hun eigen Vade-contentfilter7. Het is een degelijke opzet. SpamAssassin bestaat al eeuwen en werkt goed tegen traditionele spam. Het Vade-filter voegt patroonherkenning toe en past de regels steeds aan op actuele dreigingen.

Maar hier gaat het mis: de leerfunctie werkt omgekeerd. Gebruik je een mailclient zoals iOS Mail, dan kun je niet gewoon op “Spam” tikken om het filter te trainen. In plaats daarvan moet je8:

  1. Een speciale map aanmaken
  2. Naar Settings → Folders gaan en “Scan this folder daily and learn any new messages” aanzetten
  3. De map instellen om te leren “as spam”
  4. Spam handmatig daarheen verplaatsen

Ik wil de webclient van Fastmail niet gebruiken. Ik wil hun hosting met mijn eigen mailclient. Door dat gedoe train ik het filter gewoon… niet. En dan wordt het filter dus nooit beter.

Waarom AI hier echt zinvol is

Traditionele spamfilters werken met regels en patronen. Maar in dit grijze gebied moet je context en bedoeling begrijpen, precies waar grote taalmodellen goed in zijn.

AI kan goed met dubbelzinnigheid omgaan. Het leest een mail en snapt of het een echte zakelijke aanvraag is of weer een standaard “wij kunnen je website herontwerpen”-pitch. Het herkent druktactieken, ziet wanneer de context niet klopt en pikt de details op die regelgebaseerde systemen missen.

Het bouwen

Ik wilde het idee testen voordat ik me aan infrastructuur bond. Dus exporteerde ik een paar honderd .eml-bestanden uit mijn Fastmail-inbox en bouwde een testopzet met Ollama, waarop lokaal Llama 3.1 8B draait.

Het proces had twee delen:

Handmatig labelen: ik ging door mijn geëxporteerde e-mails en deelde ze zelf in: persoonlijk, transactioneel, nieuwsbrief, marketing, spam, phishing, enzovoort. Zo kreeg ik een waarheid om tegen te testen.

Het model beoordelen: ik liet dezelfde mails door de LLM lopen met een zorgvuldig opgestelde prompt die elke mail moest indelen en scoren. Daarna vergeleek ik de indelingen van het model met mijn eigen labels om te zien waar het slaagde en waar niet.

Zo kon ik de prompt verfijnen zonder API-tegoed te verbranden of met deployment te rommelen. Zodra ik boven de 85% nauwkeurigheid zat en onder de 5% valse positieven, wist ik dat uitrollen de moeite waard was.

De productieversie is een Cloudflare Worker die:

  1. Binnenkomende mail onderschept via Cloudflare Email Routing
  2. Afzender, onderwerp en inhoud haalt
  3. De inhoud analyseert met @cf/meta/llama-3.1-8b-instruct via Workers AI
  4. De mail indeelt en een spamscore geeft (0-10)
  5. Headers toevoegt: X-Wh-Spamscore, X-Wh-Category en X-Wh-Reasoning
  6. Doorstuurt naar Fastmail met de headers intact

Ik gebruik Llama 3.1 8B omdat het snel is (inferentie in minder dan een seconde) en goed genoeg het verschil ziet tussen echte communicatie en marketingrotzooi.

Categorieën en scores

De AI deelt e-mails in tien typen in:

  • personal: persoonlijke correspondentie
  • transactional: orderbevestigingen, wachtwoordresets, bonnetjes
  • newsletter: echte nieuwsbrieven waarop ik me heb aangemeld
  • marketing: reclamemails, verkooppraatjes
  • social: meldingen van sociale media
  • automated: systeemmeldingen, monitoringalerts
  • phishing: vermoedelijke diefstal van inloggegevens
  • scam: snel-rijk-schema’s, dringende betaalverzoeken
  • spam: algemene ongewenste bulkmail
  • suspicious: onduidelijke bedoeling, maar mogelijk kwaadaardig

Spamscores lopen van 0 tot 10:

  • 0-2: schone, legitieme mail
  • 3-4: waarschijnlijk legitiem, maar commercieel
  • 5-6: verdachte kenmerken
  • 7-8: waarschijnlijk phishing of oplichting
  • 9-10: zeker een bedreiging

Eerste resultaten

Ik heb dit nog niet in productie genomen, maar ik heb het wel losgelaten op recente berichten in mijn inbox door de mails uit Mac Mail te exporteren.

Dit zijn de voorlopige resultaten:

CategorieAantalGem. scoreValse positieven
Persoonlijk3260,881
Transactioneel7080,2810
Nieuwsbrief4621,552
Marketing3532,919
Sociaal2720,629
Geautomatiseerd1631,839
Phishing2729,321
Oplichting828,692
Spam547,630
Verdacht275,762
Totaal2.719-45

De implementatie

De worker regelt het onderscheppen van mail, de AI-analyse en het doorsturen. Belangrijkste kenmerken:

  • Haalt de inhoud slim uit de mail (kan overweg met multipart, base64 en quoted-printable)
  • Kapt af op 2.500 tekens voor de snelheid (met behoud van volledige links en zinnen)
  • Uitgebreide prompt engineering om de AI-analyse te sturen
  • Robuuste foutafhandeling: faalt de AI, dan gaat de mail door met veilige standaardwaarden
  • Controleert de uitvoer zodat scores tussen 0 en 10 blijven en categorieën geldig zijn

De prompt legt alle categorieën, scoreregels en waarschuwingssignalen uit. Hij benadrukt weinig valse positieven bij persoonlijke en transactionele mails. Het laatste wat je wilt, is dat een echte mail als spam wordt gemarkeerd.

Ik heb geen stap ingebouwd om prompt-injectieaanvallen te herkennen, maar ik denk dat een commerciële implementatie die beveiligingslaag wel nodig heeft.

Waarom dit ertoe doet

Google en Yahoo eisen nu DMARC van bulkverzenders (5.000+ e-mails per dag)9. Ze hanteren een drempel van 0,3% spamklachten10. Authenticatie is nu de basis.

Maar authenticatie alleen is niet genoeg. 89% van de kwaadaardige e-mails komt door de authenticatiecontroles1. Spammers gebruiken legitieme infrastructuur. Ze kennen de regels en spelen daarbinnen.

Het ontbrekende stuk is inhoudelijke controle. Begrijpen wat een mail echt probeert te doen, niet alleen waar hij vandaan komt. Daar komt AI om de hoek kijken.

Ik heb de repository op GitHub gezet: willhackett/email-filtering, met instructies om hem zelf uit te rollen en tegen je eigen inbox te testen.

Footnotes

  1. Keepnet, 2025 Phishing Statistics, August 2025 ↩ ↩2 ↩3

  2. Mailmodo, 23 Email Spam Statistics to Know in 2025, March 2025 ↩

  3. EmailToolTester, Spam Statistics 2025, October 2024 ↩

  4. SQ Magazine, Email Spam Statistics 2025, September 2025 ↩

  5. Keepnet, 2025 Phishing Statistics, August 2025 ↩

  6. DMARC Checker, SPF, DKIM, and DMARC in 2024: Analyzing the Top 1M Domains, 2024 ↩

  7. Fastmail, Spam filtering ↩

  8. Fastmail, Improving spam protection ↩

  9. PowerDMARC, Google and Yahoo Email Authentication Requirements 2025, August 2025 ↩

  10. Sinch Mailgun, State of email deliverability 2025, 2025 ↩