SpamFilter
Hned na úvod upozornění -- tento návod vyžaduje jisté znalosti. Pokud tedy nevíte,
jak pracovat na Sirrahu s příkazovou řádkou, jak editovat textové soubory a kam a jak se
vám ukládá pošta, tak se raději o nic nepokoušejte a poraďte se se svým
lékařem nebo
lékárníkem. Pokud se i přesto
pokusíte o nejrůznější experimenty, riskujete, že vám přestane chodit pošta! Lékaři
lékárník jsou ochotni vám s nastavením pomoci, ale dobře si rozmyslete, jak to chcete
provést, protože není v jejich silách měnit nastavení uživatelů dvakrát denně dle momentální
nálady.
Boj se spamem je dlouhodobý proces. Bohužel již dnes nestačí pouze všímat si emailů z
konkrétních profláknutých adres a chodících přes některé profláknuté servery, ale dnes je
třeba spam rozlišovat podle struktury a obsahu emailu. Bohužel je situace taková, že se
nelze dostat do stavu, kdy bude 100% spamu rozpoznáno a zničeno. Ale za jistých
okolností se k tomu lze poměrně hodně přiblížit. Programů, které provádějí filtraci spamu
je mnoho, lékař má jisté vcelku pozitivní zkušenosti se SpamAssassinem, takže bylo ve
spolupráci s lékárníkem rozhodnuto nasadit na filtraci spamu právě SpamAssassin.
Společné věci, které je dobré vědět (ale pokud jste skoro začátečníci a nehodláte do
problematiky zabředávat hlouběji, přežijete i bez toho) najdete na
stránce zabývající se emailem obecně. Konkrétní situace
budou řešeny níže, takže v krátkosti se můžete těšit buď na základní nastavení,
nebo můžete chtít například svoji vlastní databázi spamu a případně
dokonce zajímat se jen o ty technické informace a přesunout se rovnou
na poslední kapitolu.
Poštu na Sirrahu doručuje program QMail. Jeho doručování může uživatel ovlivnit pomocí
direktiv v souboru .qmail ve svém domovském adresáři a nejinak se postupuje při
odstraňování spamu. Základní nastavení a případně inspiraci poskytuje:
Skript spamass
Tento skript provede ZÁKLADNÍ konfiguraci, aby bylo možné procházet poštu SpamAssassinem.
Spouští se jménem a příslušným parametrem.
spamass DEFAULT|local|shared|previous [log]
- DEFAULT poskytuje nastavení pro ty, kdo doposud nehýbali se svou konfigurací
pošty na Sirrahu. Pracuje se sdílenou databází.
- local začne používat SpamAssassina s uživatelskou databází. Výhodou např. je,
že po naučení je jeho úspěšnost blízká 100 % (tedy v zásadě je schopen odfiltrovat
drtivou většinu spamů). Nevýhodou je, že je (hlavně zpočátku) nutné jej učit, co je spam a co ne.
- shared začne používat sdílenou databázi pro všechny uživatele na Sirrahu. Výhodou
je, že se nemusíte prakticky o nic starat. Nevýhodou je pak mnohem nižší úspěšnost, než při
použití vlastní databáze.
- previous vrátí konfiguraci do posledního známého stavu. Pokud jste úprav dělali
několik za sebou, nemusí jít nutně o stav konzistentní s tím, co vlastně chcete
- log uvedeno jako DRUHÝ parametr -- zapne logování, čili známkování každého emailu
se napíše do zvláštního textového souboru, kde pak můžete dohledat, jak byl daný email hodnocen.
Logování je defaultně vypnuto, loguje se do souboru $HOME/spam.log.
Zpět nahoru
Základní nastavení
Jsem běžný uživatel, netuším, co dělám, ale umím spustit příkaz v konsoli a nemanipuloval
jsem nikdy s nastavením své pošty na Sirrah. Raději se ještě jednou ujistěte, že jste se svou
poštou nedělali na Sirrahu psí kusy, jako například nejrůznější třídění a podobně.
Pak následuje jednoduché řešení: příkaz spamass DEFAULT. Vše se nastaví tak, že pošta
chodí i nadále tam, kam má, spamy se ukládají do složky ./Mail/spam, což by mělo být tam,
kde hledá poštu PINE. Pracuje se se sdílenou databází, takže se nemusíte o nic starat, emaily
jsou filtrovány, ale nejsou označovány (takže se jejich formát vůbec nezmění).
Tento skript nastaví filtrování pouze vaší přímé pošty, takže pokud používáte např. pro příjem
konferencí nějaký z pomlčkových aliasů (např. svanda-konference@sirrah.troja.mff.cuni.cz a pod.)
a chcete filtrovat i je, buď budete muset zabřednout do podrobností ručního nastavení,
nebo navštívit lékaře či lékárníka.
Pokud vám bude přesto chodit hodně spamů (může se to stát, je to vlastností sdílené databáze),
přečtěte si v následujícím oddíle, jak pomoci při učení antispamového filtru.
Zpět nahoru
Chcete mít vlastní databázi?
Jsem běžný uživatel, ale trochu tomu rozumím.
V tom případě je nejjednodušší spustit skript spamass shared nebo spamass local
(rozdíly budou vysvětleny dále) a upravit soubor .qmail-isspam, do kterého se napíše, kam
chcete ukládat detekovaný spam. Nedoporučuje se "ukládat" jej do /dev/null (i když je to taky
cesta), protože klasifikátor se samozřejmě může zmýlit a pak by mohlo dojít k vyhození třeba
důležitého emailu. Tento postup (zahazování spamů) si lze obvykle dovolit až tak po roce provozu
na zkoušku, pokud všechno funguje tak, jak má. Je lepší si spamy nechat třídit do nějaké speciální
složky. Např. pokud používáte na ukládání pošty formát Maildir (ten je ostatně preferován, bez
problémů pak funguje POP3 atd.), tak do .qmail-isspam dopište řádek např. ./Maildir/SPAM/.
Pine nebo nějaký jiný poštovní klient by si měl již s tímto problémem poradit a vyřazená pošta se
pak filtruje do tohoto pole. Používáte-li formát mbox (v současnosti defaultní nastavení), tak je
třeba nový mailbox vytvořit v nějaké "čtené" složce -- např. používáte-li ke čtení pošty PINE, bude
tímto adresář Mail a tudíž do .qmail-isspam se napíše něco jako ./Mail/spam a je to.
V PINE se pak objeví v seznamu složek i nová složka "spam" obsahující snad pouze spam.
A teď jaké jsou rozdíly mezi použitím spamass shared nebo spamass local:
Pokud chcete vědět, proč byl daný email vyhodnocen jako spam nebo opačně, zapněte si logování.
Zpět nahoru
Technické informace aneb nechci slyšet žádnou omáčku kolem
Předpokladem je, že víte, co děláte. Čili již jste si někdy upravovali .qmail (nebo
.qmail-něco). Pro filtrování spamu je důležitý program condredirect. Tento
program použitý jako filtr se používá k "vyžírání" emailů, které splní podmínku danou skriptem,
z fronty a jejich přesměrování jinam. Syntax je jednoduchá:
| condredirect kam rozhodovaci_program_nebo_skript
Čili příchozí email se poslán na "rozhodovaci_program_nebo_skript". Pokud tento skončí s
návratovou hodnotou 0, je zkoumaný email přesměrován na "kam", pokud skončí s návratovou hodnotou
99, email poskočí na další řádek zpracování. Přestože se zde uvedený postup může hodit i obecněji,
v případě filtrování spamů na Sirrahu je k dispozici připravený "rozhodovaci_skript"
/usr/local/bin/zrout_spamu, který rozhazuje emaily podle toho, jestli jsou spam,
nebo ne. Po průchodu tímto skriptem jsou emaily sice vyhodnoceny, ale nejsou označeny, pokud
chcete znát výsledky, zapněte si logování jednoduše parametrem -l.
Takže ukázkové konfigurace:
- Emaily mají být tříděny a známky jednotlivých emailů logovány. Maily klasifikované jako
spam se ukládají do $HOME/Mail/SPAM ve formátu mbox, ostatní emaily pak ve formátu
Maildir do $HOME/Maildir/ a ještě se posílají na mobil (číslo 299 792 458 u operátora
Vodovody&kanalizace), uživatel se jmenuje "juzr".
.qmail:
|condredirect juzr-spam /usr/local/bin/zrout_spamu -l
./Maildir/
&+420299792458@sms.vodovody_a_kanalizace.cz
.qmail-spam
./Mail/SPAM
- Emaily mají být tříděny, avšak ne označovány. Spamy se ukládají do $HOME/Mail/SPAM/
ve formátu Maildir, ostatní emaily ve formátu mbox do $HOME/Mailbox, uživatel je opět "juzr":
.qmail:
|condredirect juzr-spamy /usr/local/bin/zrout_spamu
./Mailbox
.qmail-spamy:
./Mail/SPAM/
- Chodí mi konference na pomlčkový alias juzr-ccd@sirrah.troja.mff.cuni.cz, tu chci třídit
a logovat, spamy chci vyhazovat, prošlou poštu ukládat ve formátu mbox do $HOME/Mail/Konference_CCD:
.qmail-ccd:
|condredirect juzr-ccdspam /usr/local/bin/zrout_spamu -l
./Mail/Konference_CCD
.qmail-ccdspam:
/dev/null
- Stejný případ jako předchozí, jen poštu nechci označovat, ale rovnou třídit, spamy zahazovat:
.qmail-ccd:
|condredirect juzr-ccdspamy /usr/local/bin/zrout_spamu
./Mail/Konference_CCD
.qmail-ccdspam:
/dev/null
Další doporučeníhodnou možností je nenechat email doručovat lokálně QMail, ale přeposlat jen
na zpracování procmailu, který nabízí větší uživatelský komfort filtrování. Pak se v .qmail
objeví řádek |preline /usr/bin/procmail a filtraci je pak třeba řídit zcela jinými
direktivami v souboru .procmailrc. Podrobnosti opět sdělí lékař či lékárník, případně si je
můžete přečíst v manuálu (man procmailrc).
Zpět nahoru
|