Sistem elektronske pošte

Objavljeno: 23.2.2005 22:14 | Avtor: Jure Koren | Kategorija: Odprta scena | Revija: Marec 2005

Ko enkrat postavimo majhen strežnik za domačo ali pisarniško rabo, se nam odpre cela vrsta možnosti, ki jih prej nismo imeli. Le pri redkih ponudnikih internetnih storitev si lahko po smiselni ceni omislimo nekatere storitve, ki jih danes ni le udobno uporabljati, temveč so nujne za normalno delovanje v informacijski družbi. Ena izmed teh storitev omrežja je seveda elektronska pošta, ki je tudi najbolj razširjena oblika osebnega komuniciranja v internetu.

Razlogi za tegobe, ki danes pestijo uporabnike elektronske pošte, segajo v začetke razvoja internetnih povezav, ko zlorabe omrežja še niso predstavljale resnega problema za uporabnike. Tako imajo v sodobnih omrežjih protokoli, ki se jih uporablja za dostavljanje elektronske pošte, kar nekaj težav. Osnovni sistem elektronske pošte ne omogoča preverjanja istovetnosti pošiljatelja in je odprt za vse. Ker je danes zelo priljubljeno množično osebno oglaševanje prek elektronske pošte, morajo biti strežniki nastavljeni tako, da elektronsko pošto sprejemajo le iz svojih omrežij in za naslove, za katere so sami ciljni strežnik, a to še zdaleč ni dovolj, da bi se poplava nezaželenih sporočil zajezila.

Trnova pot sporočila

Ko pošljemo elektronsko pošto, naš računalnik sporočilo preda strežniku SMTP. Navadno je to strežnik našega internetnega ponudnika ali pa strežnik v krajevnem omrežju. Ta strežnik je praviloma nastavljen tako, da vedno sprejme našo pošto, ker prihaja iz krajevnega omrežja, ki mu strežnik lahko zaupa.

Strežnik potem pregleda naslove prejemnikov in v sistemu DNS poišče zapise MX za domene, ki so v naslovih prejemnikov. Če zapisa MX ne najde, poskuša najti še zapis A, če strežnika za dostavo ne najde, pa mora sporočilo zavrniti. Noben poštni strežnik v nobenem primeru ne sme tiho požreti sporočila, edina izjema od tega pravila pa je sporočilo o dvojni napaki (ko obvestila o napaki pri dostavi ni mogoče dostaviti, ker je pošiljateljev naslov neveljaven, nima smisla generirati še enega obvestila, ker ga nimamo komu poslati). Takoj ko poštni strežnik sporočilo sprejme in potrdi prejem, postane odgovoren za njegovo pravilno dostavo, če pa dostava ni možna, mora poslati sporočilo o napaki na naslov pošiljatelja.

Ko poštni strežnik sprejme pošto, ki je namenjena v poštni predal v samem strežniku, navadno sporočilo dostavi naravnost na disk (po tem, ko sporočilo pregleda in ugotovi, da v njem ni sumljivih priponk in da sporočilo ni nezaželeno). Rešitev za tako filtriranje pošte je precej, mi se bomo osredotočili na prosto dostopen par, ClamAV (prost protivirusni program za Linux) in SpamAssassin (napreden program za točkovanje sporočil glede na njihovo podobnost z običajno nezaželeno pošto). Ogledali si bomo tudi dva prijema, ki skupaj močno zmanjšata pritok nezaželene pošte in virusov.

Ko je sporočilo dostavljeno v uporabnikov predal, je njegova pot skozi omrežje SMTP končana. Do poštnega predala imajo uporabniki navadno dostop z oddaljenih delovnih postaj prek protokolov POP3 ali IMAP. POP3 protokol je namenjen prenašanju sporočil iz strežnika v uporabnikov računalnik, IMAP pa je prilagojen delu s pošto na strežniku, brez prenašanja sporočil v uporabnikov računalnik. Oba sistema imata dobre in slabe lastnosti, a v času vedno hitrejših omrežij in vedno večje potrebe po univerzalni dostopnosti do informacij je IMAP v prednosti. Če je pošta ves čas na strežniku, imamo do nje dostop vedno in povsod, če se le lahko povežemo v omrežje. Nekateri odjemalci omogočajo tudi sinhronizacijo prek protokola IMAP, tako da imamo vso pošto vedno hkrati na strežniku in v svojem računalniku.

Domači strežniki

Za poštni strežnik za domačo rabo ali manjše podjetje si navadno želimo, da strežnik sprejema pošto za določeno domeno in da imajo lahko do poštnih predalov na njem uporabniki dostop prek protokola IMAP ali POP3, tako iz domačega omrežja kot iz kateregakoli v internet povezanega računalnika. Navadno si želimo tudi spletni vmesnik za pregledovanje pošte, kadar nimamo pri roki poštnega odjemalca (recimo pri dostopu iz javnega terminala). V poplavi nezaželene pošte in takih ali drugačnih škodljivih datotek, ki se že nekaj časa razširjajo kot elektronska sporočila, nam bo prišel prav tudi program, ki tako pošto filtrira oz. zmanjša možnosti, da jo naš strežnik sploh sprejme.

Ker praviloma uporabniki poleg poštnih predalov uporabljajo tudi druge storitve na strežniku (zelo pogosto je to dostop do datotek prek krajevnega omrežja in po internetu), bo najenostavneje, da na sistemu ustvarimo unixovska uporabniška imena in jim dodelimo pripadajoča gesla. S temi se potem uporabniki prijavljajo v strežnik, ne glede na storitev, ki jo uporabljajo. Izvedba je enostavna, vse distribucije pa omogočajo tako postavitev strežnika na zelo podoben način. Tak sistem ima seveda določene pomanjkljivosti (dodajanje uporabnikov mora izvajati sistemski upravitelj), a pri majhnih sistemih (do nekaj deset uporabnikov) nam to ne bo povzročalo sivih las. Pri sistemih z več kot približno tisoč uporabniki bomo morali poseči po drugačnih rešitvah, predvsem zato, da razbremenimo upravitelja strežnika in preložimo nekaj njegovega dela na človeka z manjšimi privilegiji, ki bo zadolžen le za upravljanje uporabniških računov.

Uporabniki bodo imeli dostop do elektronske pošte skozi protokola POP3 ali IMAP. Zaradi učinkovitosti datotečnih sistemov se t. i. Maildir način zapisa uporabnikovega poštnega predala uporablja že domala povsod. Pri tem zapisu je vsako sporočilo shranjeno v svojo datoteko v strežniku, drevesna struktura map pa definira tudi mape s sporočili, kot jih vidimo prek strežnika IMAP. Courier-imap je programski paket, ki združuje strežnik IMAP in POP3 in je namenjen delu s takim zapisom poštnih predalov. Zapis mora podpirati tudi strežnik SMTP, a večina sodobnih strežnikov ta zapis lahko tako ali drugače podpre.

Namestitev in nastavitve

Delovanje sistema e-pošte je, podobno kot večina drugih internetnih storitev, vezano na pravilno delovanje in nastavitve storitve DNS oziroma podatkov v njem. Za preproste postavitve z eno samo domeno ni treba poglobljenega znanja o DNS, vsekakor pa priporočamo, da vam kak znalec pregleda nastavitve. Na spletu so na voljo tudi orodja, ki samodejno preverijo pravilno delovanje domenskega strežnika in ali so podatki v njem videti pravilni.

Kot strežnik SMTP priporočamo Postfix. Program se že leta izkazuje kot eden najučinkovitejših, tako glede varnosti kot glede nastavljivosti. Čeprav se funkcionalno težko kosa s programom sendmail, ki še vedno velja za referenčni strežnik SMTP, bomo v Postfixu težko pogrešali karkoli, saj ne vsebuje le zelo eksotičnih možnosti, ki jih potrebujejo le redki. Poleg tega gre Postfix v korak s časom in ponuja nekatere zelo učinkovite prijeme za boj z nezaželeno pošto.

Postfix

Dokumentacija tega strežnika SMTP je odlična, a žal ni na voljo v slovenščini. Program bomo navadno namestili kar skozi orodje za upravljanje programskih paketov naše distribucije, privzete nastavitve pa bomo potem spremenili, da bodo ustrezale našim potrebam.

Prvo pravilo, ki se ga moramo držati nujno, brez izjem (tega ni mogoče dovolj poudariti) je, da nikoli ne puščajte vrat svojega strežnika SMTP odprtih. Strežnik ne sme sprejemati pošte za poljubnega naslovnika s poljubnega naslova v omrežju. Nikoli. Če to storite in je vaš strežnik povezan v internet, lahko traja le nekaj sekund, da nekdo odkrije, da vaš strežnik sprejema pošto za poljubnega naslovnika, in ubogim naslovnikom pošlje goro nezaželene pošte, vi pa boste nepridipravu s tem močno olajšali delo, saj se bo z dostavo trudil vaš strežnik (ki resno jemlje odgovornost za dostavo, ko enkrat uspešno sprejme sporočilo).

V sistemu DNS so za vsako domeno (npr. domena.si) različni zapisi. Zapisi SOA definirajo domene, zapisi PTR povezujejo naslove IP in imena strežnikov, zapisi A pa imena strežnikov z naslovi IP. Vsaka običajna domena ima tudi svoj zapis MX, ki določa strežnike in njihove prednosti pri dostavi pošte. Za domače strežnike imamo navadno en tak zapis, za večje sisteme in domene z veliko prometa pa lahko uredimo več primarnih MX strežnikov ter dodatne, sekundarne strežnike z nižjo prednostjo, ki prevzamejo breme, če primarni niso dosegljivi.

Za dostavljanje elektronskih sporočil v strežnik ne potrebujemo zapisa MX, za domeno pa je zelo priporočljiv. Če pošiljamo pošto na računalnik streznik.domena.si (uporabnik@streznik.domena.si), bo poštni strežnik v sistemu DNS najprej poiskal zapis MX za ime streznik.domena.si. Ko ga ne bo našel, bo poiskal zapis A, kjer bo našel naslov IP tega strežnika, tja pa bo poskušal poslati sporočilo. Če bomo sporočilo poskušali poslati na naslov@domena.si, bo strežnik najprej poiskal zapis MX za domena.si (ki ga bo najverjetneje našel), sicer pa spet zapis A. Strežnik, naveden v zapisu MX za dano domeno, mora sprejeti sporočila, naslovljena na to domeno.

Strežnik mora sprejemati pošto, ki je namenjena domeni, za katero je strežnik naveden kot strežnik MX v sistemu DNS. Priročno je tudi, da strežnik sprejema pošto iz vašega domačega omrežja in jo posreduje naprej. Kot že rečeno, pa nikakor ne sme sprejeti pošte od neznanega računalnika v internetu in jo poslati na naslov, za katerega sam ni naveden kot strežnik MX.

Zapisov MX je lahko več, vendar je za domače potrebe dovolj, če imamo le enega. Če nam bo kdaj izpadla omrežna povezava ali elektrika ali če bo iz kakih drugih vzrokov naš strežnik nedosegljiv, bodo strežniki, ki nam želijo poslati pošto, potrpežljivo počakali. Navadno pošiljatelj dobi opozorilo, da po štirih urah sporočila še ni bilo moč dostaviti, z dostavo pa strežniki dokončno obupajo šele po petih dnevih. Virusi in pošiljatelji nezaželene pošte praviloma niso tako potrpežljivi, kar bomo uporabili v svoj prid s tehnologijo, ki se imenuje "sivi seznam" (opisana je spodaj).

Navadno strežnik nastavimo tudi tako, da zavrača pošto z neobstoječih domen in pošto za neobstoječe naslove, še preden jo sprejme v obdelavo. Zelo učinkovita tehnika je tudi preverjanje naslova pošiljatelja, a je primerna le za manjše strežnike (v malih in srednje velikih podjetjih in doma), saj preverjanje naslova pošiljatelja lahko vzame do nekaj sekund, to pa na strežnikih, ki vsako sekundo prejmejo veliko sporočil, lahko zahteva precejšnje sistemske vire.

Postfixu lahko naročimo tudi pregledovanje vsebine. Za to je več možnosti, a nam navadno priskoči na pomoč kak zunanji program. Eden najbolj priljubljenih je amavis (ki ga že nekaj časa vzdržuje in razvija Mark Martinec z Instituta Jožef Stefan v Ljubljani). Program amavis združuje strežnik SMTP in celo vrsto programov za prepoznavanje virusov v elektronski pošti, hkrati pa omogoča uporabo programa SpamAssassin za točkovanje sporočil po kriterijih, ki nam lahko v veliki večini primerov povedo, ali je dano sporočilo t. i. spam oz. nezaželena pošta ali pa ham oz. legitimno sporočilo. Podatki o točkovanju se dodajo v glavo sporočila, programi za branje elektronske pošte pa nam lahko na podlagi teh zapisov taka sporočila samodejno mečejo v posebno mapo. Ker točkovanje temelji na statističnih podatkih, ne more biti stoodstotno zanesljivo, zato je priporočljivo sporočila, ki so označena kot nezaželena, občasno preleteti (da se prepričamo, ali nismo izgubili kakega legitimnega sporočila).

Amavis

Program, ki omogoča, da pošto in njene priponke pregledamo, ali je okužena z virusi, in okuženo pošto zavržemo (pošiljanje obvestil o okuženih elektronskih sporočilih je neprimerno, saj večina sodobnih virusov ponaredi naslov pošiljatelja ali pa ga naključno izbere iz adresarja oz. z diska računalnika žrtve, tako da obvestilo o napaki pošljemo na naključno izbrani naslov, ne pa lastniku okuženega računalnika). Hkrati omogoča uporabo naprednega sistema za označevanje nezaželene pošte SpamAssassin. Program se uporablja po v vsem svetu, primeren je tako za majhne kot velike sisteme. Amavis ni protivirusni program, deluje le kot povezovalec sistema elektronske pošte, protivirusnih programov in programov za boj proti nezaželeni elektronski pošti.

ClamAV

Clam AntiVirus je prvi široko rabljeni prosti protivirusni program (www.clamav.net), ki svojo zbirko znanih virusov tudi brezplačno redno in avtomatsko posodablja, poleg tega pa od različice 0.80 naprej ujame tudi t. i. splošne viruse in celo nekatere vrste elektronskih prevar. Silno uporabna je tudi možnost prepoznavanja virusov v šifriranih stisnjenih datotekah. Ljudsko izročilo pravi, da je ClamAV počasnejši od komercialnih alternativ, vendar nas na majhnih sistemih to ne bo motilo (ClamAV avtor uporablja na sistemu z več deset tisoč uporabniki, kjer se odlično obnese).

SpamAssassin

SpamAssassin je program, ki na podlagi vsebine in glave sporočila izračuna, kolikšna je verjetnost, da je dano sporočilo t. i. spam. Pri tem si pomaga s statistično analizo besedila (Bayes) in z različnimi lastnostmi glave in vsebine. Preveč klicajev, prevečkrat omenjena viagra ali nekaj ponujeno zastonj, lahko prinese točko ali dve. Končno število točk lahko ob primerni vzdrževanosti statističnih podatkov o besedilu sporočil (temu rečemo "učenje" Bayesove zbirke podatkov) v več kot 95 % primerov pravilno identificira nezaželeno pošto z manj kot enim sporočilom na 10.000 sporočil, označenim kot nezaželeno, ko je legitimno. Žal gredo tudi pošiljatelji nezaželene pošte v korak s časom, zato je treba zbirke pravil, po katerih se sporočilo točkuje, redno posodabljati, da prepoznavanje ostane na zadovoljivi ravni, v kombinaciji z drugimi prijemi za boj proti nezaželeni pošti pa je mogoče elektronsko pošto še vedno povsem udobno uporabljati. SpamAssassin je veliko bolj požrešen pri sistemskih virih, zato ga je na velikih sistemih treba pazljivo nastaviti, za manjše strežnike pa so privzete nastavitve povsem ustrezne. Vključiti velja še analizo Bayes in internetno preverjanje pri javnih črnih listah.

Sivi seznami

Zaradi velike količine poslanih sporočil si virusi in pošiljatelji neželene pošte ne morejo in nočejo privoščiti zagotavljanja dostave ali vsaj prejema sporočila o napaki ob nedostavi, navadno pa tako in tako kot pošiljatelja navedejo neobstoječi naslov (kar pomeni, da se sporočilo ob morebitni napaki nima kam vrniti ali pa se vrne nekomu, ki ni poslal izvirnega sporočila). S prijemom sivih seznamov malce upočasnimo celoten sistem elektronske pošte, saj sporočilo, ki z danega internetnega naslova prihaja prvič, vedno začasno zavrnemo. Program si zapomni, kdaj je zavrnil sporočilo, komu je bilo namenjeno in s katerega naslova IP je prišlo. Če je strežniku, ki sporočilo pošilja, dovolj do tega, da bo sporočilo zares dostavljeno (praktično vsi legitimni strežniki SMTP, ki niso namenjeni zgolj razpečevanju neželenih sporočil), vedno poskusi še vsaj nekajkrat. Navadno že v nekaj minutah ali še hitreje. Vsa druga sporočila lahko tako elegantno zavržemo, še preden prispejo v naš strežnik, kar pomeni, da naš strežnik tudi ni odgovoren za končno dostavo sporočila in mu tako ni treba poskušati poslati obvestila o napaki na neobstoječ naslov in dostavljati virusov in črvov. Sivi seznami povečajo porabo virov le malenkostno, a so zelo učinkoviti.

Povezave

http://www.postfix.org/

http://www.ijs.si/software/amavisd/

http://www.clamav.net/

http://spamassassin.apache.org/

http://isg.ee.ethz.ch/tools/postgrey/

Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!
Prijava

ph

Komentirajo lahko le prijavljeni uporabniki