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
|