KMail (http://kmail.kde.org/) je klijent za e-poštu u KDE okruženju. Možda nije najbolji klijent za e-poštu koji postoji, ali je, zahvaljujući međuprocesnoj komunikaciji (dcop) koja je osnova KDE okruženja, svakako najintegrisaniji klijent za e-poštu koji postoji.
Šta je to DSpam?
DSpam (http://dspam.nuclearelephant.com/) je jedan od najboljih i svakako jedan od najbržih programa za filtriranje spam-a.
Zašto bi neko želeo da instalira DSpam kao filter za spam za KMail?
Razvojni tim KMail-a nema kapaciteta, vremena, znanja (ili nečeg trećeg) da napravi sopstveni spam filter, te se oslanja na eksterne programe, kao što je SpamAssassin i još nekoliko drugih. Međutim, KMail-ov razvojni tim takođe uporno tvrdi da je nepotrebno odvojiti poseban thread koji će da aktivira te eksterne programe i obradi dolaznu poštu. Iako je puno ljudi predlagalo takve stvari (pretražite http://bugs.kde.org), odgovor je uporno bio odrečan. Efekat toga je da se prilikom primanja nove e-pošte program skoro zaglavi na momente. To i nije problem ako vi radite nešto drugo dok kmail proma novu poštu. Ali, ako npr. pišete e-pismo, pa prozor u kome to radite počinje da ne reaguje, to ume da bude zamorno i ružno.
DSpam ne rešava gore navedeni problem thread-ova, naravno. Ali, obzirom da dspam radi ekstremno brzo, za red veličine brže od spamassassin-a, korišćenjem dspam-a se izbegava (ili bar minimizuje) ovo privremeno zaglavljivanje kmail-a.
Kako instalirati DSpam?
DSpam je program koji dolazi sa standardnim „GNU Build System“-om. To znači da se instalira komandom „./configure --opcije ; make ; make install“. Većina GNU/Linux distribucija (a naravno i *BSD-ovi, Solaris-i, i sl) već ima DSpam paket u svojoj zbirci paketa, tako da se instaliranje suštinski svodi na nešto tipa „apt-get install dspam“ ili par klikova po SuSE-ovom YaST-u ili „cd /usr/pkgsrc/mail/filter/dspam; make install“ na NetBSD-u (mada nisam siguran za tačnu putanju u pkgsrc-u, ali nije ni bitno). Ako postoji opcija da se DSpam instalira kao demon i klijent, preporučujem tu opciju. Ako ne postoji takva opcija, nema veze, može da radi i samo kao klijent. Što se konfiguracije tiče nema skoro nikakve razlike. Naravno, ako ga instalirate kao demona, morate da obezbedite da se startuje sa uključenjem sistema (npr. „rc-update add dspam default“ na Gentoo-u).
Da li je potrebno istrenirati DSpam pre upotrebe?
Nije neophodno, ali svakako ne može da škodi. Skinite .tar.bz2 fajlove iz javnog korpusa SpamAssassin-a (http://spamassassin.apache.org/publiccorpus/). Radi jednostavnosti treniranja, ja sam ih sve stavio u isti direktorijum i onda pustio treniranje. To sam postigao sledećim setom komandi:
Code:
$ cd /putanja/gde/sam/stavio/.tar.bz2/fajlove/iz/javnog/korpusa/
$ for i in *.tar.bz2; do tar xf $i; done
$ mkdir ham
$ for i in {easy_,hard_}ham{,_2}/*; do mv $i ham/`echo $i | sed -e 's|/|_|'`; done
$ mv spam spam_1
$ mkdir spam
$ for i in spam_{1,2}/*; do mv $i spam/`echo $i | sed -e 's|/|_|'`; done
$ rm -rf {easy_,hard_}ham{,_2} spam_{1,2}
$ cd /putanja/gde/sam/stavio/.tar.bz2/fajlove/iz/javnog/korpusa/
$ for i in *.tar.bz2; do tar xf $i; done
$ mkdir ham
$ for i in {easy_,hard_}ham{,_2}/*; do mv $i ham/`echo $i | sed -e 's|/|_|'`; done
$ mv spam spam_1
$ mkdir spam
$ for i in spam_{1,2}/*; do mv $i spam/`echo $i | sed -e 's|/|_|'`; done
$ rm -rf {easy_,hard_}ham{,_2} spam_{1,2}
Ovaj set komandi stavlja sve „ham“ (tj. ne-spam) poruke u direktorijum „ham“ sa prefiksom koji odgovara polaznom direktorijumu. Takođe, sve „spam“ poruke se sada nalaze u „spam“ direktorijumu sa sličnim prefiksom.
Sada može da se pusti treniranje DSpam-a sledećom komandom:
Code:
$ dspam_train vaseKorisnickoIme spam ham
$ dspam_train vaseKorisnickoIme spam ham
NAPOMENA: ovo treniranje traje i traje, tako da je najbolje da ga pustite ujutru, pa neka piči ceo dan, ako vam je spor kompjuter. Ovaj korpus je glomazan (spam = 20 MB, ham = 47 MB), tako da to može da potraje. Kod mene na AMD64 sa 1 GB RAM-a je trajalo oko sat vremena.
Konfigurisanje KMail-a da radi sa DSpam-om
E, sada dolazi glavno. Treba konfigurisati KMail da obrađuje dolaznu e-poštu pomoću DSpam-a. To se radi tako što se naprave filteri za dolaznu e-poštu (meni „Podešavanja“, stavka „Podesi filtere...“).
Tu prvo treba napraviti novi filter koji će da propušta dolazna e-pisma kroz DSpam (slika 1). Kao pravila na koja dolazna e-pisma se filter odnosi zgodno je uneti ograničenja. Ja sam stavio ograničenje na veličinu od 256 kb, kao i ograničenje da pošiljaoc nije u mom adresaru. Tip akcije treba podesiti da bude „pipe-through“, tj. „propusti kroz“. Komanda koju treba uneti u akciju filtera je:
Code:
dspam --stdout --deliver=innocent,spam --mode=teft --user vašeKorisničkoIme
dspam --stdout --deliver=innocent,spam --mode=teft --user vašeKorisničkoIme

Slika 1: Filter za propuštanje dolazne pošte kroz DSpam
Kao drugi korak treba podesiti šta se dešava sa dolaznom e-poštom koja je od filtera obeležena kao spam. Ja sam ranije koristio SpamAssassin, pa su mi ostala i njegova podešavanja, a ona generalno ne mogu da smetaju. Podešavanje filtera za „rukovanje spam-om“ je prikazano na slici 2. Ono što se odnosi na DSpam je da se upiše da je spam svako e-pismo kod koga header X-DSPAM-Result sadrži reč Spam, pošto DSpam tako obeležava spam. Akcije su jasne. Treba obeležiti e-pismo kao spam i prebaciti ga u neki direktorijum određen za spam.

Slika 2: Filter za rukovanje spam-om
Treći korak je definisati pravilo za ručno obeležavanje poruke kao spam. To pravilo treba ne samo da obeleži poruku kao spam već i da je propusti kroz dspam u režimu treniranja (slika 3). Kao akcije filtera treba podesiti da propusti kroz program DSpam sa sledećim argumentima:
Code:
dspam --stdout --deliver=innocent,spam --mode=teft --class=spam --source=error --user vašeKorisničkoIme
dspam --stdout --deliver=innocent,spam --mode=teft --class=spam --source=error --user vašeKorisničkoIme
Bitno je napomenuti da u tab-u „Napredno“ treba podesiti da se ovaj filter ne aktivira automatski već samo kada je eksplicitno aktiviran. To podešavanje možete da vidite na slici 4.

Slika 3: Filter za ručno svrstavanje poruke u spam

Slika 4: Napredno podešavanje filtera kako se ne bi automatski izvršavao
I finalni, četvrti korak je da se obezbedi pravilo koje će poruku koja je pogrešno svrstana u spam da propusti kroz DSpam u režimu učenja kako se to više ne bi dešavalo (slika 5). Ovaj filter je manje-više isti kao i prethodni uz sitnu izmenu komande koja se izvršava:
Code:
dspam --stdout --deliver=innocent,spam --mode=teft --class=innocent --source=error --user vašeKorisničkoIme
dspam --stdout --deliver=innocent,spam --mode=teft --class=innocent --source=error --user vašeKorisničkoIme
Naravno, i ovaj filter treba podesiti da se ne izvršava automatski, kao i prethodni (slika 4).

Slika 5: Filter za ručno svrstavanje poruke u ham, tj. ne-spam
I za kraj
Ako neko ima pitanja, nedoumica, problema sa instaliranjem ili bilo čega sličnog, neka ne okleva da mi pošalje e-pismo na brcha_AT_users_DOT_sourceforge_DOT_net.
Brcha
... and the aliens sent an android down to earth, to slow down mankind's development
... and they named it Bill Gates.
... and they named it Bill Gates.

HOWTO: KDE KMail i DSpam spam filter
Re: HOWTO: KDE KMail i DSpam spam filter