Filtrarea mesajelor

Pagina principala   Curs Laborator Proiect

  Exemple >>

Prin filtrare se intelege orice procesare a mesajului din momentul in care a sosit pe server, operatie ce poate include:

In Linux aceasta operatie poate fi realizata cu procesorul de mail numit procmail. Acesta este invocat automat daca in contul utilizatorului exista fisierul de configurare cu numele .procmailrc

Inainte de a prezenta acest program trebuie reamintit ca mesajele in mod normal sunt livrate automat in casuta postala, care este un fisier in aceasta cale:

/var/spool/mail/nume_utilizator

iar restul mesajelor, cele citite, salvate, intrerupte se afla in contul utilizatorului in subdirectorul mail, de exemplu:

- in mail/sent-mail - cele trimise
- in mail/saved-messages - cele salvate

Fisierul de configurare .procmailrc contine regulile de filtrare, cate una pe linie, care pot fi de 2 feluri: livrabile si nelivrabile. Aceste filtre sunt de expresii regulare care sunt cautate in header-ul mail-ului.
Primul filtru care gaseste expresia cautata decide unde este trimis mesajul, de regula intr-un fisier. Daca nu se potriveste nici un filtru atunci mesajul este trimis in locatia implicita, adica in casuta postala.
Daca este gasit un filtru livrabil, atunci procmail considera ca mesajul a fost livrat si nu mai continua citirea fisierului de configurare .procmalirc. Un filtru este considerat livrabil daca in urma acestuia mesajul este scris intr-un fisier, preluat de un program sau este redirectat catre o alta adresa.
Daca se intalneste un filtru nelivrabil, atunci procesarea fisierului de configurarea va continua dupa ce a fost executata linia de actiune a filtrului. Filtrul este nelivrabil daca in urma acestuia iesirea unui program este captata inapoi de catre procmail.

/dev/null
In directorul /dev, cel care contine dispozitivele hardware ce pot fi atasate calculatorului (hard-disk, floppy-disk, porturi seriale, paralele, etc.) exista si dispozitivul /dev/null, care este utilizat atunci cand utilizatorul doreste sa stearga ceva. Poate fi considerata ca o "gaura neagra". Este dispozitivul la care se poate numai scrie, si la care odata scris ceva nu se mai poate recupera.

Filtrele au urmatoarea sintaxa:

:0 [indicatori] [: [lockfile] ]
zero sau mai multe conditii (cate una pe linie)
o linie de actiune

Parantezele de mai sus [] indica, ca acele valori sunt optionale. Conditiile intotdeauna incep cu caracterul *. Daca sunt mai multe conditii, intre acestea se realizeaza un SI logic. Daca nu este nici o conditie, rezultatul este considerat adevarat.
Daca se utilizeza si al doilea semn : din prima linie, atunci procmail va crea un lockfile (fisier de blocare), care va avea numele fisierului de destinatie si extensia .lock. Acestea sunt utile pentru a preveni o eroare in cazul in care mai multe mesaje vor sa fie scrise in acelasi timp in acelasi fisier.

Cateva din indicatorii posibili (lista completa se poate gasi in man procmailrc):

Indicator
Semnificatie
H expresia este cautata in antet (implicit)
B conditia este cautata in corpul mesajului
D sa se faca diferentierea intre caractere mici si majuscule
A filtrul este executat numai daca si conditiile din filtrul anterior au fost adevarate.
c creaza un carbon copy al mesajului

In tabelul de mai jos sunt prezentate cateva caractere speciale, expresii ce sunt folosite pentru a gasi un anumit text in antet. Acestea sunt folosite in cadrul liniilor de conditie.

Expresie
Semnificatie
^ inceput de linie
$ sfarsit de linie
. orice caracter (unul singur)
.* una sau mai multe caractere de orice tip
[c-g] orice caracter c, d, e, f sau g
[^d-f] orice caracter care NU este d, e sau f
[a-zA-Z] orice caracter din alfabet
spam | advertising expresia spam SAU advertising

Linia de actiune poate contine urmatoarele caractere speciale;

! redirectare la adresa specificata dupa acest caracter
{ indica inceputul unui bloc. Tot ce urmeaza pana la paranteza de inchidere }, depinde de conditia ce se afla inaintea acestui bloc.

Orice altceva este considerat ca numele unui fisier sau director (cale absoluta sau relativa la directorul curent, adica contul utilizatorului) in care se scrie mailul respectiv.

  Exemple >>