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 >> |