Spam bestrijden met Bogofilter en KMail
Auteur: David P. James
Vertaling: Tom Verbreyt
Herziening 0.1
Copyright © 2004 KDE-nl team
In wat volgt wordt beschreven hoe je Bogofilter in KMail kan inzetten om mail van het ongewenste soort te onderscheppen.
Inleiding
De versie van KMail die KDE 3.2 vergezelt, voorziet een speciaal type filter: een filter action. Een actiefilter is een filter die enkel voor specifieke berichten in werking treedt; in tegenstelling tot gewone filters, is een actiefilter dus enkel van toepassing op afzonderlijke berichten. Op die manier kan je bepaalde berichten eenvoudig als spam (of ham) bestempelen.
Bogofilter installeren
De eerste stap is het installeren van een spamfilter naar keuze. Deze howto gaat over Bogofilter, dus dat kan ik je ten zeerste aanbevelen. Bogofilter is erg snel, en als spamfilter behoorlijk efficiënt, ook als het om nieuwere varianten van (gecamoufleerde) spam gaat: spam met lijsten van neutrale woorden of met rotzooi die in HTML-commentaar verborgen zit.
Hoe je Bogofilter best installeert, hangt af van de distributie die je gebruikt. Onder Debian zou iets als apt-get install bogofilter moeten volstaan. Het handige pakkettensysteem Apt is tegenwoordig ook voor rpm's beschikbaar, Mandrake heeft urpmi, voor Slackware is er bijvoorbeeld Swaret, Gentoo-gebruikers vinden ongetwijfeld hun we naar de juiste ebuild en als niets van het bovenstaande van toepassing is op jouw distributie, dan weet je waarschijnlijk zelf nog het best hoe je programma's installeert.
KMail instellen
Om te beginnen maak je een mailfolder in Maildir-formaat aan, die je "junk" (of "Spam" of iets gelijkaardigs) doopt. Maildir lijkt hier het aangewezen formaat, omdat een spamfolder meestal veel verkeer te dragen heeft, in beide richtingen. Gebruik je mbox, dan zal je de map regelmatig moeten comprimeren. Het is ook een goed idee om KMail via de eigenschappen van je spamfolder op te dragen om gelezen mail na een dag of twee te verwijderen.
Je kan nu de spam die je misschien nog hebt naar je nieuwe map verhuizen, maar dat hoeft niet per se. De map zal dienen om er de nieuwe, gefilterde spamberichten in te dumpen; daarvoor moet je vier filters aanmaken.
Filter 1: bogofilter
Deze filter zorgt ervoor dat nieuwe berichten eerst via Bogofilter gesluisd worden, om ze eventueel als spam te herkennen en markeren. Standaard voegt Bogofilter een berichtkop toe, X-Bogosity, die een Yes- of No-bepaling en een numeriek uitgedrukte graad-van-spammerigheid (spamicity statistic) tussen 0.000000 en 1.000000 bevat.
Gebruik voor deze eerste filter deze instellingen:
- filtercriteria:
- [X] komt overeen met al het volgende
- "X-Bogosity" bevat niet "Yes, tests=bogofilter"
- filterhandelingen:
- doorsluizen via "/usr/bin/bogofilter -ep"
- uitgebreide opties:
- dit filter toepassen [X] op inkomende berichten
Filter 2: bogofilter_zegt_spam
Deze filter moet lager (onder) de vorige komen in de filterhiërarchie van KMail. Zodra een bericht door Bogofilter als spam gemarkeerd is, zorgt onderstaande filter ervoor dat de X-Bogosity-berichtkop bekeken wordt, om spam van ham te scheiden. Wordt een bericht als spam bevonden, dan komt het in de spamfolder terecht. Je kan het bericht dan later nader onderzoeken; er wordt vanaf dit punt niet verder gefilterd.
- filtercriteria:
- [X] komt overeen met al het volgende
- "X-Bogosity" bevat "Yes"
- filterhandelingen:
- naar map verplaatsen "junk"
- bericht als ongelezen markeren
- uitgebreide opties:
- dit filter toepassen [X] op inkomende berichten
- [X] als dit filter overeen komt, verwerking hier stoppen
Spam wordt dus als ongelezen gemarkeerd. Zo zie je snel of je een bericht al eens nagekeken hebt. Vergissingen zijn immers altijd mogelijk. Als je een bericht definitief als spam wil markeren, komt de "Markeer alle berichten als gelezen"-knop goed van pas.
Filter 3: spam
Deze filter is een van de hogerop beschreven actiefilters. Je kan hem gebruiken om een bericht (of meerdere berichten) als spam te registreren, hetzij om de initiële Bogofilter-database aan te maken, hetzij om een foute beslissing van Bogofilter te corrigeren. In dat laatste geval zorgen onderstaande instellingen ervoor, dat de X-Bogosity-berichtkop verwijderd wordt, voor het bericht geregistreerd wordt.
- filtercriteria:
- [x] komt overeen met al het volgende
- <grootte in bytes> is groter dan "1"
- filterhandelingen:
- berichtkop verwijderen "X-Bogosity"
- doorsluizen via "/usr/bin/bogofilter -s" # registreert het bericht als ongewenst
- doorsluizen via "/usr/bin/bogofilter -ep" # optioneel; na de vorige stap zou de bogosity 1.000000 moeten zijn
- naar map verplaatsen "junk"
- bericht markeren als ongewenst
- uitgebreide opties:
- dit filter toepassen [X] op handmatige filterhandelingen # dit is belangrijk; laat de filter niet automatisch toegepast worden, maar enkel handmatig!
- pictogram voor dit filter: # optioneel; er is een speciaal icoontje voorzien voor spam
KMail kan een bericht ook als spam of ham (gewenste e-mail die misschien niet als dusdanig herkend wordt), maar op dit moment is er geen manier om die mogelijkheid te associëren met een specifieke actie. Dat maakt deze functionaliteit nogal nutteloos, maar de ontwikkelaars werken eraan, naar verluidt. Voorlopig kunnen de actiefilters volstaan.
Filter 4: geen_spam
Deze filter lijkt nogal op de vorige, maar deze keer gaat het erom, berichten als ham (niet-spam) te markeren.
- filtercriteria:
- [x] komt overeen met al het volgende
- <grootte in bytes> is groter dan "1"
- filterhandelingen:
- berichtkop verwijderen "X-Bogosity"
- doorsluizen via "/usr/bin/bogofilter -n" # registreert het bericht als gewenst
- uitgebreide opties:
- dit filter toepassen [X] op handmatige filterhandelingen # dit is belangrijk; laat de filter niet automatisch toegepast worden, maar enkel handmatig!
- pictogram voor dit filter: # optioneel; er is een speciaal icoontje voorzien voor gewenste berichten
Voor de twee laatste filters is het nuttig de juiste icoontjes te kiezen, omdat je ze kan toevoegen aan KMails werkbalk.
Het mooie aan de beschreven werkwijze is dat de laatste 2 filters het mogelijk maken om berichten bij Bogofilter te registreren als spam (of ham), zonder dat de gebruiker daarvoor de commandoregel moet trotseren. Al wat hij moet doen is een hoopje spam (of ham) selecteren en er filter drie (of vier) op loslaten. Je kan dus ook een hele map in één keer selecteren en er een filter op toepassen.
Opmerkingen over Bogofilter
Je kan Bogofilter zeggen dat het zijn spam-database moet bijwerken na elk bericht dat het onderzocht heeft, door middel van de -u-parameter. Het commando voor regel 1 zou dan bijvoorbeeld /usr/bin/bogofilter -epu luiden. Met die optie ingeschakeld zou Bogofilter een als spam bestempeld bericht ook als dusdanig in de database registreren, wat uiteraard als voordeel heeft, dat de database up-to-date gehouden wordt.
Er zijn echter ook wat nadelen aan verbonden. Het ligt voor de hand dat Bogofilters woordenlijst nooit zou ophouden te groeien, wat er op termijn toe zou kunnen leiden dat het bepalen van de bogosity van berichten steeds langzamer zou worden.
In KMail worden de twee actiefilters wat onduidelijk. Als Bogofilter een spambericht mist, dan heeft het de database bijgewerkt op basis van een foute beslissing; het bericht zou immers als ham geregistreerd zijn, terwijl het eigenlijk om spam zou gaan. Gelukkig is er een manier om zoiets recht te zetten: met de -N-parameter kan je de registratie van een bericht ongedaan maken; -Ns zorgt ervoor dat de registratie opgeheven wordt en dat het bericht opnieuw geregistreerd wordt, maar dan als spam. -Sn doet hetzelfde, maar dan voor fout geïdentificeerde hamberichten.
Als je de filters aanpast met -N en -S (wat dus nodig is om in de database belandde foutjes te corrigeren), dan zijn die filters echter weer nutteloos voor het creëren van een initiële database (er is in die gevallen immers niets meer om te corrigeren).
De oplossing is om twee nieuwe (bijna identieke) actiefilters aan te maken, die wél met de -N- en -S-parameters werken. Je zou ook gewoon de hierboven beschreven filters kunnen behouden om de database aan te maken en ze dan later wijzigen door -N en -S toe te voegen.
Licenties en verdiensten
De Engelstalige versie van deze howto is geschreven door David P. James en met permissie vertaald door Tom Verbreyt. Tot nader order kan je het origineel terugvinden op http://david.jamesnet.ca/kde/kmail_bogofilter.html.
Het is toegestaan dit document te kopiëren, te verdelen en/of te wijzigen onder de voorwaarden van de GNU vrije-documentatielicentie, versie 1.1 of een latere versie gepubliceerd door de Free Software Foundation; zonder invariante paragrafen, zonder vooromslagteksten, en zonder achteromslagteksten.
Over deze site | Laatst gewijzigd: 30 maart 2004, 22:33 door: Tom Verbreyt