Modulul 6 · 6.1
Cum funcționează filtrele
Modulul 6: Automat: filtre și mesaj de absență · Timp de citire: 10 minute
Obiectiv de învățare: După această lecție veți putea explica unde și când rulează filtrele, veți putea citi un script de filtrare în Sieve și veți putea prevedea în ce dosar ajunge un mesaj primit.
Noțiuni cheie: filtru, Sieve, ManageSieve, set de filtre, regulă, condiție, acțiune, păstrare implicită, stop, contine, este egal cu, se potriveste cu expresia
Filtrele rulează pe server
Un filtru vă sortează automat mesajele: mesajele cu „factuur” în subiect merg în dosarul Facturen (facturi), buletinele informative într-un dosar separat. Cel mai important lucru de știut: această sortare nu are loc în webmail, ci pe serverul de e-mail, în momentul în care un mesaj este livrat în căsuța dumneavoastră poștală.
De aici rezultă trei lucruri:
- Filtrele funcționează și când webmailul este închis. Laptopul dumneavoastră poate fi oprit. Telefonul vede mesajul imediat în dosarul corect.
- Filtrele funcționează doar pentru mesajele noi. Mesajele care se află deja în căsuța poștală rămân unde sunt. Dacă creați astăzi un filtru, mesajele vechi le mutați dumneavoastră.
- Filtrele se aplică unei singure căsuțe poștale. Fiecare căsuță poștală are propriile filtre. Dacă doriți să reglementați ceva pentru toate căsuțele poștale ale domeniului dumneavoastră, de exemplu blocarea unui expeditor, faceți acest lucru în panoul de administrare al găzduirii.
Filtrele sunt scrise în Sieve, un limbaj simplu, creat special pentru filtrarea e-mailului (RFC 5228). Serverul de e-mail de la WebOké folosește Dovecot cu Pigeonhole, implementarea Sieve a lui Dovecot. Webmailul transformă alegerile dumneavoastră din formular într-un script Sieve și îl trimite la server prin protocolul ManageSieve (RFC 5804). Nu trebuie să scrieți Sieve, dar cine îl poate citi înțelege exact ce fac filtrele sale.
Set de filtre, reguli, condiții și acțiuni
Un set de filtre este scriptul complet: toate filtrele căsuței dumneavoastră poștale într-un singur fișier. Puteți avea mai multe seturi de filtre, dar întotdeauna doar unul este activ.
În setul de filtre se află filtrele, numite în webmail și reguli. Fiecare filtru are:
- un nume, doar pentru dumneavoastră;
- un domeniu de aplicare: mesajul trebuie să îndeplinească toate regulile, una dintre reguli, sau filtrul se aplică tuturor mesajelor;
- una sau mai multe condiții: unde se uită filtrul (subiect, expeditor, alt antet), cum compară și cu ce text;
- una sau mai multe acțiuni: ce se întâmplă dacă condițiile sunt îndeplinite.
Pentru comparare există trei moduri:
| În webmail | În Sieve | Semnificație |
|---|---|---|
| contine | :contains | textul apare undeva în antet |
| este egal cu | :is | antetul este exact acest text |
| se potriveste cu expresia | :matches | tipar cu * (zero sau mai multe caractere) și ? (exact un caracter) |
La toate trei, literele mari și mici nu contează. Sieve compară implicit cu regula i;ascii-casemap, care tratează literele mari și mici la fel. „factuur” găsește deci și „FACTUUR” și „Factuur”.
Așa arată un set de filtre
În webmail puteți vedea setul de filtre ca text prin Filtre > Acțiuni > Modifică set filtre. Un exemplu așa cum îl scrie webmailul:
require ["fileinto"];
# rule:[Nieuwsbrieven]
if exists "List-Id"
{
fileinto "Nieuwsbrieven";
stop;
}
# rule:[Facturen]
if allof (header :contains "subject" "factuur")
{
fileinto "Facturen";
}
# rule:[Collega Daan]
if false # header :contains "from" "daan@example.com"
{
fileinto "INBOX.Team";
}Rând cu rând:
require ["fileinto"];îi cere serverului extensia necesară pentru mutarea într-un dosar. Webmailul adaugă singur acest rând la început, cu toate extensiile pe care le folosește scriptul.# rule:[Nieuwsbrieven]este un comentariu. Prin el, webmailul recunoaște numele filtrului dumneavoastră. Serverul ignoră acest rând.if exists "List-Id"este condiția: mesajul are un antet List-Id. Buletinele informative și listele de discuții au acest antet (RFC 2919).fileinto "Nieuwsbrieven";mută mesajul în dosarul Nieuwsbrieven (buletine informative). Numele dosarului este numele complet de pe server, cu punctul ca separator (lecția 5.1). Un dosar sub Primite se numește deciINBOX.Team.stop;oprește întregul script. Filtrele următoare nu mai analizează acest mesaj. În webmail, această acțiune se numește Nu mai evalua reguli.if false # ...este un filtru dezactivat. Dacă debifați Filtru activat, webmailul transformă condiția înfalse: niciodată adevărat. Condiția veche rămâne sub formă de comentariu, ca să o puteți reactiva mai târziu.

De sus în jos
Serverul citește scriptul de sus în jos și analizează fiecare filtru. Se aplică trei reguli.
1. Fără nicio acțiune, mesajul rămâne în Primite. Sieve cunoaște păstrarea implicită (implicit keep, RFC 5228, secțiunea 2.10.2): dacă niciun filtru nu face nimic, mesajul ajunge pur și simplu în Primite.
2. După o mutare, mesajul nu mai apare și în Primite. Un fileinto anulează păstrarea implicită. Mesajul ajunge în dosarul ales și nu și în Primite. Dacă doriți totuși ambele, folosiți Copiaza mesajul in.
3. Fără stop, se uită și filtrele următoare. Dacă lipsește stop, serverul continuă cu filtrul următor. Dacă și acel filtru se potrivește, serverul execută și acea acțiune. Două mutări în două dosare înseamnă că mesajul ajunge în ambele dosare. Cu stop, decide primul filtru care se potrivește.
De aceea ordinea contează. În exemplul de mai sus, Nieuwsbrieven se află deasupra lui Facturen, cu un stop. Un buletin informativ cu „Je factuur” în subiect ajunge deci în Nieuwsbrieven, nu în Facturen. Dacă inversați ordinea, același buletin informativ ajunge în Facturen, pentru că acel filtru nu are stop și acum vine primul. Buletinul informativ ar ajunge chiar în ambele dosare. Așadar, puneți filtrele cele mai specifice sus și dați-le un stop.
Parcurgerea unui mesaj: așa îl prevedeți
Luați un mesaj și parcurgeți scriptul așa cum o face serverul:
- Începeți cu primul filtru. Este dezactivat (
if false)? Săriți peste el. - Este îndeplinită condiția? Uitați-vă exact la antet:
subjecteste subiectul,fromexpeditorul cu nume și adresă,todestinatarul. - Dacă da: executați acțiunile. Dacă apare
stop, ați terminat. - Dacă nu, sau dacă nu există stop: treceți la filtrul următor.
- La final: dacă niciun filtru nu a mutat sau șters mesajul, acesta se află în Primite (
INBOX).
Cu acești cinci pași puteți citi orice script, chiar dacă este lung.
În practică: așa funcționează în webmail
Filtrele le găsiți la Setări personale > Filtre. Lista vă arată filtrele în ordinea în care le execută serverul; le trageți cu mouse-ul pentru a schimba ordinea. Sub Acțiuni se află Modifică set filtre: acolo vedeți și modificați scriptul ca text. Pașii pentru un filtru nou se găsesc în manualul Roundcube, la Crearea unui filtru. În alte webmailuri funcționează asemănător: Gmail are filtre, Outlook.com are reguli. Acestea nu folosesc Sieve, dar și acolo contează ordinea și oprirea.
Rezumat
- Filtrele rulează pe serverul de e-mail la livrare, deci și când webmailul este închis, și doar pentru mesajele noi.
- Webmailul scrie filtrele dumneavoastră ca script Sieve (RFC 5228) și îl pune pe server prin ManageSieve.
- Contine, este egal cu și se potriveste cu expresia nu țin cont implicit de literele mari și mici.
- Dacă niciun filtru nu face nimic, mesajul rămâne în Primite; după o mutare, nu mai apare și în Primite.
- Filtrele se execută de sus în jos; stop încheie scriptul, deci ordinea determină rezultatul.
Test (quiz)
Exercițiu
Exercițiul A6.1: Unde ajunge acest mesaj? Deschideți materialul filters-1.txt, un set de filtre așa cum îl scrie webmailul, și berichten-1.txt, cu antetele a patru mesaje primite, numerotate de la 1 la 4. Parcurgeți fiecare mesaj după cei cinci pași din această lecție: de sus în jos, săriți peste filtrele dezactivate, fiți atenți la stop. Completați pentru fiecare mesaj numele dosarului în care ajunge, exact așa cum apare în script; dacă mesajul ajunge în Primite, completați INBOX. Programul compară cele patru răspunsuri ale dumneavoastră cu cheia de răspunsuri și arată la fiecare mesaj ce filtru a fost decisiv.
Lecturi suplimentare
Acolo unde sunt descriși pași în webmail, aceștia se aplică webmailului WebOké; în alte webmailuri funcționează asemănător.
- Roundcube Webmail 7.1: Crearea unui filtru
- Roundcube Webmail 7.2: Exemple de filtre utile
- Reguli de e-mail pe server (filtre pe server)
- RFC 5228, Sieve: An Email Filtering Language (în engleză): https://www.rfc-editor.org/rfc/rfc5228
- RFC 5804, ManageSieve (în engleză): https://www.rfc-editor.org/rfc/rfc5804
- RFC 2919, List-Id (în engleză): https://www.rfc-editor.org/rfc/rfc2919
- Je filters als Sieve-script bekijken, downloaden en terugzetten
