Modul 6 · 6.1
Ako fungujú filtre
Modul 6: Automaticky: filtre a neprítomnosť · Čas čítania: 10 minút
Cieľ lekcie: Po tejto lekcii dokážete vysvetliť, kde a kedy bežia filtre, prečítať filtrovací skript v jazyku Sieve a predpovedať, do ktorého priečinka prichádzajúca správa dorazí.
Kľúčové pojmy: filter, Sieve, ManageSieve, súprava filtrov, pravidlo, podmienka, akcia, implicitné uloženie, stop, obsahuje, sa rovná, vyhovuje výrazu
Filtre bežia na serveri
Filter automaticky triedi vašu poštu: poštu so slovom "factuur" (faktúra) v predmete do priečinka Facturen, newslettery do vlastného priečinka. Najdôležitejšie je vedieť toto: triedenie neprebieha vo webmaile, ale na poštovom serveri, v okamihu, keď sa správa doručí do vašej schránky.
Z toho vyplývajú tri veci:
- Filtre fungujú aj vtedy, keď je webmail zatvorený. Váš notebook môže byť vypnutý. Telefón uvidí poštu hneď v správnom priečinku.
- Filtre fungujú len na novú poštu. Pošta, ktorá už vo vašej schránke je, zostane tam, kde je. Ak dnes vytvoríte filter, staršie správy presuniete sami.
- Filtre platia pre jednu schránku. Každá schránka má vlastné filtre. Ak chcete niečo nastaviť pre všetky schránky vašej domény, napríklad zablokovať odosielateľa, urobíte to v administračnom paneli vášho hostingu.
Filtre sú napísané v jazyku Sieve, jednoduchom jazyku určenom špeciálne na filtrovanie pošty (RFC 5228). Poštový server vo WebOké používa Dovecot s Pigeonhole, implementáciou Sieve pre Dovecot. Webmail prevedie vaše voľby vo formulári na skript Sieve a pošle ho na server cez protokol ManageSieve (RFC 5804). Sieve písať nemusíte, ale kto ho vie čítať, presne rozumie tomu, čo jeho filtre robia.
Súprava filtrov, pravidlá, podmienky a akcie
Súprava filtrov je celý skript: všetky filtre vašej schránky v jednom súbore. Súprav filtrov môžete mať viac, ale aktívna je vždy len jedna.
V súprave filtrov sú filtre, ktoré sa vo webmaile nazývajú aj pravidlá. Každý filter má:
- názov, len pre vás;
- rozsah: správa musí spĺňať všetky pravidlá, jedno z pravidiel, alebo filter platí pre všetky správy;
- jednu alebo viac podmienok: kam sa filter pozerá (predmet, odosielateľ, iná hlavička), ako porovnáva a s akým textom;
- jednu alebo viac akcií: čo sa stane, keď sú podmienky splnené.
Na porovnávanie existujú tri spôsoby:
| Vo webmaile | V Sieve | Význam |
|---|---|---|
| obsahuje | :contains | text sa nachádza niekde v hlavičke |
| sa rovná | :is | hlavička je presne tento text |
| vyhovuje výrazu | :matches | vzor s * (žiadny alebo viac znakov) a ? (presne jeden znak) |
Pri všetkých troch nezáleží na veľkých písmenách. Sieve predvolene porovnáva podľa pravidla i;ascii-casemap, ktoré považuje veľké a malé písmená za rovnaké. "factuur" teda nájde aj "FACTUUR" a "Factuur".
Takto vyzerá súprava filtrov
Vo webmaile si súpravu filtrov môžete pozrieť ako text cez Filtre > Akcie > Upraviť súpravu filtrov. Príklad, ako ho zapíše webmail:
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";
}Riadok po riadku:
require ["fileinto"];žiada server o rozšírenie potrebné na presun do priečinka. Webmail to sám umiestni na začiatok spolu so všetkými rozšíreniami, ktoré skript používa.# rule:[Nieuwsbrieven]je komentár. Podľa neho webmail rozpozná názov vášho filtra. Server tento riadok preskočí.if exists "List-Id"je podmienka: správa má hlavičku List-Id. Majú ju newslettery a e-mailové konferencie (RFC 2919).fileinto "Nieuwsbrieven";presunie správu do priečinka Nieuwsbrieven (newslettery). Názov priečinka je úplný názov na serveri, s bodkou ako oddeľovačom (lekcia 5.1). Priečinok pod Doručená pošta sa teda voláINBOX.Team.stop;zastaví celý skript. Ďalšie filtre sa na túto správu už nepozerajú. Vo webmaile sa táto akcia volá Koniec pravidiel.if false # ...je vypnutý filter. Ak vypnete Filter zapnutý, webmail urobí z podmienkyfalse: nikdy neplatí. Pôvodná podmienka zostane ako komentár, aby ste ju neskôr mohli znova zapnúť.

Zhora nadol
Server číta skript zhora nadol a prechádza každý filter. Platia pritom tri pravidlá.
1. Bez akcie zostane správa v priečinku Doručená pošta. Sieve pozná implicitné uloženie (implicit keep, RFC 5228, sekcia 2.10.2): ak žiadny filter nič neurobí, správa jednoducho dorazí do priečinka Doručená pošta.
2. Po presune správa nie je zároveň aj v priečinku Doručená pošta. Akcia fileinto implicitné uloženie vypne. Správa dorazí do zvoleného priečinka a nie popritom aj do priečinka Doručená pošta. Ak chcete oboje, použite Kopírovať správu do.
3. Bez stopu sa pozerajú aj ďalšie filtre. Ak chýba stop, server pokračuje ďalším filtrom. Ak sedí aj ten, server vykoná aj jeho akciu. Dva presuny do dvoch priečinkov znamenajú, že správa skončí v oboch priečinkoch. S stop rozhoduje prvý vyhovujúci filter.
Preto záleží na poradí. V príklade vyššie je Nieuwsbrieven nad Facturen, so stopom. Newsletter s textom "Je factuur" v predmete teda ide do Nieuwsbrieven, a nie do Facturen. Ak poradie otočíte, ten istý newsletter skončí vo Facturen, pretože tento filter nemá stop a teraz je prvý. Newsletter by potom bol dokonca v oboch priečinkoch. Najkonkrétnejšie filtre preto dávajte navrch a pridajte im stop.
Prechod správou: takto to predpoviete
Vezmite správu a prejdite skript tak, ako to robí server:
- Začnite pri prvom filtri. Je vypnutý (
if false)? Preskočte ho. - Je podmienka splnená? Pozrite sa presne na hlavičku:
subjectje predmet,fromodosielateľ s menom a adresou,topríjemca. - Ak áno: vykonajte akcie. Ak je tam
stop, ste hotoví. - Ak nie, alebo ak chýba stop: prejdite na ďalší filter.
- Na konci: ak žiadny filter správu nepresunul ani nevymazal, je v priečinku Doručená pošta (
INBOX).
S týmito piatimi krokmi dokážete prečítať akýkoľvek skript, aj dlhý.
V praxi: takto to funguje vo webmaile
Filtre nájdete v Nastavenia > Filtre. Zoznam zobrazuje vaše filtre v poradí, v akom ich server vykonáva; poradie zmeníte presúvaním myšou. Pod Akcie je Upraviť súpravu filtrov: tam vidíte a upravujete skript ako text. Postup pre nový filter nájdete v Príručke k Roundcube v časti Vytvorenie filtra. V inom webmaile to funguje podobne: Gmail má filtre, Outlook.com pravidlá. Tie nepoužívajú Sieve, ale aj tam platí poradie a zastavenie.
Zhrnutie
- Filtre bežia na poštovom serveri pri doručení, teda aj vtedy, keď je webmail zatvorený, a len na novú poštu.
- Webmail zapíše vaše filtre ako skript Sieve (RFC 5228) a cez ManageSieve ho uloží na server.
- Obsahuje, sa rovná a vyhovuje výrazu predvolene nerozlišujú veľké a malé písmená.
- Ak žiadny filter nič neurobí, správa zostane v priečinku Doručená pošta; po presune v ňom zároveň nie je.
- Filtre sa prechádzajú zhora nadol; stop ukončí skript, takže o výsledku rozhoduje poradie.
Kvíz
Úloha
Úloha A6.1: Kam táto správa dorazí? Otvorte materiál filters-1.txt, súpravu filtrov tak, ako ju zapisuje webmail, a berichten-1.txt s hlavičkami štyroch prichádzajúcich správ, očíslovaných od 1 do 4. Prejdite každú správu podľa piatich krokov z tejto lekcie: zhora nadol, vypnuté filtre preskočiť, sledovať stop. Pri každej správe vyplňte názov priečinka, do ktorého dorazí, presne tak, ako je uvedený v skripte; ak správa dorazí do priečinka Doručená pošta, vyplňte INBOX. Program porovná vaše štyri odpovede s kľúčom správnych odpovedí a pri každej správe ukáže, ktorý filter rozhodol.
Ďalšie čítanie
Kde sú uvedené kroky vo webmaile, platia pre webmail WebOké; v inom webmaile to funguje podobne.
- Roundcube Webmail 7.1: Vytvorenie filtra
- Roundcube Webmail 7.2: Príklady užitočných filtrov
- Pravidlá pre e-maily na strane servera (filtre na serveri)
- RFC 5228, Sieve: An Email Filtering Language (v angličtine): https://www.rfc-editor.org/rfc/rfc5228
- RFC 5804, ManageSieve (v angličtine): https://www.rfc-editor.org/rfc/rfc5804
- RFC 2919, List-Id (v angličtine): https://www.rfc-editor.org/rfc/rfc2919
- Je filters als Sieve-script bekijken, downloaden en terugzetten
