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.