Het DSPAM spamfilter met KMail gebruiken
Auteur: Wilbert Berendsen
Herziening 0.1
Copyright © 2004 KDE-nl team
DSPAM is een zelflerend, statistisch en razendsnel anti-spam filter dat op allerlei manieren kan worden gebruikt. Daardoor is het tamelijk ingewikkeld om te installeren voor de minder ervaren gebruiker.
In deze HOWTO installeren we DSPAM van broncode, en stellen we KMail handmatig in. De antispam assistent van KMail is nog niet op DSPAM voorbereid, zodra dit het geval is wordt de laatste stap natuurlijk nog eenvoudiger.
1. DSPAM installeren.
We installeren DSPAM zo, dat alle gebruikers van het lokale systeem er gebruik van kunnen maken. Om kenmerken en statistieken van e-mail bij te houden gebruikt DSPAM een database. MySQL geniet de voorkeur, maar Sqlite 2.x werkt ook uitstekend. In dit voorbeeld gaan we van Sqlite uit (installeer daar de laatste 2.x versie van).
Download nu DSPAM 3.x van www.nuclearelephant.com/projects/dspam/sources. Pak het uit en ga op de commandoregel naar de uitgepakte directory.
Configureer DSPAM met:
./configure --prefix=/usr/local --with-dspam-home=/var/dspam \ --enable-signature-headers \ --disable-user-logging --disable-system-logging \ --enable-delivery-to-stdout --enable-spam-delivery
Dit zorgt ervoor dat DSPAM mailtjes hoe dan ook doorlaat, maar ze van een merkteken voorziet dat aangeeft of het volgens DSPAM spam is of niet; en dat DSPAM gemakkelijk in een pijpleiding gebruikt kan worden.
Compileer DSPAM:
make
en installeer DSPAM als root (na su het root-wachtwoord invoeren):
su make install chmod 2755 /usr/local/bin/dspam mkdir -p /var/dspam/data cd /var/dspam chmod 0770 . data chown root.mail /usr/local/bin/dspam . data touch untrusted.mailer_args echo root > trusted.users exit
Zo kunnen alle gebruikers de dspam-binary gebruiken zonder dat ze de gegevens van andere lokale gebruikers zouden kunnen misbruiken. In de map data houdt DSPAM voor elke gebruiker de aangeleerde statistieken bij.
2. DSPAM de basiskennis leren.
Verzamel een flinke map spam mail. Let op: deze mail mag niet al verwerkt zijn door een ander spam-filter programma, want anders zal DSPAM de door dat programma toegevoegde kenmerken ten onrechte als spam beschouwen.
Maak een tijdelijke email-map aan in KMail, geef deze de naam SPAM, en het formaat mbox (dus niet maildir). Verzamel alle spam in deze map. Laat KMail de map comprimeren.
Nu voeren we de hele map met spammailtjes aan DSPAM. Open een terminal en typ het volgende commando:
dspam --mode=teft --class=spam --source=corpus < Mail/SPAM
Open KMail en maak een map aan met de naam NOSPAM, ook weer in mbox formaat. Verzamel hierin een zo groot mogelijke hoeveelheid gewone, geldige e-mail. Let op: verplaats er geen berichten naar toe maar kopiëer ze. Vermijd ook e-mail met grote attachments. Comprimeer de map NOSPAM ook weer. Geef nu in de terminal het volgende commando:
dspam --mode=teft --class=innocent --source=corpus < Mail/NOSPAM
Nu kent DSPAM een beetje de basis, maar je zult DSPAM nog wel regelmatig moeten vertellen dat bepaalde mailtjes spam zijn. Maar het programma leert snel en is buitengewoon accuraat; ik heb nog nooit een onterechte classificatie gezien.
3. KMail instellen om DSPAM te gebruiken
Open de dialoog Filters instellen.
Check-filter aanmaken
Maak een nieuw filter aan. Geef het de naam "DSPAM: check" en plaats het onder de filters die je al hebt, zodat e-mail van al bekende afzenders niet nog eens nodeloos gescand wordt.
Selecteer als criteria:
(x) Komt overeen met al het volgende
<grootte> is kleiner dan 100000 bytes
Selecteer als filterhandeling:
Doorsluizen via: dspam --stdout --deliver=innocent,spam --mode=teft
Selecteer onder uitgebreide opties:
Dit filter toepassen [X] op inkomende berichten.
Maak de overige selectievakjes leeg.

(Klik op de afbeelding voor een vergroting)
Filter om spam weg te gooien
Maak een nieuw filter aan. Geef het de naam "DSPAM: spam" en plaats het direct onder het vorige filter.
Selecteer als criteria:
(x) Komt overeen met al het volgende
X-DSPAM-Result bevat Spam
Selecteer als filterhandeling:
Naar map verplaatsen: Prullenbak
Selecteer onder uitgebreide opties:
Dit filter toepassen [X] op inkomende berichten, en
[X] Als dit filter overeenkomt, verwerking hier stoppen.
Maak de overige selectievakjes leeg.

(Klik op de afbeelding voor een vergroting)
Classificeren van gemiste spam
In het begin komt het nog regelmatig voor dat DSPAM spam erdoor laat glippen. Daarom maken we een filterhandeling aan die spam-mailtjes alsnog aan DSPAM leert.
Maak een nieuw filter aan, geef het de naam "Markeren als spam". Laat de criteria leeg en voer als filterhandelingen in:
Doorsluizen via: dspam --stdout --deliver=innocent,spam --mode=teft --class=spam --source=error
Naar map verplaatsen: Prullenbak
Selecteer onder Uitgebreide opties:
[X] Dit filter toevoegen aan het menu "Filter toepassen", en maak de overige selectievakjes leeg. Geef de handeling een leuk pictogram.

(Klik op de afbeelding voor een vergroting)
Klaar! Sluit nu de filterdialoog en DSPAM zal de inkomende mail gaan filteren. Kom je een spam-mailtje tegen, klik er dan rechts op en kies Filter toepassen->Markeren als spam.
Na verloop van enige tijd zul je merken dat DSPAM goed begint te filteren. Mocht je merken dat DSPAM een geldig mailtje onterecht als spam aanmerkt (wat in de eerste week nog wel een enkele keer kan gebeuren), dan kun je naar analogie van het derde filter nog een vierde aanmaken, waarbij je in het doorsluis-commando de optie --class=spam dan verandert in --class=innocent, en natuurlijk de bestemmingsmap van Prullenbak naar bijvoorbeeld Inbox. Met dat handmatige filter kun je DSPAM dan vertellen dat dat mailtje geen spam was.
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: $Date: 2005/04/24 18:27:07 $ door: $Author: tijmen $