| 4-05-04 15:12 Spamassassin - postavljanje i uporaba
 
  piše SLOBODAN MILNOVIĆ
 
 
 U ovom članku opisat ću način postavljanja spamassassina. Pri tome,
 ograničit ću se na [1] Debian GNU/Linux distribuciju, koja se koristi
 na svim CARNet i SRCE serverima, no razlike u odnosu na druge
 distribucije su minorne i svode se na drukčije paketne sustave za
 postavljanje programa na računalo, kao i na eventualni drugačiji
 raspored datoteka na datotečnom sustavu, no način postavljanja
 parametara je isti. Ujedno, spamassassin nije ograničen samo na
 GNU/Linux kao i na ostale Unix bazirane operacijske sustave, već
 postoji i inačica za Microsoft Windows. Za detalje pogledajte
 [2]. S obzirom da CARNet serveri koriste sendmail [3] kao MTA (Mail
 Transport Agent), u daljnjem tekstu ću prikazati kombinaciju
 spamassassina, procmaila [4] i sendmaila, dok za druge MTA
 dokumentaciju možete naći na spamassassin web stranicama.
   Ujedno, odgovore na često postavljena pitanja možete pronaći u
 spamassassin wikipedii [5].
         Sadržaj:
   1. Uvod
   2. Instalacija
   3. Prilagođavanje postavki spamassassina
 3.1. Svaki korisnik samostalno provjerava e-mail poruke
 3.2. Server provjerava poruke za sve korisnike
   4. Podučavanje spamassassina u prepoznavanju spama i hama
 4.1. Svaki korisnik ima svoju definiciju spama i hama
 4.2. Server ima definiciju spama i hama za sve korisnike
   5. Korišteni pojmovi
   6. Dodatne informacije
            1. Uvod
   Što je spamassasin? Kao što je navedeno na početnim web stranicama
 [2], spamassassin je mail filter koji prepoznaje spam.
   Da li nam je takvo nešto uopće potrebno? Da. Po zadnjim
 istraživanjima, spam e-mail poruke trenutno su više od 50% svih e-mail
 poruka koje se šalju. S tim da se udjel spama u e-mail porukama
 povećava. Alati za otkrivanje i uklanjanje spam poruka već duže
 vrijeme nisu pomodna stvar, već potreba, želimo li da naš sustav, kao
 i naši korisnici, efikasno koriste raspoložive resurse. Zbog toga
 potrebno je koristiti nešto što bi nam barem olakšalo, ako već ne u
 potpunosti, označavanje spam e-mail poruka kao takvih, te uklanjanje
 istih sa sustava.  
   Spamassassin sam po sebi nije 100% zaštita od spama, no uz
 odgovarajuće postavljanje parametara rada, možemo računati na 80% -
 90% efikasnost u otkrivanju spam poruka kao takvih. Kombinacijom alata
 za uklanjanje spama i alata za uklanjanje virusa, osigurali smo našim
 korisnicima siguran i miran rad pri korištenju Internet resursa i
 usluga. 
   Kako spamassassin otkriva spam? Postoji nekoliko podsustava koje
 spamassassin koristi da bi napravio razliku između spama i korisnih
 e-mail poruka (onih koje želimo primiti).
    * Header tests
  Provjera zaglavlja poruke - kod nekih poruka se već po zaglavlju
  poruke može prepoznati radi li se o spamu ili ne.
    * Body phrase tests
  Tijela poruke (dio poruke u kojemu se nalazi sam sadržaj poruke) u
  sebi mogu sadržavati neke izraze tipične za spam. Npr, ako  se u
  poruci nalaze izrazi "viagra" "drug" i slične, vrlo vjerojatno se
  radi o spam porukama.
    * Bayesian filtering 
  Ovo je napredni način analiziranja poruke, pri čemu se koriste
  statističke analize sadržaja [6] [7].
    * Automatic address whitelist/blacklist
  Spamassassin može samostalno kreirati popis poželjnih (whitelist) i
  nepoželjnih (blacklist) e-mail adresa s kojih nam dolazi poruka.
    * Manual address whitelist/blacklist
  Možemo i sami kreirati popis poželjnih i nepoželjnih e-mail adresa.
    * Collaborative spam identification databases (DCC, Pyzor, Razor2).
  Način provjere poruke tako da spamassassin kontaktira on-line baze s
  popisom spam poruka.
    * RBL (Realtime Blackhole Lists)
  Stvaranje popisa nepoželjnih poruka u stvarnom vremenu (istovremeno
  dok spamassassin radi, bilježi koje su poruke u redu a koje nisu) na
  osnovu IP adresa servera s kojih je došla poruka. Ovisno o broju spam
  poruka koje su došle s pojedine adrese, svaka e-mail poruka se
  procjenjuje i na osnovu toga.
    * Character sets and locales 
  Analiza poruka na osnovu toga koji znakovi se pojavljuju u
  poruci. Npr. velika je vjerojatnost da primatelj u Europi ne koristi
  Kineske, Korejske i slične znakove, te tako možemo procijeniti da li
  je poruka možda spam.
   Kombinacijom ovih različitih načina otkrivanja spama, spamassassin je
 u stanju ispravno prepoznati većinu poruka. Osim toga, spamassassin
 može učiti što je spam a što nije, i na taj način možemo postići skoro
 100% točnost prepoznavanja poruke.
              2. Instalacija
   Za instalaciju na Debian GNU/Linux, potrebno nam je dovoljno prostora
 na diskovima, kao i neka od novijih inačica Debiana, minimalno inačica
 3, poznata još i pod nazivom Debian Woody. Instalacija je moguća i na
 starije inačice ove distribucije, no u tom slučaju nećemo biti u
 mogućnosti koristiti zadnju inačicu spamassassina. Postoji i
 izmjenjena inačica spamassassina koja se koristi u sklopu CARNet
 ustanova, a prilagođena je za njih. U daljnjem tekstu opisat ću upravo
 tu inačicu.
   Sam postupak instalacije je vrlo jednostavan. U komandnom retku
 (prompt), treba unijeti slijedeću naredbu:
   apt-get install spamassassin-cn
   Debian instalacijski sustav će nam javiti ako su mu potrebni dodatni
 programi za ispravan rad spamassassina, tako da trebamo potvrditi
 skidanje i postavljanje istih. Spamassassin će se automatski pokrenuti
 i početi s radom, a mi možemo nakon toga prilagoditi postavke
 vlastitim potrebama.
   Vrlo je vjerojatno da je spamassassin-cn paket već instaliran na
 sustav ako se radi o e-mail serveru, jer u sklopu amavis-cn paketa
 (takozvani backend sustav, svaki e-mail se prosljeđuje antispam i
 antivirus programima, na osnovu čega amavis zaključuje što će učiniti
 s pojedinim e-mailom)
   U slučaju da procmail program nije postavljen na sustavu, učinit ćemo
 to sa
   apt-get install procmail
         	3. Prilagođavanje postavki spamassassina [8]
   Spamassassin može raditi u dva načina rada. 
   	- Svaki korisnik sam pokreće filtriranje e-mail poruka
            Prednost: Što je spam za jednog korisnika, nije i za drugog,
          neki korisnici možda ne žele napraviti filtriranje poruka,
          svaki korisnik posjeduje vlastitu definiciju spama i hama.
   	 Mana: Opterećenje sustava u slučaju većeg broja korisnika,
 	 otežano održavanje spam i ham definicija.
   	- Svaki e-mail se provjerava na razini operacijskog sustava
   	 Prednost: Postoji samo jedna definicija spama i hama, koju je znatno
 	 lakše održavati.
   	 Mana: Nismo nikad sigurni da li je e-mail dobro filtriran za svakog
 	 korisnika. Ovo se može ispraviti do određene granice.
     Nakon što odlučimo koja varijanta nama više odgovara, možemo krenuti s
 konfiguracijom. 
         	3.1. Svaki korisnik samostalno provjerava e-mail poruke
   Ovo je standardna postavka spamassassin-cn paketa nakon postavljanja
 na sustav. 
   Kao dotični korisnik, treba unijeti slijedeće naredbe u prompt:
   cd ~
 mkdir .procmail
 touch .procmail/proclog
 mkdir Mail
 touch Mail/mbox
 touch .procmailrc
   Ako korisnik čita e-mail putem POP3 protokola, u .procmailrc datoteku
 (s nekim tekst editorom) treba unijeti slijedeće: 
   # --- početak .procmailrc datoteke ---
   SHELL=/bin/sh
 PATH=/bin:/usr/bin
 PMDIR=$HOME/.procmail
 LOGABSTRACT=all
 MAILDIR=$HOME/Mail       
 LOGFILE=$PMDIR/proclog   
 VERBOSE=off
   #Spamassassin start
 :0fw
 | /usr/bin/spamc
 #Spamassassin end
   # --- kraj .procmailrc datoteke ---
   Procmail prosljeđuje e-mail poruke spamassassinu, koji provjerava
 poruke, i zatim, s dodanim zaglavljima (headerima) označava da li je
 poruka spam ili ne, nakon čega se poruka prosljeđuje korisniku. Na
 osnovu tih dodanih zaglavlja, korisnik može filtrirati poruku
 koristeći svoj program za e-mail, nakon što ju skine sa servera.
   Ako korisnik čita e-mail direktno na tom serveru (koristeći npr. pine
 ili mutt), ili putem IMAP protokola, u .procmailrc treba umjesto
 gornjeg primjera unijeti slijedeći:
   # --- početak .procmailrc datoteke
   SHELL=/bin/sh
 PATH=/bin:/usr/bin
 PMDIR=$HOME/.procmail
 LOGABSTRACT=all
 MAILDIR=$HOME/Mail       
 LOGFILE=$PMDIR/proclog   
 VERBOSE=off
 DEFAULT=$MAILDIR/mbox
     #Spamassassin start
 :0fw
 | /usr/bin/spamc
   :0:
 * ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*
 spam10
   :0:
 * ^X-Spam-Status: Yes
 spam5-10
   #Spamassassin end
   # --- kraj .procmailrc datoteke ---
   Procmail će filtrirati e-mail poruke ovisno o parametrima koje smo mu
 stavili. 
   U slučaju da je e-mail spam, spamassassin će ga označiti tako da će u
 zaglavlje poruke ubaciti 
   X-Spam-Status: Yes
   To vrijedi za sve poruke kojima spamassassin dodjeli rezultat 5.0 ili
 veći, jer su takve poruke vjerojatno spam. Osim toga, spamassassin će
 staviti i zaglavlje
   X-Spam-Level: *******
   gdje će broj zvjezdica biti onoliki koliki je cjelobrojni rezultat za
 pojedinu poruku. Npr, za rezultat 7.5, bit će 7 zvjezdica.
   U ovom primjeru, sve što ima X-Spam-Level jednak ili veći 10 gotovo
 sigurno je spam, i prosljeđujemo ga u datoteku spam10, koju možemo
 kasnije provjeravati. Sve ostalo, što je između 5.0 i 9.9 ide u
 spam5-10 datoteku, koju bi trebalo češće provjeravati da li sadrži
 spam ili ne, jer postoji mogućnost da poruke označene kao spam to ipak
 nisu. 
                3.2. Server provjerava poruke za sve korisnike
   U /etc/procmailrc treba dodati ove retke:
   DROPPRIVS=yes
   :0fw
 | /usr/bin/spamc
   i u .procmailrc od svakog korisnika treba maknuti ":0fw" i 
 "| /usr/bin/spamc" retke iz $HOME poddirektorija svakog korisnika.
   Na taj način poruka neće nepotrebno prolaziti više od jednom kroz
 spamassassin provjeru.
   Za detalje o postavljanju i korištenju procmail alata, pogledajte
 [4]. 
       	4. Podučavanje spamassassina
   Nažalost, autori alata za slanje spama su svjesni postojanja raznih
 antispam alata, tako da je sve teže prepoznati što je ispravan email a
 što spam. U poruku dodaju čudne znakove, mjenjaju raspored slova i
 slično. 
   Zbog toga moramo podučiti spamassassina da razlikuje nove varijante
 spama. To postižemo sa programom sa-learn, kojemu prosljedimo poruku
 kao spam ili ham, nakon čega taj program obavi analizu te poruke i
 zapiše u datoteke sa definicijom spama i hama.
   sa-learn --ham --local ime_datoteke_koja_sadrži_email
   će naučiti spamassassin da je sadržaj datoteke (s tim da je datoteka u
 standardnom mailbox formatu) ham odnosno dobra poruka a
   sa-learn --spam --local ime_datoteke_koja_sadrži_email
   će naučiti spamassassin da je sadržaj datoteke spam. Opcije --ham i
 --spam označavaju sa-learn programu o kakvom se sadržaju radi, a sa
 --local onemogućujemo mrežni rad (ugađati će se samo lokalne
 definicije). 
   Za detalje možete pogledati 
   man 1p sa-learn
                4.1. Svaki korisnik ima svoju definiciju spama i hama
   U slučaju da je server postavljen kao u 3.1. gdje svaki korisnik ima
 pokrenuto vlastito filtriranje, definicije spama i hama se nalaze u
 $HOME poddirektoriju pojedinog korisnika
   $HOME/.spamassassin/
   i to datoteke sa ham definicijama
   auto-whitelist*
   i datoteke sa spam definicijama
   bayes*
   tako da za svaki sumnjivi e-mail korisnik mora pokrenuti sa-learn
 program, kako je i navedeno u 4. odjeljku.
         	4.2. Server ima definiciju spama i hama za sve korisnike
   Ova inačica postavki omogućava centralni nadzor nad protokom e-mail
 poruka. 
   Omogućit ćemo autoriziranom korisniku da nakon primitka e-mail poruke
 (a pod uvjetom da je spamassassin krivo označio tu poruku), proslijedi
 spamassassinu da li je u pitanju spam ili ham, i na taj način ćemo
 podučiti spamassassin da više ne čini istu grešku.
   Kreirajmo korisnički račun koji će sadržavati definicije spama i
 hama. U komandnom retku unesimo slijedeće:
   adduser sharedspam
 mkdir /home/sharedspam/.spamassassin/
 chmod 755 /home/sharedspam
 chmod 777 /home/sharedspam/.spamassassin/  
 touch /home/sharedspam/.spamassassin/user_prefs
 chmod 644 /home/sharedspam/.spamassassin/user_prefs
 touch /home/sharedspam/.spamassassin/auto-whitelist
 chmod 666 /home/sharedspam/.spamassassin/auto-whitelist
   U /etc/spamassassin/local.rc datoteci dodajmo slijedeće retke (ili ih
 promjenimo ako već postoje):
   # --- početak local.rc datoteke ---
   bayes_path /home/sharedspam/.spamassassin/bayes
 auto_whitelist_path /home/sharedspam/.spamassassin/auto-whitelist
 bayes_file_mode 777
 auto_whitelist_file_mode 777
 use_bayes 1
 auto_learn 1
 bayes_ignore_header ReSent-Date
 bayes_ignore_header ReSent-From
 bayes_ignore_header ReSent-Message-ID
 bayes_ignore_header ReSent-Subject
 bayes_ignore_header ReSent-To
 bayes_ignore_header Resent-Date
 bayes_ignore_header Resent-From
 bayes_ignore_header Resent-Message-ID
 bayes_ignore_header Resent-Subject
 bayes_ignore_header Resent-To
   # --- kraj local.rc datoteke ---
   Redovi "bayes_ignore_header" govore bayes filteru da ignorira
 zaglavlja koja generiraju MUA (Mail User Agent) programi korisnika
 koji šalju spamassassinu e-mail poruke sa spam ili ham sadržajem, radi
 učenja spamassassina.
   Nakon unosa promjena u local.cf, treba ponovno pokrenuti spamassassin
 sa
   /etc/init.d/spamassassin restart
     Dodajmo korisničke račune na koje će se slati spam i ham poruke, radi
 učenja spamassassina. U komandnom retku unesimo slijedeće: 
   adduser spamtrap
 cd /home/spamtrap
 ln -sf ../sharedspam/.spamassassin .spamassassin
 mkdir Mail .procmail
 chown spamtrap.spamtrap Mail .procmail
 adduser hamtrap
 cd /home/hamtrap
 ln -sf ../sharedspam/.spamassassin .spamassassin
 mkdir Mail .procmail
 chown hamtrap.hamtrap Mail .procmail
   Ovo ćemo staviti u /home/spamtrap/.procmailrc
   # --- početak .procmailrc datoteke ---
   SHELL=/bin/sh
 PATH=/bin:/usr/bin
 PMDIR=$HOME/.procmail
 LOGABSTRACT=all
 MAILDIR=$HOME/Mail      
 LOGFILE=$PMDIR/proclog  
 VERBOSE=off
   #Spamassassin start
   :0
 * > 256000
 toobigtoreport
   :0c: spamassassin.lock
 | /usr/bin/spamassassin -r -d -a
   :0:
 learned-spam
   #Spamassassin end
   # --- kraj .procmailrc datoteke ---
   Ovo ćemo staviti u /home/hamtrap/.procmailrc
   # --- početak .procmailrc datoteke ---
   SHELL=/bin/sh
 PATH=/bin:/usr/bin
 PMDIR=$HOME/.procmail
 LOGABSTRACT=all
 MAILDIR=$HOME/Mail      #you'd better make sure it exists
 LOGFILE=$PMDIR/proclog   #recommended
 VERBOSE=off
   #Spamassassin start
   :0
 * > 256000
 toobigtoreport
   :0c: spamassassin.lock
 | /usr/bin/sa-learn --ham --local
   #:0:
 #learned-ham
   #Spamassassin end
   # --- kraj .procmailrc datoteke ---
   Postoje dvije glavne razlike između ove dvije .procmailrc datoteke:
   | /usr/bin/spamassassin -r -d -a
   naspram
   | /usr/bin/sa-learn --ham --single --local
   Kad netko od naših korisnika prijavi spam, spamassassin -r će učiniti
 sve što bi htjeli da učini - poslat će potpise poruka online bazama
 spama Razor, Pyzor i DCC (ako smo postavili neki od njih), i obnovit
 će sadržaj lokalnih definicija. No, ako korisnik pošalje ham, ne
 želimo da privatni e-mail ode van servera, i zato ćemo koristiti
 sa-learn, koji će osvježiti sadržaj samo lokalnih definicija.
   learned-spam
   naspram
   #learned-ham
   Nakon što smo proslijedili spam u lokalne i udaljene (remote) baze,
 spremit ćemo kopije spam poruka (datoteka learned-spam), jer bi
 kasnije popis tih spam poruka mogli poslati na Spamarchive [9]. Na taj
 način možemo pomoći ljudima koji razvijaju antispam programe. No
 čuvanje ispravnih poruka (datoteka learned-ham) ne bi bilo u redu
 (osim ako sigurnosna politika organizacije to eksplicitno ne nalaže),
 a korisnici bi mogli poslati poruke koje ne bi smjele napustiti
 organizaciju u kojoj se nalaze.
   Nakon što to postavimo, treba naložiti korisnicima da e-mail poruke
 bouncaju (NE forward) na odgovarajuće korisničke račune -
 spamtrap@mojadomena.negdje za spam poruke i hamtrap@mojadomena.negdje
 za ham poruke. Za početak, bilo bi zgodno primiti barem po 1000 spam i
 ham poruka, da spamassassin može izgenerirati dovoljno precizne
 definicije poruka. 
   Ako korisnici naprave forward poruke, sa-learn će zapamtiti e-mail
 adresu korisnika koji šalje a ne originalnu od spamera, što može
 prouzročiti probleme. Korisnici moraju napraviti bounce poruke a ne
 forward. 
   Radi sigurnosti, možemo posložiti spamtrap i hamtrap kao moderirane
 mail liste, na koje će moći slati samo pojedini korisnici, i to točno
 određene sadržaje, tako da na spamtrap zbilja završi samo spam a na
 hamtrap zbilja samo ham.
         	5. Korišteni pojmovi
   procmail - alat za obradu i preslagivanje e-mail poruka [4]
   spam - neželjene e-mail poruke koje nam šalju (između ostalog) razni
 oglašivači, no to mogu biti poruke koje nas žele prevariti da
 pošiljateljima poruka omogućimo pristup do npr. bankovnih računa.
   ham - e-mail poruke koje želimo primiti, sa sadržajem koji je za nas
 bitan i/ili koristan.
   MTA - Mail Transport Agent - program ili skup programa zaduženi za
 prijenos pojedinih e-mail poruka između dva ili više e-mail servera,
 npr. sendmail, postfix, qmail.
   MUA - Mail User Agent - program za primanje, čitanje i slanje e-mail
 poruka, Npr. pine, mutt, outlook.
         	6. Dodatne informacije
   [1] Debian GNU/Linux distribucija
 http://www.debian.org
   [2] Početne stranice spamassassin alata:
 http://www.spamassassin.org
   [3] Sendmail
 http://www.sendmail.org
   [4] Procmail 
 http://www.procmail.org
   [5] Spamassassin wikipedia (često postavljena pitanja o spamassassinu)
 http://wiki.apache.org/spamassassin/
   [6] Uvod u bayesian filtering
 http://www.gfi.com/mes/wpbayesian.htm
   [7] Tehnički opis i primjer rada bayesian filtering
 http://www.paulgraham.com/spam.html
   [8] Za ovaj članak korišten je između ostalog i slijedeći original
 http://www.stearns.org/doc/spamassassin-setup.current.html
   [9] Online arhiva spam poruka (jedna od mnogih)
 http://www.spamarchive.org
   
 
 |