6 modulis · 6.1
Kaip veikia filtrai
6 modulis: Automatizavimas: filtrai ir automatinis atsakymas · Skaitymo laikas: 10 min.
Mokymosi tikslas: Po šios pamokos galėsite paaiškinti, kur ir kada veikia filtrai, perskaityti Sieve filtrų scenarijų ir nuspėti, į kurį aplanką pateks gaunamas laiškas.
Pagrindinės sąvokos: filtras, Sieve, ManageSieve, filtrų rinkinys, taisyklė, sąlyga, veiksmas, numanomas išsaugojimas, stop, savyje turi, yra lygus, atitinka šabloną
Filtrai veikia serveryje
Filtras automatiškai rūšiuoja Jūsų paštą: laiškus su žodžiu "factuur" temoje perkelia į aplanką Facturen (sąskaitos), naujienlaiškius į atskirą aplanką. Svarbiausia žinoti: šis rūšiavimas vyksta ne žiniatinklio pašte, o pašto serveryje, tuo metu, kai laiškas pristatomas į Jūsų pašto dėžutę.
Iš to išplaukia trys dalykai:
- Filtrai veikia ir tada, kai žiniatinklio paštas uždarytas. Jūsų nešiojamasis kompiuteris gali būti išjungtas. Telefone laiškas iš karto matomas tinkamame aplanke.
- Filtrai veikia tik naujiems laiškams. Laiškai, kurie jau yra Jūsų pašto dėžutėje, lieka ten, kur yra. Jei filtrą sukuriate šiandien, senus laiškus turite perkelti patys.
- Filtrai galioja vienai pašto dėžutei. Kiekviena pašto dėžutė turi savo filtrus. Jei norite ką nors nustatyti visoms savo domeno pašto dėžutėms, pavyzdžiui, užblokuoti siuntėją, tai darykite savo prieglobos valdymo skydelyje.
Filtrai parašyti Sieve kalba. Tai paprasta kalba, sukurta specialiai el. laiškams filtruoti (RFC 5228). WebOké pašto serveris naudoja Dovecot su Pigeonhole, tai yra Dovecot Sieve įgyvendinimas. Žiniatinklio paštas Jūsų formoje pasirinktus nustatymus paverčia Sieve scenarijumi ir per protokolą ManageSieve (RFC 5804) nusiunčia jį į serverį. Patiems rašyti Sieve nereikia, tačiau mokantis jį skaityti tiksliai supranta, ką daro jo filtrai.
Filtrų rinkinys, taisyklės, sąlygos ir veiksmai
Filtrų rinkinys yra visas scenarijus: visi Jūsų pašto dėžutės filtrai viename faile. Filtrų rinkinių galite turėti kelis, bet aktyvus visada būna tik vienas.
Filtrų rinkinyje yra filtrai, žiniatinklio pašte dar vadinami taisyklėmis. Kiekvienas filtras turi:
- pavadinimą, skirtą tik Jums;
- taikymo sritį: laiškas turi atitikti visas taisykles, vieną iš taisyklių, arba filtras taikomas visiems laiškams;
- vieną ar daugiau sąlygų: kur filtras žiūri (tema, siuntėjas, kita antraštė), kaip lygina ir su kokiu tekstu;
- vieną ar daugiau veiksmų: kas įvyksta, kai sąlygos tenkinamos.
Lyginti galima trimis būdais:
| Žiniatinklio pašte | Sieve kalboje | Reikšmė |
|---|---|---|
| savyje turi | :contains | tekstas yra kurioje nors antraštės vietoje |
| yra lygus | :is | antraštė yra būtent šis tekstas |
| atitinka šabloną | :matches | šablonas su * (nulis ar daugiau ženklų) ir ? (lygiai vienas ženklas) |
Visais trim atvejais didžiosios raidės nesvarbios. Sieve pagal numatytuosius nustatymus lygina pagal taisyklę i;ascii-casemap, kuri didžiąsias ir mažąsias raides laiko vienodomis. Taigi "factuur" randa ir "FACTUUR", ir "Factuur".
Kaip atrodo filtrų rinkinys
Žiniatinklio pašte filtrų rinkinį kaip tekstą galite peržiūrėti pasirinkę Filtrai > Veiksmai > Taisyti filtrų rinkinį. Pavyzdys, kaip jį užrašo žiniatinklio paštas:
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";
}Eilutė po eilutės:
require ["fileinto"];prašo serverio plėtinio, kurio reikia laiškui perkelti į aplanką. Žiniatinklio paštas šią eilutę pats įrašo viršuje, kartu su visais scenarijuje naudojamais plėtiniais.# rule:[Nieuwsbrieven]yra komentaras. Pagal jį žiniatinklio paštas atpažįsta Jūsų filtro pavadinimą. Serveris šią eilutę praleidžia.if exists "List-Id"yra sąlyga: laiškas turi antraštę List-Id. Ją turi naujienlaiškiai ir adresų sąrašai (RFC 2919).fileinto "Nieuwsbrieven";perkelia laišką į aplanką Nieuwsbrieven (naujienlaiškiai). Aplanko pavadinimas yra visas jo pavadinimas serveryje, o skyriklis yra taškas (pamoka 5.1). Todėl aplankas, esantis po Gauti laiškai, vadinasiINBOX.Team.stop;sustabdo visą scenarijų. Kiti filtrai šio laiško nebetikrina. Žiniatinklio pašte šis veiksmas vadinasi Nutraukti taisyklių vykdymą.if false # ...yra išjungtas filtras. Jei išjungiate Filtras įjungtas, žiniatinklio paštas sąlygą pakeičia įfalse: niekada neteisinga. Senoji sąlyga lieka kaip komentaras, kad vėliau galėtumėte filtrą vėl įjungti.

Iš viršaus į apačią
Serveris skaito scenarijų iš viršaus į apačią ir patikrina kiekvieną filtrą. Galioja trys taisyklės.
1. Jei nėra veiksmo, laiškas lieka aplanke Gauti laiškai. Sieve turi numanomą išsaugojimą (implicit keep, RFC 5228, 2.10.2 skirsnis): jei nė vienas filtras nieko nedaro, laiškas tiesiog patenka į Gauti laiškai.
2. Po perkėlimo laiškas nebelieka dar ir aplanke Gauti laiškai. fileinto išjungia numanomą išsaugojimą. Laiškas patenka į pasirinktą aplanką, o ne dar ir į Gauti laiškai. Jei norite, kad būtų abiejuose, naudokite Kopijuoti laišką į.
3. Jei nėra stop, tikrinami ir kiti filtrai. Jei stop nėra, serveris tęsia su kitu filtru. Jei ir tas filtras tinka, serveris atlieka ir jo veiksmą. Du perkėlimai į du aplankus reiškia, kad laiškas atsidurs abiejuose aplankuose. Su stop sprendžia pirmasis tinkantis filtras.
Todėl tvarka svarbi. Aukščiau pateiktame pavyzdyje Nieuwsbrieven yra virš Facturen ir turi stop. Taigi naujienlaiškis su "Je factuur" temoje pateks į Nieuwsbrieven, o ne į Facturen. Jei tvarką apverstumėte, tas pats naujienlaiškis atsidurtų Facturen, nes tas filtras neturi stop ir dabar eina pirmas. Naujienlaiškis tada būtų netgi abiejuose aplankuose. Todėl konkrečiausius filtrus dėkite viršuje ir pridėkite jiems stop.
Laiško patikrinimas žingsnis po žingsnio: kaip tai nuspėti
Paimkite laišką ir peržiūrėkite scenarijų taip, kaip tai daro serveris:
- Pradėkite nuo pirmojo filtro. Ar jis išjungtas (
if false)? Praleiskite jį. - Ar sąlyga tenkinama? Tiksliai žiūrėkite į antraštę:
subjectyra tema,fromsiuntėjas su vardu ir adresu,togavėjas. - Jei taip: atlikite veiksmus. Jei yra
stop, baigta. - Jei ne arba nėra stop: pereikite prie kito filtro.
- Pabaigoje: jei nė vienas filtras laiško neperkėlė ir neištrynė, jis yra aplanke Gauti laiškai (
INBOX).
Su šiais penkiais žingsniais galite perskaityti bet kokį scenarijų, net ir ilgą.
Praktikoje: kaip tai veikia žiniatinklio pašte
Filtrus rasite skiltyje Nuostatos > Filtrai. Sąraše filtrai rodomi ta tvarka, kuria juos vykdo serveris; norėdami tvarką pakeisti, juos nutempkite. Skiltyje Veiksmai yra Taisyti filtrų rinkinį: ten scenarijų matote ir keičiate kaip tekstą. Naujo filtro kūrimo žingsnius rasite Roundcube vadove, skyriuje Filtro kūrimas. Kitame žiniatinklio pašte tai veikia panašiai: Gmail turi filtrus, Outlook.com taisykles. Jie nenaudoja Sieve, tačiau ir ten svarbi tvarka ir sustabdymas.
Santrauka
- Filtrai veikia pašto serveryje pristatymo metu, taigi ir tada, kai žiniatinklio paštas uždarytas, ir tik naujiems laiškams.
- Žiniatinklio paštas Jūsų filtrus užrašo kaip Sieve scenarijų (RFC 5228) ir per ManageSieve įkelia jį į serverį.
- Savyje turi, yra lygus ir atitinka šabloną pagal numatytuosius nustatymus neskiria didžiųjų ir mažųjų raidžių.
- Jei joks filtras nieko nedaro, laiškas lieka aplanke Gauti laiškai; po perkėlimo jo nebėra dar ir Gauti laiškai.
- Filtrai vykdomi iš viršaus į apačią; stop užbaigia scenarijų, todėl rezultatą lemia tvarka.
Testas (quiz)
Užduotis
Užduotis A6.1: Kur pateks šis laiškas? Atidarykite medžiagą filters-1.txt, tai filtrų rinkinys, kokį užrašo žiniatinklio paštas, ir berichten-1.txt, kurioje pateiktos keturių gaunamų laiškų antraštės, sunumeruotos nuo 1 iki 4. Kiekvieną laišką patikrinkite pagal penkis šios pamokos žingsnius: iš viršaus į apačią, išjungtus filtrus praleiskite, atkreipkite dėmesį į stop. Prie kiekvieno laiško įrašykite aplanko, į kurį jis pateks, pavadinimą tiksliai taip, kaip jis parašytas scenarijuje; jei laiškas patenka į Gauti laiškai, įrašykite INBOX. Programa palygins Jūsų keturis atsakymus su atsakymų raktu ir prie kiekvieno laiško parodys, kuris filtras nulėmė rezultatą.
Platesniam skaitymui
Kur aprašyti žingsniai žiniatinklio pašte, jie galioja WebOké žiniatinklio paštui; kitame žiniatinklio pašte tai veikia panašiai.
- Roundcube Webmail 7.1: Filtro kūrimas
- Roundcube Webmail 7.2: Naudingų filtrų pavyzdžiai
- Serverio pusės el. pašto taisyklės (filtrai serveryje)
- RFC 5228, Sieve: An Email Filtering Language (anglų k.): https://www.rfc-editor.org/rfc/rfc5228
- RFC 5804, ManageSieve (anglų k.): https://www.rfc-editor.org/rfc/rfc5804
- RFC 2919, List-Id (anglų k.): https://www.rfc-editor.org/rfc/rfc2919
- Jūsų filtrų peržiūra, atsisiuntimas ir atkūrimas Sieve scenarijaus pavidalu
