Ponekad možemo naići na podatke o broju poslanih e-mailova u jedinici vremena u čitavom svijetu. Iako ne postoji precizna metoda po kojoj bi to netko izračunao, jasno je da su brojke ogromne. Lakše nam je tako pojmiti s koliko se poruka dnevno mora obračunati prosječan mrežno aktivniji korisnik. Čak i ako iz računice izbacimo spam, ostaje nam velika količina različito važnih poruka. Kako je danas vrijeme najskuplje, dobro će nam doći način automatizacije postupka sortiranja i brisanja mailova. U tu svrhu iskoristit ćemo program imena procmail. On može sortirati dolazni mail u mape (praktično kod mailing listi), pokretati programe po primitku maila (zvučna obavijest) ili prosljeđivati ih na drugu adresu. Kriteriji mogu biti bilo koje polje zaglavlja (pošiljatelj, naslov, ključne riječi), duljina poruke, prisutnost privitaka ili sam tekst poruke. To nam može poslužiti i za elementarnu borbu protiv spama, no kako spammeri sve više evoluiraju, to je sve teže. Za to se onda koriste dodatni programi (Spamassassin, dspam).
Instalacija
Procmail je namijenjen za Linux/UNIX mail servere. Samim tim moramo ga koristiti
upravo tamo, prije nego što pokupimo mail na lokalno računalo. Potrebno je
samo prebaciti datoteku imena .procmail (točka na početku je nužna) u naš
udaljeni početni direktorij i sustav će ju automatski početi koristiti (u
najvećem broju slučajeva). Ako ipak neće, možemo još pokušati urediti datoteku
.forward sa sadržajem "|exec /usr/bin/procmail
", no najbolje da
kontaktiramo administratora. Ako stavljamo poruke u posebne mape, morat ćemo
e-mail skidati IMAP protokolom.
Koristimo li Linux na lokalnom računalu, možemo fetchmailu (programu koji
skida poštu preko POP3 ili IMAP-a) zadati opciju "--mda procmail
"
kako bi ju prije isporuke propustio kroz procmail.
Procmailrc
Za cijelu konfiguraciju dovoljna je samo jedna datoteka u koju ćemo stavljati
pravila i sve podatke koji trebaju za normalan rad. Tako ćemo pri samom vrhu
datoteke definirati neke varijable. "SHELL=/bin/bash
" potrebna je
ako planiramo pokretati neke programe kao akciju na dobivenu poruku. "MAILDIR=$HOME/mail
"
označava direktorij gdje će se stavljati sortirane mape. LOGFILE=$HOME/procmail.log
jako je bitan, jer ćemo pregledavajući ga pratiti što se događa. Kako ćemo
s vremenom sve više povećavati našu bazu, bit će sve teže snalaziti se u jednoj
datoteci. Naredbama "INCLUDERC=datoteka
" možemo dodati sadržaj dodatnih
popisa, primjerice tematski grupiranih.
No, ono što ustvari čini tu datoteku skup je pravila koji rade sav posao.
Svako se pravilo sastoji iz tri dijela. Prvi započinje s ":0" iza
čega slijede zastavice, koje mijenjaju način na koji se poruke tretiraju (c
- stvaranje kopije, B tj. H - pregled tijela poruke tj. zaglavlja, D - neosjetljivost
na mala i velika slova). Primjerice ":0c
" može poruku proslijediti
negdje drugdje, ali će zadržati original za daljnju obradu.
Drugi dio započinje zvjezdicom, a definira kriterije koje poruke mogu zadovoljavati
(adresa pošiljatelja itd.). Oni se definiraju tzv. regularnim izrazima (regexp),
složenim pravilima čiji bi imalo detaljniji opis zauzeo previše mjesta. Više
o njima u okviru. Nama je najbitnije znati da ".*" označava bilo
koji znakovni niz bilo koje duljine (pa i nula). Najjednostavniji primjer
bio bi "* ^From:.*@spammer
" koji označava mail s domene spammer.
Još neka od nama zanimljivih polja mogu biti To, Subject, Cc, Content-Type
(definira tip poruke, čudne kodne tablice ili attachmenti). Kriteriji se mogu
navoditi jedan ispod drugog, i onda su povezani logičkim operatorom I, dakle
svi moraju biti zadovoljeni. Negaciju dobivamo navođenjem uskličnika na početku
pravila (ali iza zvjezdice). Logički ILI uvjet možemo dobiti navođenjem pravila
i umetanjem "1^0
" ispred, ili pak konstrukcijom: ".*(enlargement|v1agra|credit)
".
Zadamo li kriterij u obliku "* ? egrep -is -f black.txt
", u toj
datoteci dovoljno je da navodimo mail adrese ili domene jednu ispod druge
i bit će obuhvaćene. Često je potrebno sortirati poruke po veličini, a za
to će nam poslužiti sintaksa "* < 64000
" (manje od 64 kB).
Posljednji dio procedura je koja se izvršava nad mailom koji je zadovoljio
gornje kriterije. Razlikujemo tako slanje u posebnu mapu (dovoljno je samo
navesti njeno ime), preusmjeravanje na alternativnu - jednu ili više njih
- e-mail adresu (uskličnik ispred: "! email@negdje
")
ili slanje vanjskom programu (uspravna crta - pipe ispred imena programa:
"| /usr/bin/program
"). Ako se kao odredište navede
/dev/null, mail se briše. Želimo li neki mail odmah izdvojiti kao bitan, njegovo
pravilo navest ćemo što bliže vrhu, a odredište ćemo specificirati kao "$DEFAULT"
što će ga staviti u naš Inbox.
Nažalost, ovdje je obrađen tek manji dio svih mogućnosti, no i s njima zajedno
s pametnom strategijom moguće je vrlo dobro organizirati vlastitu elektroničku
poštu.
Regularni izrazi
Regularni se izrazi osim u procmailu koriste i u brojnim drugim Linux programima (grep, vi, sed, perl...). Pravila isprva djeluju zbunjujuće no ima ih tek mali broj, pa se lako shvati što koje znači.
^A | slovo A na početku retka |
Z$ | Z na kraju retka |
. (točka) | bilo koji znak |
prvi|drugi | jedan od ova dva stringa |
[aeiou] | točno jedan samoglasnik |
[^0-9] | bilo koji znak koji nije znamenka |
\$ | specijalni znak tumači se kao običan |
A* | string od nula ili više znakova A |
chip* | chi, chip, chipp... |
A+ | jedan ili više znakova A |
A? | nula ili jedan znak A |
80[234]?86 | 8086,80286,80386,80486 |
.* | bilo koji znak proizvoljno puta |