Moduuli 6 · 6.1
Näin suodattimet toimivat
Moduuli 6: Automaattisesti: suodattimet ja poissaolo · Lukuaika: 10 minuuttia
Oppimistavoite: Tämän oppitunnin jälkeen osaat selittää, missä ja milloin suodattimet toimivat, osaat lukea Sieve-kielellä kirjoitetun suodatinskriptin ja voit ennustaa, mihin kansioon saapuva viesti päätyy.
Keskeiset käsitteet: suodatin, Sieve, ManageSieve, suodatinasetus, sääntö, ehto, toiminto, implisiittinen säilytys, stop, Sisältää, on samanlainen kuin, vastaa lauseketta
Suodattimet toimivat palvelimella
Suodatin lajittelee postisi automaattisesti: viestit, joiden aiheessa on "factuur", menevät kansioon Facturen (laskut), ja uutiskirjeet omaan kansioonsa. Tärkein asia tietää: lajittelu ei tapahdu verkkopostissa vaan postipalvelimella, sillä hetkellä kun viesti toimitetaan postilaatikkoosi.
Tästä seuraa kolme asiaa:
- Suodattimet toimivat, vaikka verkkoposti olisi suljettu. Kannettava saa olla pois päältä. Puhelin näkee viestin heti oikeassa kansiossa.
- Suodattimet koskevat vain uutta postia. Postilaatikossa jo olevat viestit pysyvät paikallaan. Jos teet suodattimen tänään, siirrät vanhat viestit itse.
- Suodattimet koskevat yhtä postilaatikkoa. Jokaisella postilaatikolla on omat suodattimensa. Jos haluat määrittää jotain kaikille verkkotunnuksesi postilaatikoille, esimerkiksi estää lähettäjän, teet sen webhotellisi hallintapaneelissa.
Suodattimet on kirjoitettu Sieve-kielellä, joka on yksinkertainen, nimenomaan sähköpostin suodattamiseen tehty kieli (RFC 5228). WebOkén postipalvelin käyttää Dovecotia ja Pigeonholea, joka on Dovecotin Sieve-toteutus. Verkkoposti muuttaa lomakkeessa tekemäsi valinnat Sieve-skriptiksi ja lähettää sen palvelimelle ManageSieve-protokollalla (RFC 5804). Sinun ei tarvitse kirjoittaa Sieveä, mutta kun osaat lukea sitä, ymmärrät tarkalleen, mitä suodattimesi tekevät.
Suodatinasetus, säännöt, ehdot ja toiminnot
Suodatinasetus on koko skripti: kaikki postilaatikkosi suodattimet yhdessä tiedostossa. Suodatinasetuksia voi olla useampi, mutta niistä on aina vain yksi aktiivinen.
Suodatinasetuksessa ovat suodattimet, joita verkkopostissa kutsutaan myös säännöiksi. Jokaisella suodattimella on:
- nimi, joka on vain sinua varten;
- soveltamisala: viestin on täytettävä kaikki säännöt tai yksi säännöistä, tai suodatin koskee kaikkia viestejä;
- yksi tai useampi ehto: mitä suodatin tarkastelee (aihetta, lähettäjää, muuta otsikkoriviä), miten se vertaa ja mihin tekstiin;
- yksi tai useampi toiminto: mitä tapahtuu, kun ehdot täyttyvät.
Vertailuun on kolme tapaa:
| Verkkopostissa | Sievessä | Merkitys |
|---|---|---|
| Sisältää | :contains | teksti on jossain kohtaa otsikkoriviä |
| on samanlainen kuin | :is | otsikkorivi on täsmälleen tämä teksti |
| vastaa lauseketta | :matches | kuvio, jossa * (nolla tai useampi merkki) ja ? (täsmälleen yksi merkki) |
Isoilla ja pienillä kirjaimilla ei ole väliä missään näistä kolmesta. Sieve vertaa oletuksena säännöllä i;ascii-casemap, joka käsittelee isot ja pienet kirjaimet samoina. Hakusana "factuur" löytää siis myös "FACTUUR" ja "Factuur".
Tältä suodatinasetus näyttää
Verkkopostissa voit katsoa suodatinasetusta tekstinä kohdassa Suodattimet > Toiminnot > Muokkaa suodatinasetusta. Esimerkki sellaisena kuin verkkoposti sen kirjoittaa:
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";
}Rivi riviltä:
require ["fileinto"];pyytää palvelimelta laajennusta, jota tarvitaan viestin siirtämiseen kansioon. Verkkoposti lisää tämän itse skriptin alkuun yhdessä kaikkien skriptin käyttämien laajennusten kanssa.# rule:[Nieuwsbrieven]on kommentti. Siitä verkkoposti tunnistaa suodattimesi nimen. Palvelin ohittaa rivin.if exists "List-Id"on ehto: viestissä on otsikkorivi List-Id. Uutiskirjeissä ja postituslistoissa se on (RFC 2919).fileinto "Nieuwsbrieven";siirtää viestin kansioon Nieuwsbrieven (uutiskirjeet). Kansion nimi on palvelimella käytettävä koko nimi, jossa erottimena on piste (oppitunti 5.1). Saapuneet-kansion alla oleva kansio on siis nimeltäänINBOX.Team.stop;lopettaa koko skriptin. Seuraavat suodattimet eivät enää tarkastele tätä viestiä. Verkkopostissa tämä toiminto on nimeltään Lopeta sääntöjen arviointi.if false # ...on poistettu käytöstä oleva suodatin. Jos poistat valinnan Suodatin käytössä, verkkoposti tekee ehdostafalse: ei koskaan tosi. Vanha ehto jää kommentiksi, jotta voit ottaa sen myöhemmin taas käyttöön.

Ylhäältä alaspäin
Palvelin lukee skriptin ylhäältä alaspäin ja käy läpi jokaisen suodattimen. Silloin pätee kolme sääntöä.
1. Ilman toimintoa viesti jää Saapuneet-kansioon. Sievessä on implisiittinen säilytys (implicit keep, RFC 5228, kohta 2.10.2): jos mikään suodatin ei tee mitään, viesti tulee tavalliseen tapaan Saapuneet-kansioon.
2. Siirron jälkeen viesti ei ole enää myös Saapuneet-kansiossa. fileinto poistaa implisiittisen säilytyksen käytöstä. Viesti tulee valittuun kansioon eikä lisäksi Saapuneet-kansioon. Jos haluat viestin molempiin, käytä toimintoa Kopioi viesti.
3. Ilman stop-komentoa myös seuraavat suodattimet tarkastelevat viestiä. Jos stop puuttuu, palvelin jatkaa seuraavaan suodattimeen. Jos sekin osuu, palvelin suorittaa myös sen toiminnon. Kaksi siirtoa kahteen kansioon tarkoittaa, että viesti tulee kumpaankin kansioon. Kun käytössä on stop, ensimmäinen osuva suodatin ratkaisee.
Siksi järjestyksellä on merkitystä. Yllä olevassa esimerkissä Nieuwsbrieven on Facturen-suodattimen yläpuolella, ja siinä on stop. Uutiskirje, jonka aiheessa on "Je factuur", menee siis kansioon Nieuwsbrieven eikä kansioon Facturen. Jos käännät järjestyksen, sama uutiskirje päätyy kansioon Facturen, koska siinä suodattimessa ei ole stop-komentoa ja se tulee nyt ensin. Uutiskirje olisi silloin jopa molemmissa kansioissa. Laita siis tarkimmat suodattimet ylimmäksi ja lisää niihin stop.
Viestin läpikäynti: näin ennustat lopputuloksen
Ota viesti ja käy skripti läpi samoin kuin palvelin:
- Aloita ensimmäisestä suodattimesta. Onko se poistettu käytöstä (
if false)? Ohita se. - Täyttyykö ehto? Katso otsikkoriviä tarkasti:
subjecton aihe,fromlähettäjä nimineen ja osoitteineen,tovastaanottaja. - Jos täyttyy: suorita toiminnot. Jos mukana on
stop, olet valmis. - Jos ei täyty tai stop puuttuu: siirry seuraavaan suodattimeen.
- Lopuksi: jos mikään suodatin ei siirtänyt tai poistanut viestiä, se on Saapuneet-kansiossa (
INBOX).
Näillä viidellä vaiheella osaat lukea minkä tahansa skriptin, pitkänkin.
Käytännössä: näin se toimii verkkopostissa
Suodattimet löydät kohdasta Asetukset > Suodattimet. Luettelo näyttää suodattimesi siinä järjestyksessä, jossa palvelin ne suorittaa; järjestystä muutat vetämällä. Kohdassa Toiminnot on Muokkaa suodatinasetusta: siellä näet ja muokkaat skriptiä tekstinä. Uuden suodattimen tekemisen vaiheet ovat Roundcube-ohjeessa kohdassa Suodattimen luominen. Muissa verkkoposteissa toiminta on samankaltaista: Gmailissa on suodattimet, Outlook.comissa säännöt. Ne eivät käytä Sieveä, mutta niissäkin järjestys ja lopettaminen vaikuttavat.
Yhteenveto
- Suodattimet toimivat postipalvelimella viestin toimitushetkellä, siis myös silloin kun verkkoposti on suljettu, ja vain uudelle postille.
- Verkkoposti kirjoittaa suodattimesi Sieve-skriptiksi (RFC 5228) ja tallentaa sen palvelimelle ManageSieven kautta.
- Sisältää, on samanlainen kuin ja vastaa lauseketta eivät oletuksena erota isoja ja pieniä kirjaimia.
- Jos mikään suodatin ei tee mitään, viesti jää Saapuneet-kansioon; siirron jälkeen se ei ole enää myös Saapuneet-kansiossa.
- Suodattimet käydään läpi ylhäältä alaspäin; stop lopettaa skriptin, joten järjestys ratkaisee lopputuloksen.
Tietovisa (quiz)
Tehtävä
Tehtävä A6.1: Mihin tämä viesti päätyy? Avaa materiaali filters-1.txt, joka on suodatinasetus sellaisena kuin verkkoposti sen kirjoittaa, ja berichten-1.txt, jossa ovat neljän saapuvan viestin otsikkorivit numeroituina 1-4. Käy jokainen viesti läpi tämän oppitunnin viiden vaiheen mukaan: ylhäältä alaspäin, käytöstä poistetut suodattimet ohittaen ja stop-komentoon huomiota kiinnittäen. Kirjoita jokaisen viestin kohdalle sen kansion nimi, johon viesti päätyy, täsmälleen niin kuin se on skriptissä; jos viesti päätyy Saapuneet-kansioon, kirjoita INBOX. Ohjelma vertaa neljää vastaustasi vastausavaimeen ja näyttää jokaisen viestin kohdalla, mikä suodatin ratkaisi asian.
Lue lisää
Kun ohjeissa on vaiheita verkkopostissa, ne koskevat WebOkén verkkopostia; muissa verkkoposteissa toiminta on samankaltaista.
- Roundcube Webmail 7.1: Suodattimen luominen
- Roundcube Webmail 7.2: Esimerkkejä hyödyllisistä suodattimista
- Palvelinpuolen sähköpostisäännöt (suodattimet palvelimella)
- RFC 5228, Sieve: An Email Filtering Language (englanniksi): https://www.rfc-editor.org/rfc/rfc5228
- RFC 5804, ManageSieve (englanniksi): https://www.rfc-editor.org/rfc/rfc5804
- RFC 2919, List-Id (englanniksi): https://www.rfc-editor.org/rfc/rfc2919
