AntiSpam -- co děláme proti spamu na FSv

Obsah:
Co je spam (a ham)
Uživatelské nastavení spamu
Centrální filtr na serveru Mars
Filtry na straně uživatele

 

Co je spam (a ham)

Výrazem spam se označuje nevyžádaný, obtěžující, hromadně rozesílaný, zpravidla reklamní email. To, že spam zbytečně zatěžuje naši počítačovou síť je zanedbatelné ve srovnání se zátěží hlav ubohých adresátů spamu. Rozpoznávání a mazání spamu je otravné, připravuje nás o čas a odvádí nás od smysluplnější činnosti. Dodejme, že spam nemusí být jen komerční, v širším významu existuje i spam politický, akademický, náboženský a jistě mnoho dalších.

V češtině se často spam překládá jako "nevyžádaná pošta", ale to je zcela zavádějící označení. Zcela legitimní dopis od vašeho šéfa, že máte něco udělat, přece také nebyl vyžádaný. Proto raději říkejme jednoduše spam.

Protiklad spamu, tj. legitimní email, se někdy označuje slovem ham. Ano, ham je šunka, zatímco jeden z významů slova spam je "drobně sekané maso v konzervě" od firmy Hormel. Nynější význam slova spam zřejmě souvisí se slavnou scénkou skupiny Monty Python.

Je třeba upozornit, že rozlišení, co je a co není spam, není jednoznačné a může být i docela individuální. Automatické rozpoznání spamu proto z principu nikdy nebude stoprocentně přesné.

Proti spamu se lze chránit různými prostředky. Tento dokument popisuje, co proti spamu děláme na úrovni VIC FSv a co mohou navíc dělat jednotliví uživatelé. V podstatě máme 2 až 3 úrovně obrany:

  • test obsahu mailu programem SpamAssassin,
  • a případné další testy mohou dělat klientské programy uživatelů (podrobněji dále).

Uživatelské nastavení spamu.

Nejprve velmi stručně k tomu, co si můžete nastavit sami na fakultním intranetu (Stavnet.fsv.cvut.cz) v sekci "oprava osobních údajů". Změna není zcela okamžitá, vezměte nejbližší celou minutu a přidejte 5 až 25 vteřin, tedy do dvou minut by měla změna fungovat. O tom, že server změnu akceptoval, dostanete stručný mail.

Doručování spamu -- povolit nebo zakázat?

Každý email je testován komplexním testem, jehož detaily jsou popsány ve zvláštní kapitole. Výsledkem testu je číslo, které udává jak moc znaků spamu dotyčný mail nese. Hranicí je 5 bodů.

Defaultně je doručování spamu zakázáno. Všechny dopisy, které dostaly 5 a více bodů, jsou zadrženy a nejsou doručeny adresátům. Děje se tak na základě (dnes již historického) rozhodnutí vedení FSv. Rozpoznání spamu ovšem není zcela spolehlivé a občas se vyskytne reklamace, že byl zadržen důležitý mail. Proto je zavedena možnost doručování spamu pro svou fakultní emailovou adresu povolit.

Pokud doručování spamu pro svou adresu povolíte, pak

  • vám budou doručeny všechny dopisy, které server přijal, včetně spamu,
  • výsledek testu, zda je dopis spam, bude zaznamenán v hlavičce mailu, např.
    X-FSv-Spam-Level: ***** (5.8)
  • na serveru Imap.fsv.cvut.cz budou takto označkované dopisy automaticky přesunuty do složky "spam"
  • cokoli je na serveru IMAP ve složce "spam" déle než měsíc, je automaticky smazáno.

Centrální filtr na serveru Mars

Veškerá pošta, která přichází na fakultu zvenku (a velká část pošty interní a odcházející) prochází přes hlavní poštovní server Mars.fsv.cvut.cz. Veškerá procházející pošta je zde testována na výskyt virů a spamu. O testování virů viz samostatný dokument mfiltr.php, zde se soustředíme na problematiku spamu.

Rozpoznávání spamu podle obsahu

K rozpoznávání spamu podle obsahu používáme program SpamAssassin. Pomocí tohoto programu děláme tři druhy testů: test založený na pravidlech, tzv. bayesovský test a dále testujeme IP adresu počítače, odkud mail přišel.

Test založený na pravidlech

hledá v dopise příznaky, které jsou pro spam typické. Jde např. o některá slova a slovní spojení (viagra, penis, loan, university diploma), některé další jevy (např. Subject (Věc) dopisu zcela chybí, a nebo je celý velkými písmeny) a také o formální chyby, které jsou pro spam typické (chybně napsané datum, datum v budoucnosti, chybně kódované diakritické znaky v hlavičce, rozpor v adrese odesílatele, rozpor v záznamech, přes které počítače mail prošel, apod.). Zvlášť upozorním na specialitu: České slovo "peníze" je testovacím programem pokládáno za podobné slovu "penis" a za jeho výskyt v Subjectu (Věc:) je přidělen nějaký ten trestný bodík. Za každý takový příznak dopis dostane nějaký počet trestných bodů, tyto body se sečtou a podle výsledku se s dopisem dále zachází.

Test IP adresy počítače, odkud mail přišel

Typický dopis prochází postupně přes několik poštovních serverů a IP adresa toho posledního, tedy toho, ze kterého jsme dopis obdrželi, se vyhledá ve speciálních databázích na Internetu, v tzv. dynamických blacklistech. Když nějaký počítač šíří spam, zpravidla se brzy do některé z těchto databází dostane. Jakmile tam je, pak dopisy přijaté z takového podezřelého zdroje dostanou trestné body.

Bayesovský test

je v podstatě aplikací umělé inteligence a funguje zhruba takto: Dopis se rozloží na jednotlivá slova. Předpokládá se, že o jednotlivých slovech jsou předem známy pravděpodobnosti, že dopis, který toto slovo obsahuje, je spam. (Kde tyto pravděpodobnosti vezmeme, viz dále.) Z testovaného dopisu se pak vybere 15 slov s nejvyšší a 15 slov s nejnižší pravděpodobností, tyto pravděpodobnosti se dosadí do vzorce připisovaného panu Bayesovi a výsledkem je pravděpodobnost, že testovaný dopis je spam. V závislosti na této pravděpodobnosti se dopisu přiřadí další trestné body a ty se přičtou k trestným bodům z ostatních testů.

Rozesílatelé spamu neustále vymýšlejí nové a nové triky, kterými se snaží proniknout přes antispamové filtry. Účinnost testů založených na pravidlech postupně klesá, pravidla je třeba občas aktualizovat (což děláme). Bayesovské testu naopak dokáže přizpůsobovat (učit) i mírně poučený laik.

Co se spamem děláme

To záleží na součtu trestných bodů, které dopis dostal ve výše zmíněných testech. Předem poznamenejme čtyři důležité věci:

  1. Žádný test spamu už z principu není zcela spolehlivý, někdy je to věc subjektivního názoru.
  2. Tvůrci programu SpamAssassin, kterým spam testujeme, doporučují jako hranici spamu 5 trestných bodů.
  3. Podle rozhodnutí vedení fakulty ze září 2003 nepropouštíme do vnitřní sítě fakulty dopisy, které dostaly 5 a více bodů.
  4. Toto nařízení bylo příčinou řady reklamací, kdy byly zadrženy důležité legitimní dopisy. Proto umožňujeme toto nařízení individuálně porušit a doručovat všechno, tedy i rozpoznaný spam.

Co tedy konkrétně děláme:

  • Pokud není zapnuto doručování spamu, dopisy s 12 a více body jsou přijaty a tiše zahozeny.
  • Pokud není zapnuto doručování spamu, dopisy s 5 až 12 body odmítneme přijmout s odůvodněním "5.7.1 Spam not accepted here." a s touto chybovou zprávou se vracejí odesílateli. Odesílatel tak ví (může vědět), že dopis neprošel.
  • Dopisy s 1 až 5 body nepokládáme za spam a předáváme je k doručení.
  • Ostatní dopisy, tedy ty, které dostaly méně než jeden bod, rovněž předáváme k doručení.
  • Do hlavičky všech doručovaných dopisů, které dostaly aspoň jeden trestný bod, doplňujeme údaj X-FSv-Spam-Level: a tolik hvězdiček, kolik ten dopis dostal bodů (zaokrouhleno na celé číslo dolů). Tím usnadňujeme příjemci, aby si, pokud chce, umí a může, zavedl své vlastní filtrování.

Rizika chybného rozpoznání

Exaktní metoda, která by spolehlivě odlišila spam a ham neexistuje, rozhodnutí, co je spam, může být subjektivní, názory se mohou lišit. S chybným rozpoznáním spamu je zkrátka třeba počítat.

Falešně negativní rozhodnutí znamená, že dopis je spam, ale naše testy to nepoznaly a dopis byl doručen adresátovi (často hned několika adresátům). To je sice trochu mrzuté, ale není to žádné neštěstí. Zkuste si vzpomenout, kolik jste dostávali spamu, dokud jsme jej nefiltrovali. Jednoduše ten dopis smazejte.

Falešně pozitivní rozhodnutí je naopak velmi závažné, jeho důsledkem totiž je, že legitimní a možná i důležitý dopis není doručen adresátovi. Proto dopisy, u nichž připouštíme chybu (tj. mezi 5 a 12 body), odmítáme přijmout a vracíme je s chybovou zprávou "5.7.1 Spam not accepted here". Odesílatel takto postiženého dopisu se tedy může dovědět, že dopis nedošel a proč nedošel, a může s tím něco udělat, např. poslat zprávu jinak, reklamovat, atd. To samozřejmě za předpokladu, že si tu chybovou zprávu přečte. :-)

Stinnou stránkou zprávy "5.7.1 Spam not accepted here" je fakt, že jejím prostřednictvím poskytujeme spammerům (rozesilatelům spamu) příliš mnoho informací o našem poštovním systému, což může (teoreticky) mít za následek větší příliv spamu. Je to však jistě lepší než když důležitý dopis tiše zmizí a odesílatel si myslí, že v pořádku došel -- přece se nevrátil s žádnou chybou.

Učení bayesovského filtru

Fungování bayesovského filtru je zcela závislé na pravděpodobnostech, že dopis, který obsahuje dané slovo, je spam. Tyto pravděpodobnosti se získávají v podstatě statistickými metodami a říká se tomu učení. Jde v podstatě o jednoduchou aplikaci umělé inteligence. Prakticky se to učení dělá tak, že se speciálním programem zpracuje dávka dopisů spolu s informací, zda to je spam nebo ham. Výhodou je, že bayesovský filtr lze takto učit i po troškách a filtr se tak může postupně zdokonalovat a přizpůsobovat měnícím se praktikám spammerů.

Samozřejmě je trochu problém, kde vzít patřičně kvalitní "potravu" pro učení, tj. patřičně representativní vzorky spamu a hamu.

Na první pohled se to nezdá, ale ham je pro učení stejně důležitý jako spam, ne-li důležitější. Kdybychom totiž k učení používali jenom spam, po nějaké době by všechno bylo pokládáno za spam. Doporučuje se dokonce, aby pro učení bylo použito více hamu než spamu. Ano, v situaci, kdy spam v přicházející poště suverénně převažuje, to není snadné, ale opravdu je nezbytné, aby pro učení bylo použito dostatečné množství legitimní pošty, tedy hamu. A také aby ten ham byl dostatečně representativní.

Ham i spam také musí pocházet ze stejného období a to nejen proto, že spammeři neustále mění své praktiky a snaží se filtr ošálit novými triky. Další důvod je ten, že kdybychom pro učení použili nový ham a sbírku starého spamu, filtr by se naučil, že nové dopisy spam nejsou a byl by málo účinný. A kdybychom to dělali opačně (nový spam a starý ham) výsledkem by bylo vyšší procento falešně positivních rozhodnutí.

Také je třeba se vyhnout dopisům, které by mohly učit chybně, například legitimním dopisům o problematice spamu, některým chybovým zprávám apod. Je to podobné, jako si živý učitel musí dávat pozor, co říká svým žákům.

Jak učíme bayesovský filtr

Potravu pro učení bayesovského filtru bereme z poštovního serveru IMAP.fsv.cvut.cz. Ti, kdo bayesovský filtr učí, mají ve svém INBOXu vytvořeny dvě speciální složky nazvané "2-Ham" a "2-Spam" a do těchto složek kopírují nebo přesunují (v případě spamu obvykle přesunují) dopisy, které chtějí předložit k učení. Každou noc krátce po půlnoci server tyto složky prohledá, všechny dopisy v nich obsažené zpracuje učícím programem a pak obsah těchto složek smaže. Pokud filtr učíte, dávejte zejména při kopírování hamu pozor, abyste místo kopírování neprovedli přesun -- tím byste totiž o ten přesunutý dopis o půlnoci přišli. Pokud se spletete, máte do půlnoci čas na nápravu. Podobně dávejte pozor a přemýšlejte předem, zda předloženým dopisem dosáhnete "žádoucího pedagogického efektu". Pokud si nejste jisti, raději ten dopis k učení nepředkládejte nebo požádejte o radu.

Výhody a nevýhody centrálního filtru

Výše popsaná filtrace spamu funguje na serveru, kterým procházejí všechny přicházející dopisy (a většina odcházejících). Výhodou je, že odfiltrované dopisy vůbec nedostanete, nezabírají vám místo a pokud čtete poštu přes pomalou linku z domova, za jejich přenos neplatíte. Zkrátka, pro uživatele jakoby ani nepřišly.

Další výhodou je, že centrální filtr funguje pro všechny uživatele, tedy i pro ty, kteří nechtějí nebo nejsou schopni se spamem jakkoli zabývat, něco si nastavovat nebo (ó hrůza) sami učit svůj vlastní bayesovský filtr.

Nevýhodou centrálního filtru je to, že je pro všechny stejný.

Naštěstí od června 2010 si každý může doručování spamu povolit a pak se v tom svinstvu dle libosti přehrabovat. No, ale když budete mít dojem, že vám byl zachycen hodně důležitý mail, možná to rádi uděláte.

Filtry na straně uživatele

Pokud vám vadí, že centrálním filtrem přece jen nějaký ten spam projde a chcete něco lepšího, máte v podstatě dvě možnosti:

  • používat (a učit) svůj vlastní bayesovský filtr obsažený v poštovním programu, např. v Mozille,
  • filtrovat dopisy podle údaje X-FSv-Spam-Level v hlavičce dopisu.

Vlastní bayesovský filtr v poštovním programu

Následující popis se týká bayesovského filtru v programu Mozilla Thunderbird. V jiných poštovních programech, pokud obsahují bayesovský filtr, to může vypadat jinak, ale princip bude podobný.

V terminologii Thunderbirdu se spam nazývá "junk" (čti džank, česky odpad, veteš), v české versi Thunderbirdu to je "nevyžádaná pošta".

Po instalaci Thunderbirdu je filtr aktivní, ale nově došlé dopisy, které pokládá za spam, Thunderbird zpočátku nezahazuje ani nikam nepřesouvá, pouze je označuje ikonkou ohníčku (plamínku).

Nelekněte se, pokud vám zpočátku Thunderbird označí jako spam všechny dopisy psané v češtině. To je normální, čeština je pro něj exotika. Prostě ho opravte, on se to rychle naučí.

Pokud Thunderbird označil ohníčkem legitimní dopis, klikněte myší na ten ohníček, ohníček zmizí a Thunderbird zároveň vezme na vědomí, že tento dopis nemá pokládat za spam. Pokud naopak nějaký spam nebyl označen ohníčkem, klikněte na místo, kde by ten ohníček měl být, kytička se objeví a Mozilla vezme na vědomí, že toto spam je. Místo strefování do ikonky ohníčku taky můžete mačkat klávesy "j" (zapálí) nebo "J" (zhasne). V obou případech se někde uvnitř Thunderbirdu přepočítají pravděpodobnosti. Tím opravováním chyb tedy Thunderbird učíte. Jde to poměrně rychle, množství chybně rozpoznaných dopisů velice rychle klesá.

Pro pokročilé: ohníčky nemusíte opravovat po jednom. Když si označíte blok dopisů a zmáčknete "j" nebo "J", Thunderbird se naučí všechny označené dopisy.

Samozřejmě musíte počítat s tím, že i dobře naučený filtr tu a tam něco rozpozná špatně. Nebuďte líní a opravujte jej. Zlepšíte tím jeho účinnost.

Dělá-li filtr už jen málo chyb, můžete zvýšit komfort tím, že si Thunderbird nastavíte tak, aby spam automaticky přesouval do nějaké složky. Nastavuje se to přes Nástroje / nastavení účtu / Nevyžádaná pošta. Defaultně Thunderbird přesouvá do složky "Junk", ale můžete si nastavit složku pojmenovanou jakkoli jinak.

Do té složky se občas podívejte, zda se tam omylem nedostal legitimní dopis. Pokud ano, zhasněte u toho dopisu plamínek, Thunderbird se tím poučí a novější verse Thunderbirdu dokonce sama dopis přesune do složky s doručenou poštou (jinak to můžete udělat sami).

Uživatelům serveru IMAP.fsv.cvut.cz doporučuji nastavit si pro automatické odkládání spamu složku "spam". Server IMAP v této složce automaticky maže všechny dopisy, které tam jsou déle než měsíc. Kromě toho Thunderbird takto nastavenou složku zobrazuje v horní části seznamu složek, tj. mezi ostatními speciálními složkami.

Nevýhodou bayesovského filtru na straně klienta obecně je to, že jeho inteligence je vázána na konkrétní instalaci poštovního programu (a navíc zpravidla na konkrétní poštovní účet), takže například filtr na počítači doma a ve škole budete muset učit každý zvlášť. Pokud však čtete poštu na serveru typu imap (obecném, nejen na našem fakultním), můžete si učení usnadnit tím, že si do vhodných složek na imap-serveru přichystáte sbírku spamu a sbírku hamu a tyto dvě sbírky pak použijete k učení.

Filtrace podle hlavičky X-FSv-Spam-Level

Jak bylo uvedeno výše, dopisy, které při testu spamu získaly 1 a více bodů, pokud jsou doručovány adresátům, je do hlavičky dopisu přidán údaj X-FSv-Spam-Level:, přičemž počet bodů je vyjádřen jednak desetinným číslem, jednak počtem hvězdiček. Konkrétně to vypadá asi takto:
X-FSv-Spam-Level: ******* (7.9) BAYES_99,MIME_HTML_ONLY,MISSING_DATE

Běžné poštovní programy ukazují z hlavičky dopisu pouze několik málo údajů. Typicky jen From:, To:, Date: a Subject:, v české versi Od:, Komu:, Datum: a Věc:. Skutečná hlavička dopisu ovšem obsahuje údajů mnohem více. K zobrazení kompletní hlavičky včetně případného údaje X-FSv-Spam-Level: je obvykle třeba použít speciální povel, který se v různých poštovních programech liší. V Thunderbirdu na to je dvojhmat Ctrl-U. V Outlooku klikněte na zprávu pravým tlačítkem myši, zvolte Vlastnosti a záložku Podrobnosti. V programu Pegasus Mail pro Windows na to je dvojhmat Ctrl-H,

Údaj X-FSv-Spam-Level lze využít k jednoduché filtraci podle počtu hvězdiček.

Dejme tomu, že se rozhodnete, že pro vás budou hranici spamu představovat tři body, tedy tři hvězdičky. Nastavíte si tedy filtr tak, aby dopis, který v hlavičce obsahuje textový řetězec "X-SPAM-Level: ***", byl filtrem přesunut do speciální poštovní složky nazvané třeba "spam".

Složku, do které si necháte dopisy s více hvězdičkami přesunovat, je samozřejmě nutné občas prohlížet, zda se do ní omylem nedostal nějaký legitimní dopis. A také je třeba nashromážděný spam mazat. Máte-li složku "spam" umístěnu na serveru IMAP.fsv.cvut.cz, pak dopisy starší než 30 dní maže server automaticky. Jinde se musíte o mazání postarat sami.

Zkušenosti ukazují, že nastavením nižší hranice než 5 bodů odfiltruje více spamu a riziko falešně pozitivního rozpoznání je docela přijatelné. Konkrétní nastavení této hranice (zda čtyři, tři nebo dokonce dva body) je schválně ponecháno na vás. Nebojte se to vyzkoušet. Konec konců, pokud budete pravidelně sledovat obsah složky "spam", o nic nepřijdete a nastavení můžete snadno změnit.

Většina poštovních programů výše popsaný filtr umí nastavit.

Pokud však čtete poštu na fakultním IMAP serveru IMAP.fsv.cvut.cz, pak vřele doporučuji nastavit si výše uvedený filtr přímo na tomto serveru (pak už to totiž nemusíte dělat v poštovním programu na vašem počítači). Filtr na serveru IMAP.fsv.cvut.cz se nastavuje přes www rozhraní na serveru WebMail.fsv.cvut.cz. V horním vodorovném menu klikněte na Filtry.

V dalším textu je popsáno jak si nastavit filtr v některých poštovních programech.

Dodejme, že populární Outlook Express zde má další mínus: v Outlook Expressu filtrovat dopisy podle údaje X-FSv-Spam-Level není možné. Znovu doporučuji Outlook Express nepoužívat.

Nastavení filtru pro Thunderbird

V horním menu zvolte Tools / Message filters (v české versi Nástroje / Poštovní filtry). Vyberte, pro který poštovní účet chcete nastavit filtr a klikněte na New (v české versi Nový).

Jako název filtru (Filter name) napište cokoli, třeba X-FSv-Spam-Level. Klikněte na rozbalovací políčko, kde vidíte Subject (Předmět) a úplně dole zvolte Customize... (Přizpůsobit...). Objeví se okénko, kde do horní řádky napište "X-FSv-Spam-Level" (bez těch uvozovek) a klikněte na Add (Přidat) a pak OK, čímž to okénko zmizí. Nyní se vraťte k tomu rozbalovacímu políčku a vyberte položku X-FSv-Spam-Level, kterou jste tam právě přidali. Ve vedlejším rozbalovacím políčku ponechte Contains (Obsahuje). No do dalšího políčka napište příslušný počet hvězdiček (***). Tím je definována podmínka "když hlavička X-FSv-Spam-Level obsahuje tři (nebo více) hvězdiček".

Nyní je třeba určit, co se má stát s dopisem, který tu podmínku splňuje. K tomu slouží dolní část formuláře, kde zaškrtněte Move to folder (Přesunout do složky). Pokud ještě nemáte složku (folder) nazvanou "spam", klikněte na New folder (Nová složka), napište název složky (tj. spam) a vyberte, zda se má složka vytvořit na serveru nebo mezi lokálními složkami (Local folders). Pokud používáte POP3, musíte zvolit Local folders. Pokud k poště přistupujete chytřejším protokolem IMAP, doporučuji vytvořit složku spam na serveru. Potvrďte vytvoření pravidla tlačítkem OK. Tím se vrátíte do okna Filter rules (Třídící filtry zpráv), kde v seznamu filtrů se objeví nově vytvořené pravidlo (filtr). Toto okno zavřete (křížkem vpravo nahoře nebo Alt-F4) a je to.

Dodejme, že Mozilla počínaje versí 1.4 obsahuje velmi kvalitní bayesovský antispamový filtr popsaný výše.

Dále, máte-li složku "spam" na serveru Imap.fsv.cvut.cz, asi už víte, že právě popsaný filtr lze výhodněji nastavit přímo na serveru a že dopisy starší než 30 dnů jsou zde serverem automaticky mazány.