Proton-etusivu

Sieve-suodatin (edistyneet omat suodattimet)

Luetaan
34 min
Kategoria
Vastaanota ja lue sähköposteja

Proton Mail tarjoaa käyttäjille useita tapoja suodattaa sähköposteja automaattisesti määrittämällä niille tunnisteita tai lajittelemalla niitä kansioihin. Yleisesti ottaen menetelmiä on kolme:

  1. Lähettäjien lisääminen estolistalle ja sallittujen listalle siten, että heiltä tulevat viestit siirretään aina tai ei koskaan roskapostikansioon;
  2. Oman suodattimen luominen Proton Mailin interaktiivisen käyttöliittymän avulla;
  3. [Kaikkein edistynein] Oman suodattimen luominen Sievessä.

Näistä menetelmistä oman suodattimen luominen Sievessä tarjoaa parhaan monipuolisuuden, mutta sen käyttö on myös monimutkaisempaa. Tästä syystä pidämme Sieveä edistyneenä ominaisuutena käyttäjille, joilla on jonkin verran teknistä kokemusta. Useimmille käyttäjille interaktiivinen käyttöliittymä sopii tarvitsemienne omien suodattimien luomiseen.

Sisällysluettelo

Mikä on Sieve?

Sieve on ohjelmointikieli, jota käytetään sähköpostien suodattamiseen. Voitte luoda suodattimia Sievessä kirjoittamalla yksinkertaisia sääntöjä. Esimerkiksi: ”Anna kaikille Kyleltä saapuville viesteille vihreä tunniste”. Yhdistämällä näitä sääntöjä voidaan luoda pitkälle kehitetty suodatusjärjestelmä.

Voitte kirjoittaa Sieve-sääntöjä tyhjästä, lainata niitä tässä artikkelissa olevien kaltaisista esimerkeistä tai käyttää ohjelmistoa, joka helpottaa sitä.

Itse asiassa tarjoamme teille jo tavan luoda Sieve-suodattimia interaktiivisen käyttöliittymän avulla, joka käyttää syötteitänne Sieve-suodattimien luomiseen. Toinen hyvä tapa oppia Sieveä on luoda suodattimia interaktiivisen käyttöliittymän avulla ja muokata niitä Sievessä, sillä interaktiivinen käyttöliittymä itsessään käyttää Sieven osajoukkoa.

Vertailkaa esimerkiksi seuraavaa suodatinta, joka on luotu interaktiivisen käyttöliittymän avulla…


… saman suodattimen koodiin, kun sitä tarkastellaan Sieve-editorissa:

Tämä artikkeli tutustuttaa teidät Sieveen ja selittää, miten voitte kirjoittaa omia Sieve-suodattimia. Jos tarvitsette lisätietoja Sieven käytöstä, verkossa on useita muita oppaita, jotka voivat auttaa. Jos teillä on Sieveä Proton Mailissa koskevia kysymyksiä, joihin ei vastata tällä sivulla, voitte aina ottaa yhteyttä tukitiimiimme täällä.

Aloittaminen

Aloittaaksenne Sieve-suodattimien luomisen kirjautukaa sisään osoitteessa mail.proton.me(uusi ikkuna) ja siirtykää kohtaan Asetukset → Kaikki asetukset → Proton Mail → Suodattimet → Lisää Sieve-suodatin.

Sieve-skripti koostuu luettelosta komentoja. Useimmissa skripteissä se alkaa require-komennolla. require-komento lataa laajennuksen, joka tarjoaa tietyn toiminnallisuuden. Esimerkiksi tunnisteen määrittämiseen tai viestin siirtämiseen kansioon tarvitaan fileinto-komento.

Tämän komennon lataamiseksi kirjoitetaan yksinkertaisesti:

require "fileinto";

Useiden laajennusten lataamiseen voitte käyttää luetteloa:

require ["fileinto", "imap4flags"];

Tässä tapauksessa imap4flags lataa laajennuksen, jonka avulla voitte merkitä sähköpostin luetuksi. require-komennon jälkeen suoritatte usein testejä saapuvalle viestille. Tämä tehdään yhdistämällä if ja jokin toinen komento, kuten address tai header.

Lopuksi, jos testit onnistuvat, voitte kohdistaa toiminnon viestiin. Oletetaan esimerkiksi, että haluamme siirtää kaikki tietyltä lähettäjältä saapuvat sähköpostit samaan kansioon ja merkitä saapuvan sähköpostin luetuksi. Tämä voitaisiin kirjoittaa seuraavasti:

require ["fileinto", "imap4flags"];
# I don't really like Spott
if address :is "from" "Spott.Tenerman@northpark.example.com"
{ 
    addflag "\\Seen";
    fileinto "enemies";
}

Huomatkaa, että # -merkki osoittaa kommenttia, eikä sitä tulkita osaksi Sieve-skriptiä. Lisäksi määrittämänne kansion tai tunnisteen (tässä enemies ) on oltava olemassa ympäristössänne: voitte opetella luomaan kansioita ja tunnisteita täällä. Kun olette syöttäneet tämän suodattimen, napsauttakaa TALLENNA-painiketta. Suodattimenne suoritetaan nyt jokaiselle saapuvalle sähköpostille.

Tietenkin saatatte haluta siirtää useiden eri lähettäjien sähköpostit samaan kansioon. Tässä tapauksessa voitte välittää merkkijonoluettelon address-komennolle (merkkijono(uusi ikkuna) on sarja merkkejä, tässä tapauksessa sähköpostiosoite):

require ["fileinto", "imap4flags"];
# I don't really like Spott and Kyyyhel
if address :is "from" ["Spott.Tenerman@northpark.example.com", "Kyhel.Broski@northpark.example.com"]
{ 
    addflag "\\Seen";
    fileinto "enemies";
}

Huomatkaa, että aina kun voitte välittää merkkijonon testiehdolle, on yleensä mahdollista välittää myös luettelo. Tällöin se yrittää löytää osuman kokeilemalla mitä tahansa luettelon merkkijonoista. Tämä ei koske komentoja, kuten fileinto, addflag, jne.

Sieve on kuitenkin tehokkaampi kuin pelkkä postilaatikkonne järjestäminen uudelleen. Sen avulla voitte myös hylätä sähköposteja vastausviestillä:

require "reject";
# Reject mails that spell my name wrong
if header :contains "subject" "Kyhel"
{
    reject "My name is not Kyhel";
}

Testien käyttäminen

Testien yhdistäminen Sievessä

Kuten näytimme teille Aloittaminen-osiossa, voitte suorittaa testejä saapuville viesteille if-komennolla määrittääksenne, tuleeko require-komennon vaikuttaa sähköpostiin.

if-komennon lisäksi on olemassa muita testikomentoja, joiden avulla voitte jäsentää skriptinne yksinkertaisella tavalla.

Else

else-komennon avulla voitte tehdä jotakin silloin, kun if-komento ei suorittanut toimintojaan. Esimerkki tästä on:

require ["fileinto"];
# If the subject contains something incomprehensible, then put the mail into the kenny folder
if header :contains "subject" "mmph mmph"
{
    fileinto "Kenny";
} else { 
    fileinto "Understandable";
}

Tässä sähköposti siirretään kansioon Kenny, jos aihe on täsmälleen mmph mmph. Muussa tapauksessa (eli kun aihe ei ole täsmälleen mmph mmph) sähköposti siirretään kansioon Understandable.

Elsif

elsif on lyhenne sanoista else if. Kuten else-komento, se suoritetaan, jos if-ehto ei täyty, mutta vain siinä tapauksessa, että elsif-ehto täyttyy. Jos elsif-ehto ei täyty, suoritetaan seuraava elsif– tai else-lohko.

require ["fileinto", "imap4flags"];
# If the subject contains something incomprehensible, then put the mail into the kenny folder
if header :contains "subject" "mmph mmph"
{
    fileinto "Kenny";
# Kyhel sends me only speeches
} elsif address :is "from" "Kyhel.Broski@northpark.example.com" { 
    fileinto "Speeches";
} else { 
# otherwise the mail is important, so add a star.
    addflag "\\Flagged";
}

Huomatkaa, että vain yksi if-, elsif– tai else-lohkoista suoritetaan yhdellä ajokerralla.

Anyof

Joskus Teidän on suoritettava komento, kun yksi useista testeistä onnistuu. Tätä varten voitte käyttää anyof-komentoa. Tämä tehdään kirjoittamalla anyof, jota seuraa avaava sulkumerkki ’(’, testattavat lausekkeet pilkuilla erotettuina ja sulkeva sulkumerkki ’)’.

require ["fileinto", "imap4flags"];
# Kenny either sends from kenny@northpark.example.com or puts "mmph mmph" in the subject.
   if anyof(address :is "from" "kenny@northpark.example.com", header :contains "subject" "mmph mmph")
{
    fileinto "Kenny";
}

Tämä skripti siirtää viestit, joiden lähettäjä on kenny@northpark.example.com tai joiden aiherivillä on mmph mmph, kansioon Kenny.

Allof

Myös komennon anyof vastinpari on olemassa: allof. Sen avulla voitte suorittaa komennon vain silloin, kun kaikki annetut ehdot täyttyvät:

require ["fileinto", "imap4flags"];
# Kenny always sends me mails with mmph mmph
if allof(address :is "from" "Kenny@northpark.example.com", header :contains "subject" "mmph mmph")
{
    fileinto "Kenny";
}


Tämä skripti siirtää viestit, joiden lähettäjä on kenny@northpark.example.com ja joiden aiherivillä on mmph mmph, kansioon Kenny.

Not

Lopuksi, joskus Teidän on käytettävä komentoa, jos jokin ei täsmää. Lisäämällä sanan not lausekkeen eteen varmistetaan, että näin tapahtuu:

require ["fileinto", "imap4flags"];
# If a subject line does not contain real guitar put it into the young people folder
if not header :contains "subject" "real guitar"
{
    fileinto "Young people";
}

Mikä vastaa seuraavaa:

require ["fileinto", "imap4flags"];
# The else part will be evaluated if the condition is not true
if header :contains "subject" "real guitar"
{
    # do nothing
} else {
    fileinto "Young people";
}

Tämä siirtää kaikki sähköpostit, joiden aiherivillä ei ole ”real guitar”, kansioon Young people.

Kaikki nämä testit on tietysti mahdollista yhdistää. Voitte esimerkiksi haluta lisätä sähköpostille tähden, jos se ei ole lähettäjältä Kenny eikä sen aiheessa ole tekstiä mmph mmph:

require ["fileinto", "imap4flags"];
if not anyof (    header :contains "subject" "mmph mmph", 
    address :is "from" "Kyhel.Broski@northpark.example.com" ) { 
    addflag "\\Flagged";
}

Testien suorittaminen otsakkeille

Käyttämällä address-komentoa voitte suorittaa testejä osoiteotsakkeille, kuten from-, to– ja sender-otsakkeille. Voitte erottaa sähköpostiosoitteen eri osia käyttämällä jotakin seuraavista lipuista:

  • :localpart — ät-merkkiä (@) edeltävä osa
  • :domain — ät-merkin (@) jälkeinen osa
  • :all — koko osoite

Seuraava koodinpätkä selittää tämän komennon käytön:

require ["fileinto", "imap4flags"];
# Northpark people are made of paper, springfield are mostly yellow
if address :domain "from" "northpark.example.com"
{
    fileinto "PaperPeople";
} elsif address :domain "from" "springfield.example.com"{
    fileinto "YellowPeople";
}
if address :localpart "from" "chef"
{
    addflag "\\Flagged";
}

Yhteenvetona voidaan todeta, että tämä skripti siirtää kaikki verkkotunnuksesta northpark.example.com lähetetyt viestit kansioon PaperPeople ja verkkotunnuksesta springfield.example.com lähetetyt viestit kansioon YellowPeople.

Lisäksi siitä riippumatta, mistä verkkotunnuksesta sähköposti lähetetään, jos @-merkkiä edeltävä osa on chef (esim. chef@example.com), viesti merkitään tunnisteella. Toinen mielenkiintoinen käyttötapa on tallentaa automaattisesti kaikki tiettyyn osoitteeseen lähetetyt viestit kansioon:

require ["fileinto", "imap4flags"];
# Put support mail in a separate organized folder
if address :localpart "to" "support"
{
    fileinto "Support";
}

Lisäasetukset

envelope-komento mahdollistaa useampien testien suorittamisen. Yleisesti ottaen address-testi hakee vain arvon otsakkeesta. SMTP-istunnossa voidaan kuitenkin määrittää eri from-osoite kuin otsakkeessa oleva osoite.

Proton Mailin otsakerajapinnassa envelope-from vastaa return-path-otsaketta ja envelope-to vastaa x-original-to-otsaketta.

Käyttämällä envelope-komentoa voitte hakea todelliset to:– ja from:-osoitteet kirjekuoresta. Huomatkaa, että muita kenttiä kuin nämä kaksi ei ole olemassa, joten sender-kenttää ei ole tässä komennossa. Huomatkaa myös, että envelope on laajennuksessa, ja siksi Teidän on ensin otettava tämä laajennus käyttöön require-komennolla.

require ["fileinto", "imap4flags", "envelope"];
# Northpark people are made of paper, springfield are mostly purple
if envelope :domain "from" "northpark.example.com"
{
    fileinto "PaperPeople";
} elsif envelope :domain "from" "springfield.example.com"{
    fileinto "PurplePeople";
}
if envelope :localpart "from" "chef"
{
    addflag "\\Flagged";
}

Vertailijoiden käyttäminen kahden arvon arvioimiseksi

Kun testi arvioi kahta arvoa, on mahdollista määrittää, miten tämä vertailu tehdään käyttämällä erilaisia lippuja, joita kutsutaan nimellä comparators. Käytimme jo aiemmin kahta vertailijaa: :is ja :contains. Ne tarkistavat, että annettu merkkijono on täsmälleen sama kuin tietty arvo ja että kyseinen arvo sisältää annetun merkkijonon, kuten seuraavassa testissä.

require ["fileinto", "imap4flags"];
if not anyof (
    header :contains "subject" "mmph mmph", # the subject contains mmph mmph 
    address :is "from" "Kyhel.Broski@northpark.example.com" # the recipient is exactly Kyhel.Broski@northpark.example.com
) { 
    addflag "\\Flagged";
}

Vertailijaa :matches voidaan myös käyttää tarkemman muodon määrittämiseen. Se vertaa molempia arvoja alusta loppuun asti, aivan kuten vertailija :is. Vertailijan :matches tapauksessa määrittämänne arvo voi kuitenkin sisältää merkkejä ? ja *. Kysymysmerkki vastaa yhtä merkkiä ja tähti (jota kutsutaan jokerimerkiksi) vastaa nollaa tai useampaa merkkiä.

Tällä muodolla voitte luoda tämän testin:

require ["fileinto", "imap4flags"];
if header :matches "subject" "mmph*" { 
    addflag "\\Flagged";
}

Tässä esimerkissä testi onnistuu, jos viestin aihe alkaa merkkijonolla mmph ja sitä seuraa mikä tahansa merkki tai merkkejä. Toisin sanoen sähköposti merkitään tunnisteella, kun aihe alkaa merkkijonolla ’mmph’. Sekä ’mmph mmph’ että ’mmph mmph Hello’ täsmäävät; ’Hello mmph’ ja ’Springfield sales’ eivät täsmää.

Tähteä voidaan käyttää myös arvon keskellä ja useita kertoja seuraavasti:

require ["fileinto", "imap4flags"];
if header :matches "subject" "mmph *mmph *mmph" { 
    addflag "\\Flagged";
}

Tämä testi täsmää, jos aihe alkaa merkkijonolla ’mmph ’ (välilyönnin kanssa), sisältää toisen merkkijonon ’mmph ’ (välilyönnin kanssa) ja päättyy merkkijonoon ’mmph’ (ilman välilyöntiä). Täsmääviä aiheita ovat ’mmph mmph mmph’, ’mmph mmph mmphmmph’ tai ’mmph is mmph and mmph’.

Tämä :matches-vertailija voi olla erittäin hyödyllinen osoitevertailussa. Kuten ehkä tiedätte, Proton Maililla on useita verkkotunnuksia: protonmail.com ja proton.me. Jos haluatte tarkistaa, tuleeko viesti Proton Mail -käyttäjältä, voitte käyttää tätä skriptiä:

require ["fileinto", "imap4flags"];
# Put support mail in a separate organized folder
if address :domain :matches "from" "protonmail.*"
{
    fileinto "Internal";
}

Jos Teidän on jostain syystä vastattava täsmälleen merkkiä * tai ?, voitte suojata ne lisäämällä \\ niiden eteen: \\* vastaa tähteä ja \\? vastaa kysymysmerkkiä.

Huomatkaa, että tuemme myös regex-laajennusta, joka määrittää myös vertailijan :regex. Tämä vertailija on tarkempi versio vertailijasta :matches, mutta se on hyvin monimutkainen. Lisätietoja voitte lukea virallisesta dokumentaatiosta(uusi ikkuna).

Joissakin tapauksissa (kuten tulette näkemään myöhemmin tässä artikkelissa) saatatte haluta verrata numeerisia arvoja. Paketti relational on tehty tätä käyttöä varten. Tämä paketti määrittää vertailijan :value, jota seuraa vertailutyyppi.

Sen avulla voitte tarkistaa, onko arvo suurempi kuin (vertailutyyppi “gt”), suurempi tai yhtä suuri kuin (“ge”), yhtä suuri kuin (“eq”), pienempi tai yhtä suuri kuin (“le”) tai pienempi kuin (“lt”) annettu arvo.

Kun vertaillaan numeerisia arvoja, paketti comparator-i;ascii-numeric on myös erittäin hyödyllinen. Se kertoo skriptitulkille, että merkkijonon sisältö on numero eikä tavallinen merkkijono. Sitä voidaan käyttää lisäämällä testiin :comparator “i;ascii-numeric”.

Kaikkien näiden tietojen avulla voimme rakentaa seuraavan skriptin:

require ["fileinto", "relational", "comparator-i;ascii-numeric"];  
if header :value "ge" :comparator "i;ascii-numeric" "subject" "2"   
{    
 fileinto "Dummy example";
}

Tämä testi siirtää viestin kansioon Dummy example, jos aihe on suurempi tai yhtä suuri kuin 2. Jos aihe ei ole numero vaan tekstiä, testi epäonnistuu. Sellaisenaan tämä esimerkki vaikuttaa hyvin typerältä, mutta se on tarkoitettu käytettäväksi yhdessä muiden laajennusten, kuten date-laajennuksen kanssa, jonka määrittelemme myöhemmin tässä artikkelissa.

Vertailu käyttämällä kontekstia Sievessä

Voitte myös käyttää tiliinne ja Proton Mail -kontekstiin liittyviä tietoja yleisesti laajennusten avulla. Voitte esimerkiksi tarkistaa, onko lähettäjän osoite yhteystietoluettelossanne.

Yhteystietoluettelon käyttäminen

Voitte käyttää yhteystietoluetteloanne extlists-laajennuksen avulla. Yhdessä otsaketestien kanssa voitte sitten tarkistaa, onko yhteystieto yhteystietoluettelossanne.

require ["fileinto", "extlists"];  
# Checks that the sender is in your personal address book
if header :list "from" ":addrbook:personal?label=Family"   
{    
 fileinto "Known"; 
}

Tämä testi merkitsee viestin tunnisteella Known , jos lähettäjä sisältyy luetteloon :addrbook:personal?label=Family. Luettelo voidaan jakaa kahteen osaan. Ensinnäkin :addrbook:personal tarkoittaa, että osoite on henkilökohtaisessa osoitekirjassanne. Toiseksi label=Family kaventaa luetteloa entisestään määrittämällä, että osoitekirjassa olemisen lisäksi yhteystiedon on kuuluttava yhteystietoryhmään Family. Tarvittaessa voitte vaihtaa tämän tunnisteen toiseen yhteystietoryhmään. Voitte halutessanne käyttää arvoa :addrbook:personal?label=Work, jolloin testi onnistuisi vain, jos lähettäjä on osoitekirjassanne ja yhteystietoryhmässä Work.

Yleisemmin ottaen luettelo noudattaa Tag URI Schemeä(uusi ikkuna), ja voitte lisätä ylimääräisiä parametreja suodattimienne rajaamiseksi. Tämän jälkeen voitte käyttää tätä luetteloa seuraavasti:

require ["fileinto", "extlists"];  
# replace :your:list:here by the list you want to use
if header :list "from" ":your:list:here"
{    
 # some actions... 
}

Olemme tarjonneet neljä erilaista luetteloa:

  • :addrbook:personal¹ tarkistaa, onko osoite yhteystietoluettelossanne. Luettelo hyväksyy parametrin label, joka vastaa tiettyä yhteystietoryhmää. Tämä parametri voidaan jakaen neljään eri aliversioon:
    • :addrbook:personal?label=something täsmää yhteystietoon, joka on yhteystietoryhmässä ”something”;
    • :addrbook:personal?label.starts-with=something täsmää yhteystietoon, joka kuuluu vähintään yhteen ryhmään, joka alkaa merkkijonolla ”something”;
    • :addrbook:personal?label.ends-with=something täsmää yhteystietoon, joka kuuluu vähintään yhteen ryhmään, joka päättyy merkkijonoon ”something”;
    • :addrbook:personal?label.contains=something täsmää yhteystietoon, joka kuuluu vähintään yhteen ryhmään, joka sisältää merkkijonon ”something”.

Voitte myös käyttää kryptografisia tietoja liittyen täsmäävään sähköpostiin:

  • :addrbook:personal?keypinning=true täsmää yhteystietoon, jolla on luotettu avain. Arvon muuttaminen arvosta true arvoksi false täsmää yhteystietoon, jolla ei ole luotettua avainta;
  • :addrbook:personal?encryption=true täsmää yhteystietoon, jolle salaus on käytössä. Arvon muuttaminen arvosta true arvoksi false täsmää yhteystietoon, jolle salausta ei ole määritetty tai se on poistettu käytöstä;
  • :addrbook:personal?signing=true vastaa yhteystietoa, jolle allekirjoitus on otettu käyttöön. Arvon muuttaminen true-arvosta false-arvoksi vastaa yhteystietoa, jolle allekirjoitus on poistettu käytöstä.
  • :addrbook:myself¹ vastaa jokaista osoitetta, jonka omistatte itse;
  • :addrbook:organization vastaa jokaista osoitetta, jonka omistaa joku organisaatiossa, jonka jäsen olette;
  • :incomingdefaults:inbox tarkistaa, onko osoite sallittujen listallanne;
  • :incomingdefaults:spam tarkistaa, onko osoite estolistallanne.

Yhdistettynä muuttujalaajennukseen (kuvattu seuraavassa kappaleessa) vastaavia muuttujia muutetaan. Vastaava muuttuja ${0} sisältää aina viimeisen sähköpostiosoitteen, joka sisältyy määritettyyn listaan. Jos lista on merkitty alaviitteellä 1, vastaava muuttuja ${1} sisältää näyttönimen.

Esimerkiksi alla olevien listojen avulla voitte luoda suodattimen, joka poistaa kaikki sähköpostit, jotka on vastaanotettu muilta kuin perheeltänne tai sallittujen luettelossanne olevilta henkilöiltä:

require "extlists";  
# checks that the sender is not in the contact group Family, whilelisted or yourself
if not anyof(
    header :list "from" ":addrbook:personal?label=Family", 
    header :list "from" ":incomingdefaults:inbox",
    header :list "from" ":addrbook:myself"
) {    
  discard; # permanently delete the email
}

Jos kyseinen ehto täyttyy, suoritetaan discard-toiminto. Tämä toiminto poistaa sähköpostin välittömästi ja pysyvästi. Voitte myös yksinkertaisesti siirtää sen roskakorikansioon käyttämällä fileinto-toimintoa hylkäämisen sijasta: fileinto “trash”;.

Muuttujien luominen

Toinen hyödyllinen työkalu kontekstin hallinnassa on muuttujan (variable) määrittely. Muuttuja on tilapäinen tallennussijainti, johon voitte sijoittaa tekstiä ja nimetä sen tunnisteella. Myöhemmin voitte käyttää tätä sisältöä uudelleen kutsumalla sitä sen nimellä. Teillä voi olla esimerkiksi seuraavanlainen skripti:

require ["reject", "variables"];
# First check who is the sender
if allof(
    address :is "from" "Kenny@northpark.example.com", 
    header :contains "subject" "mmph mmph"
) {
    # It's from Kenny!
    # Create the variable message containing 'mmph mmph'
    set "message" "mmph mmph";
} else {
    # Create the variable message containing 'Sorry, I don't want emails today!'
    set "message" "Sorry, I don't want emails today!";
}
# Then, reject the message
reject "${message}";

Tämän skriptin tarkoituksena on hylätä sähköposti mukautetulla viestillä. Jos alkuperäinen sähköposti on lähettäjältä kenny ja sen aihe on ”mmph mmph”, luodaan muuttuja ”message”, joka sisältää arvon mmph mmph. Muussa tapauksessa viestiksi täytetään ”Sorry, I don’t want emails today!”. Lopuksi käytämme tätä muuttujaa uudelleen reject-komennossa.

Sieve ei määritä muuttujia natiivisti, joten ne on määritetty variables-laajennuksessa, joka on otettava käyttöön skriptinne alussa. Muuttujan voi määrittää kahdella tavalla.

  • Muuttujan eksplisiittinen luominen:

Muuttujan luomista varten on käytettävissä toiminto set.

require "variables";
# Create a variable called "labelname" and containing the string "Work".
set "labelname" "Work";

Ensimmäinen merkkijono on muuttujanne nimi ja toinen on muuttujanne arvo. Edellinen esimerkki siis luo muuttujan nimeltä labelname, joka sisältää arvon Work.

Kun muuttuja on määritetty, voitte kutsua sitä lisäämällä merkkijonoon seuraavan muodon: ${name}, jossa name on muuttujanne nimi. Kun se suoritetaan, se korvataan muuttujan arvolla. (Jos ette ole määrittäneet muuttujaa, se korvataan tyhjällä merkkijonolla.) Näin ollen seuraavassa skriptissä:

require "variables";
require "fileinto";
# Create a variable called "labelname" and containing the string "Work".
set "labelname" "Work";
# Move the email in "${foldername}/${labelname}" which becomes after variable resolution "/Work";
fileinto "${foldername}/${labelname}";

Sähköpostinne merkitään tunnisteella /Work. Koska olemme jo määrittäneet muuttujan labelname, se korvataan arvolla Work. Muuttujaa foldername ei kuitenkaan ole määritetty, joten se yksinkertaisesti poistetaan.

  • Muuttujan implisiittinen määritys:

Mielenkiintoisin muuttujien käyttötapaus on :matches-testiä käytettäessä. Otetaan seuraava esimerkki, jossa sähköpostin lähettäjä on test@proton.me:

require "variables";
require "fileinto";
# do a matches test 
if header :matches "from" "*@*" {
    # The first * matches "test", the second "protonmail".  
    # Thus, the first matching variable contains "test"
    fileinto "${1}";
}

Kun sitä käytetään muuttujalaajennuksen kanssa, match-toiminnon tulos tallennetaan muuttujiin. Useille muuttujille asetetaan numeerinen nimi. Ensin muuttuja 0 sisältää koko osuman (esimerkissämme tämä on koko osoite: test@proton.me). Tämän jälkeen ensimmäinen täsmäävä ryhmä määritetään muuttujalle 1 (esimerkissämme tämä on test), toinen täsmäävä ryhmä määritetään toiselle muuttujalle (proton.me) ja niin edelleen viimeiseen täsmäävään ryhmään saakka.

Esimerkissämme suoritetaan komento fileinto. Sijainniksi määritetään ${1}, joka tunnistetaan muuttujaksi ja korvataan siten sen yllä lasketulla arvolla: test.

Huomatkaa, että muuttujia on mahdollista määrittää myös :regex-testissä käyttämällä säännöllisten lausekkeiden täsmäysryhmiä.

Muuttujien muuntaminen

Yksi hieno mahdollisuus on muuttujien muuntaminen. Tätä varten set-avainsanaa voidaan käyttää yhdessä lippujen kanssa, joilla voidaan muuttaa arvoa ennen sen määrittämistä muuttujalle.

  • :lower muuttaa muuttujan arvon pieniksi kirjaimiksi;
  • :upper muuttaa muuttujan arvon suuraakkosiksi;
  • :lowerfirst muuttaa muuttujan arvon ensimmäisen kirjaimen pieneksi kirjaimeksi;
  • :upperfirst muuttaa muuttujan arvon ensimmäisen kirjaimen suuraakkoseksi;
  • :quotewildcard lisää lainausmerkit mihin tahansa merkkijonossa olevaan jokerimerkkiin, jotta sitä voidaan käyttää kirjaimellisesti match-lausekkeessa;
  • :length palauttaa arvon pituuden.

Huomatkaa, että voitte käyttää määritettyä muuttujaa uudelleen myös toisessa set-toiminnossa. Parannetaan edellisiä esimerkkejämme:

require "variables";
require "fileinto";
# Set labelname to WORK, and modify it to lowercase with the first letter in upper case 
set :lower :upperfirst "labelname" "WORK";
set :lower :upperfirst "foldername" "geneva";
# Create a variable that is a combination of foldername and labelname
set "location" "${foldername}/${labelname}";
fileinto "${location}";

Suodatin luo vaihe vaiheelta kolme muuttujaa. Ensimmäinen komento set luo muuttujan labelname. Muuttujan sisältö on Work. Alkuperäinen arvo WORK nimittäin muunnetaan käyttämällä sekä :lower– että :upperfirst-lippuja, mikä muuttaa sen ensin muotoon work ja sitten muotoon Work.

Toinen set-komento luo toisen muuttujan nimeltä foldername, joka sisältää merkkijonon Geneva. Tässä käytettiin lippuja :lower ja :upperfirst.

Lopuksi luodaan muuttuja location. Arvo ”${foldername}/${labelname}” sisältää kaksi muuttujaa: foldername ja labelname. Sieve-tulkki korvaa nämä muuttujat niiden arvoilla: Work ja Geneva.

Lopuksi muuttujaa location käytetään fileinto-komennon argumenttina. Sähköposti siirretään siten kansioon, jonka nimenä on location-muuttujan arvo: Work/Geneva.

Vertailijoita voidaan soveltaa myös täsmääviin muuttujiin:

require "variables";
require "fileinto";
if address :all :matches "from" "*@*" {
    set :lower :upperfirst "fileintovar" "${1}";
    fileinto "${fileintovar}";
}

Jos sähköpostin lähettäjä on tässä tapauksessa test@proton.me, se merkitään tunnisteella Test.

Toinen tapa muuttaa muuttujan arvoa on käyttää vnd.proton.eval-laajennusta. Tämä laajennus määrittää uuden lipun :eval, jonka avulla voitte tehdä yksinkertaisia laskutoimituksia:

require "variables";
require "fileinto";
require "vnd.proton.eval";
# do a match test on the sender address
if header :matches "from" "*" {
    # create a variable called length, containing the length of the first     
    # matching variable
    set :length "length" "${1}"; 
    # Create a variable called fileintovar containing the result of the expression written below
    set :eval "fileintovar" "${length} * 25 - 1 / 8+3";
    fileinto "${fileintovar}";
}

Tässä esimerkillä ja olettaen edelleen, että sähköposti saapuu osoitteesta test@proton.me, sähköposti merkitään arvolla 478. Ensimmäisen täsmäävän muuttujan pituus on nimittäin 19, ja laskutoimituksen 19 * 25 – 1 / 8 + 3 tulos pyöristetään ylöspäin arvoon 478.

Tämä saattaa aluksi vaikuttaa hyödyttömältä, mutta tämä laajennus on järkevämpi yhdistettynä muihin toimintoihin.

Vertailu muihin kenttiin Sievessä

Täsmäys tiettyihin otsakkeisiin on myös mahdollista. Jos haluatte esimerkiksi siirtää kaikki listoille lähetetyt viestit (usein ne ovat markkinointiviestejä tai uutiskirjeitä), voitte tehdä näin:

require "fileinto";
# Filter all lists into the same folder
if exists "list-unsubscribe"
{
    fileinto "advertisements";
}

Jos haluatte lajitella sosiaalisen median sähköpostit omaan kansioonsa, voitte kirjoittaa:

require "fileinto";
# Filter all lists into the same folder
if anyof(exists "x-facebook", exists "x-linkedin-id") {
    fileinto "social";
} elsif exists "list-unsubscribe"
{
    fileinto "advertisements";
}

Huomatkaa, että käytämme:

anyof(exists "x-facebook", exists "x-linkedin-id")

seuraavan sijasta:

exists ["x-facebook", "x-linkedin-id"]

Koska jälkimmäinen tarkistaa, onko sekä x-facebook että x-linkedin-id asetettu.

Jos haluatte nähdä, minkä arvon otsake todellisuudessa sisältää, voitte käyttää header-testiä:

require "fileinto";
# Put all mails that have been sent without TLS/SSL into the same folder
if header :is "x-pm-transfer-encryption" "none" {
    fileinto "unencrypted";
}

Tarkan osuman tekevän :is-toiminnon lisäksi header-komento tukee myös :matches-toimintoa, joka täsmää jokerimerkkien avulla (esim. ”*@*.com” vastaa mitä tahansa sähköpostiosoitetta, joka päättyy päätteeseen .com), sekä :contains-komentoa, joka tarkistaa, sisältääkö otsake tietyn merkkijonon.

Sieve-suodattimien suunnittelussa voi olla hyödyllistä hakea sähköpostin otsakkeet. Tehdäksenne tämän Proton Mailin verkkoliittymässä valitkaa Lisää () → Näytä otsakkeet. Avautuu uusi ikkuna, joka sisältää kaikki sähköpostin otsakkeet.

Suodata viestin koon perusteella Sievessä

Suuria sähköposteja on mahdollista käsitellä eri tavalla kuin pieniä sähköposteja. Haluatte ehkä esimerkiksi merkitä suuret sähköpostit lipulla, jotta voitte poistaa ne säästääksenne tilaa postilaatikossanne. Tämä voidaan tehdä seuraavalla tavalla:

require ["imap4flags"];
# Flag emails that probably have large attachments (> 2 MiB)
if size :over 2M # you can also use 2097152 if you want, they are synonymous
{
    addflag "\\Flagged";
}
# Automatically mark as read really small messages. They can't have much content anyway...
if size :under 1000
{
    addflag "\\Seen";
}

Kuten näette, käytettävissä on yksiköitä, jos haluatte määrittää suuria kokoja lisäämällä haluttua yksikköä vastaavan kirjaimen heti numeron jälkeen. Käytettävissä on kolme yksikköä: K tarkoittaa kibitavua (eli 1024 tavua), M mebitavua (eli 1 048 576 tavua) ja G gibitavua (eli 1 073 741 824 tavua).

Huomatkaa, että tässä tapauksessa ”over” tarkoittaa suurempaa kuin ja ”under” pienempää kuin. Tämä tarkoittaa, että jos viestin koko on tasan 1000 tavua, kumpikaan

size :under 1000

eikä

size :over 1000

ei täsmää.

Huomatkaa, että Sieve-suodattimilla ei ole pääsyä varsinaiseen sisältöön, ja ne näyttävät vain salatun koon.

Edistyneiden toimintojen suorittaminen viesteille

Voitte suorittaa erilaisia reaktioita viestiin Sievessä. Esittelimme jo toiminnot fileinto, addflag, discard ja reject edellisissä osioissa. Tässä esittelemme edistyneempiä toimintoja.

Lomaviestit ja päivämäärätestit

Voitte replikoida automaattivastaus-ominaisuuden Sievessä käyttämällä vacation-komentoa. Itse asiassa Asetuksissanne oleva automaattivastausominaisuus tukeutuu Sieveen toimiakseen. Mutta käyttämällä loma-asetuksia skriptin sisällä teillä on paljon enemmän mahdollisuuksia mukauttaa automaattivastauksianne. Voitte esimerkiksi räätälöidä tiettyjä viestejä olosuhteiden mukaan. Huomautus: Kuten Asetusten automaattivastausominaisuus, myös vacation-toiminto on käytettävissä vain maksullisissa tilauksissa.

vacation-komento lähettää lomavastauksen kaikille, jotka yrittävät ottaa teihin yhteyttä. Se yhdistetään usein testeihin currentdate tai date vastausten lähettämiseksi tietyllä aikavälillä.

Oletetaan, että olen menossa lomalle 14. heinäkuuta 2017 – 14. elokuuta 2017 Coloradon aikaa. Voin käyttää seuraavaa Sieve-koodia automaattisen vastaajan asettamiseen:

require ["date", "vacation", "relational"];
if allof(currentdate :zone "US/Mountain" :value "ge" "date" "2017-07-14",
 currentdate :zone "US/Mountain" :value "le" "date" "2017-08-14")
{
    vacation "Queue you guys, I'm going on vacation.";
}

vacation-komennon valinnaisia argumentteja ovat argumentit :handle ja :days. Oletusarvoisesti Sieve ei vastaa useita kertoja samalle lähettäjälle tietyn päivien määrän (jota kutsutaan aikakatkaisuksi) kuluessa. Tämä estää teitä lähettämästä vahingossa lukuisia automaattisia sähköposteja.

Aikakatkaisun hallitsemiseksi voitte käyttää parametria :days. Argumenttia :days käytetään määrittämään ajanjakso, jonka ajan osoitteet säilytetään ja niihin ei vastata, ja se määritetään aina päivinä. Joskus Sieve-skriptissänne on useita vacation-komentoja, ja teidän on varmistettava, että jokainen niistä lähettää vastauksen vähintään kerran (jos sääntö täsmää). Siinä tapauksessa voidaan käyttää :handle-valintaa. Argumentti kohteelle :handle on merkkijono, joka tunnistaa lähetettävän vastauksen tyypin.

Nähdäksenne, miten tämä toimii, oletetaan, että olette opettaja. Opettajat saavat usein kotitehtäviä sähköpostitse. Ne on hyödyllistä lajitella omaan kansioonsa. Lisäksi voitte hylätä kaikki palautukset, jotka saapuvat määräajan jälkeen.

Tällaisessa tapauksessa haluatte ehkä käyttää handle-parametria varmistaaksenne, että vastaukset lähetetään tarvittaessa:

require ["date", "vacation", "reject", "fileinto", "relational"];
if header :contains "subject" "Homework assignment 1"
{
    # remind people not to forget the attachments
    if size :under 5000
    {
        vacation :handle "Homework assignment 1 - missing attachment" "Your message size is really low. Please make sure you didn't forget to add the homework as an attachment.";
    }
   
    # check if the student made the deadline
    if  currentdate :zone "US/Mountain" :value "le" "date" "2017-06-12"
    {
        fileinto "Homework Assignment 1";
    } else {
        reject "Too late, you missed the deadline.";
    }
}
if header :contains "subject" "Homework assignment 2"
{
    # remind people not to forget the attachments
    if size :under 5000
    {
        vacation :handle "Homework assignment 2 - missing attachment" "Your message size is really low. Please make sure you didn't forget to add the homework as an attachment.";
    }
   
    # check if the student made the deadline
    if  currentdate :zone "US/Mountain" :value "le" "date" "2017-06-12"
    {
        fileinto "Homework Assignment 2";
    } else {
        reject "Too late, you missed the deadline.";
    }
}

Tässä ovat kaikki lomavastaukselle sallitut argumentit siinä järjestyksessä, jossa ne tulisi välittää:

  • :days on päivien määrä, jonka ajan automaattisen vastaajan tulisi välttää vastauksen lähettämistä samalle lähettäjälle lomaviestin lähettämisen jälkeen
  • :subject on etuliite (oletusarvoisesti auto), jota automaattisen vastaajan tulisi käyttää vastatessaan lähettäjälle. Esimerkiksi viesti ”Homework Assignment 2” saa vastauksen otsikolla ”late: Homework Assignment 2”, jos välitetään :subject “late”.
  • :mime ilmaisee, että vastauksen ensimmäinen rivi käyttää tiettyä muotoa. Tämä mahdollistaa lähettäjän vastaamisen HTML-viesteillä. Esimerkiksi HTML-vastauksen kirjoittamiseksi välittäkää :mime-argumentti ja kirjoittakaa vastauksen ensimmäiselle riville Content-Type : text/html.
  • :handle on merkkijono, joka tunnistaa lähetettävän vastauksen tyypin.

Huomatkaa, että parametrin :zone käyttö komennossa currentdate on valinnaista, ja se käyttää palvelimen paikallista aikaa (Proton Mailin tapauksessa Geneve, Sveitsi), jos sitä ei ole asetettu.

Vyöhykeparametri hyväksyy aikavyöhykkeen siirtymät, jotka ovat muotoa ”+0100” (tarkoittaen UTC+1) olevia merkkijonoja, sekä ICANN-tietokannan todelliset aikavyöhykkeet (katso https://en.wikipedia.org/wiki/List_of_tz_database_time_zones(uusi ikkuna)). Viimeisin vaihtoehto on usein hyödyllisempi (vaikka se ei ole standardinmukainen Sieve), koska se koodaa myös kunkin aikavyöhykkeen kesäajan.

Voitte vertailla päivämääriä käyttämällä normaalia :is/ :contains/ :matches -parametria. Joten esimerkiksi seuraava Sieve-komento täsmää mihin tahansa päivämäärään heinäkuussa 2017:

currentdate :zone "US/Mountain" :matches "date" "2017-07-??"

Mutta useimmissa tapauksissa :value-parametri on paljon hyödyllisempi.

Viimeinen parametri, joka teidän on välitettävä, on muoto. Muoto määrittää myös sen, mitä päivämäärän osaa haluatte vertailla. Annetussa esimerkissä olemme käyttäneet date-muotoa. Kaikki tuetut muodot ovat:

  • year, vuosi koodattuna muodossa ”0000”–”9999”
  • month, kuukausi koodattuna muodossa ”01”–”12”
  • day, päivä koodattuna muodossa ”01”–”31”
  • date, koodattuna muodossa yyyy-mm-dd
  • hour, tunti koodattuna muodossa ”00”–”23”
  • minute, minuutti koodattuna muodossa ”00”–”59”
  • second, sekunti koodattuna muodossa ”00”–”60” (60 on karkaussekunti(uusi ikkuna), joka esiintyy vain kello 23:59:60, kun tutkijat katsovat sen tarpeelliseksi)
  • time, aika muodossa hh:mm:ss
  • iso8601, päivämäärä ja aika ISO8601-standardin mukaisesti, esimerkiksi: 2005-08-15T15:52:01+00:00
  • std11, päivämäärä ja aika RFC2822-standardin mukaisesti, esimerkiksi: Mon, 15 Aug 2005 15:52:01 +0000
  • zone, aikavyöhykkeen siirtymä muodossa +/-zzzz, esimerkiksi +0000 tai -1200
  • julian, päivien määrä marraskuun 17. päivästä 1858 UTC lähtien
  • weekday, viikonpäivä alkaen sunnuntaista arvona 0 lauantaihin arvona 6

Lopuksi on myös mahdollista hakea päivämäärä otsakkeesta sen sijaan, että käytettäisiin currentdate-komentoa. Tämä date-komento toimii samalla tavalla kuin currentdate, paitsi että se vaatii ylimääräisen merkkijonon ennen muotoiltavaa merkkijonoa: otsakkeen nimen. Esimerkiksi:

date :zone "US/Mountain" :matches "received" "date" "2017-07-??"

Huomatkaa, että otsakkeet eivät välttämättä ole tarkkoja: lähettäjä voi muuttaa niitä haluamallaan tavalla, eivätkä ne siksi ole luotettavia.

Huomioitavaa:

  1. Automaattinen vastaaja ei vastaa automaattisesti luotuihin viesteihin, kuten postituslistoihin, toisen automaattisen vastaajan lähettämiin sähköposteihin tai noreply-osoitteesta lähetettyihin viesteihin.
  2. Automaattinen vastaaja ei lähetä viestejä useita kertoja samaan sähköpostiosoitteeseen, paitsi silloin, kun vacation-komennolla on eri :handle.

Erääntymisen hallinta

Yksi Proton Mailin ainutlaatuisista ominaisuuksista on mahdollisuus asettaa erääntymisaika lähetetyille viesteille, jolloin viesti poistetaan vastaanottajan postilaatikosta.

Voitte myös käyttää tätä ominaisuutta saapuvien viestienne hallintaan lisäämällä niille erääntymisajan:

require "vnd.proton.expire"; 
# permanently delete all incoming and outgoing emails after 10 days
expire "day" "10";

Yllä oleva skripti poistaa kaikki vastaanotetut sähköpostit 10 päivän kuluttua. Tämä on hieman äärimmäistä, koska se koskee kaikkia sähköposteja. Sen sijaan teidän pitäisi luultavasti käyttää ehtoa, jotta skriptiä sovellettaisiin vain tiettyihin sähköposteihin. Voitte esimerkiksi eräännyttää kaikki viestit sellaisilta lähettäjiltä, jotka eivät ole yhteystiedoissanne:

require ["extlists", "vnd.proton.expire"];
# permanently delete after 10 days any email not from me or from someone in my address book.
if not anyof(
    header :list "from" ":addrbook:personal",
    header :list "from" ":addrbook:myself"
) {
 expire "day" "10";
}

Huomautus: Jos määritetty erääntymisaika ylittää 730 päivää, se rajoitetaan automaattisesti 730 päivään.

Sieven rajoitukset

Sieveen liittyy useita rajoituksia, jotka Teidän on hyvä ottaa huomioon.

  • Lähetettyjä viestejä ei voi siirtää manuaalisesti tai suodattimella Postilaatikkoon/Luonnoksiin. Ne pysyvät aina Lähetetyt-kansiossa ja niissä kansioissa tai tunnisteissa, joita käyttäjä tai suodatin on käyttänyt.
  • Vastaanotettuja viestejä ei voi siirtää manuaalisesti tai suodattimella Luonnoksiin/Lähetettyihin.
  • Luonnoksia ei voi siirtää manuaalisesti tai suodattimella Postilaatikkoon/Lähetettyihin.
  • Roskapostissa oleville viesteille – tai käsittelyssä roskapostiksi luokitelluille viesteille – emme lähetä automaattisia vastauksia tai poissaoloviestejä. Jos tarvitsette tällaista ominaisuutta, voitte luoda oman kansion (esimerkiksi mySpam) ja poistaa sen ilmoitukset käytöstä.
  • Automaattivastausten ja poissaoloviestien rajoitukset

Huomautus säännöllisten lausekkeiden tuesta

Protonin Sieve-toteutus noudattaa Sieve-sähköpostisuodatuksen standardia, johon sisältyy vain vähimmäistason tuki säännöllisille lausekkeille. Sieve ei tue joitakin yleisiä säännöllisten lausekkeiden lyhenteitä, kuten \b (sanan raja), \w (sanan merkki), \W (muu kuin sanan merkki) ja \d (numero). Tämän seurauksena näiden lyhenteiden käyttö suodattimissa saattaa johtaa siihen, että ne epäonnistuvat hiljaisesti ilmoittamatta virheestä. Tämä rajoitus johtuu itse Sieve-standardista, joka asettaa etusijalle yksinkertaisuuden ja eri alustojen välisen yhteensopivuuden. Lisätietoja on Sieve Regular Expressions Draft RFC -luonnoksessa.

Luettelo tuetuista toiminnoista ja testeistä

Paketit

Sieve tukee seuraavia laajennuksia. Voitte katsoa lisätietoja virallisesta dokumentaatiosta.

Päiväys

  • Käyttö: date
  • Kuvaus: (uusi ikkuna)Tarjoaa tavan tarkistaa päivämäärätiedot.
  • Dokumentaatio: https://tools.ietf.org/html/rfc5260(uusi ikkuna)
  • Toteutus: Oletusarvoinen vertailuohjelma on i;ascii-numeric eikä i;ascii-casemap. Päivämäärä ei todellakaan ole hyödyllinen casemap-vertailuohjelman kanssa.
  • Katso: Poissaoloviestit ja päivämäärätestit

Envelope

FileInto

  • Käyttö: fileinto
  • Kuvaus: Lisää viestiin tunnisteen tai siirtää sen kansioon.
  • Dokumentaatio: https://tools.ietf.org/html/rfc5228#section-4.1(uusi ikkuna)
  • Toteutus: Vinoviivat osoittavat kansioiden koko polun, ja ne on suojattava kenoviivalla, jos tunnisteen nimi sisältää vinoviivan. Seuraavat valinnat ovat tuettuina:
    • Work“: tämä on tunniste tai kansio nimeltä ”Work”
    • Work/Project1“: tämä on alikansio ”Project1”, joka on kansiossa ”Work”
    • Work/Project1/Docs“: tämä on alikansio ”Docs”, joka on alikansiossa ”Project1”, joka on kansiossa ”Work”
    • Work/Misc\\/Others“: tämä on alikansio ”Misc/Others”, joka on kansiossa ”Work”
  • Katso: Aloittaminen

Imap4flags

Reject

Vacation

Variables

Relaatio

  • Käyttö: relational
  • Kuvaus: Tarjoaa relaatiotyyppiset vertailuoperaattorit.
  • Dokumentaatio: https://tools.ietf.org/html/rfc5231

Regex

  • Käyttö: regex
  • Kuvaus: Tarjoaa säännöllisten lausekkeiden (regex) vertailuoperaattorit.
  • Dokumentaatio: https://tools.ietf.org/id/draft-ietf-sieve-regex-01.html

Ascii-numeerinen vertailu

Ulkoisesti tallennetut listat

  • Käyttö: extlists
  • Kuvaus: Tarjoaa pääsyn yhteystietolistoihin.
  • Dokumentaatio: https://tools.ietf.org/html/rfc6134(uusi ikkuna)
  • Toteutus: Seuraavia listoja tuetaan
    • addrbook:personal : Henkilökohtainen yhteystietolista. Seuraavia kyselyitä tuetaan:
      • label[.starts-with / .ends-with / .contains]=<group: string>: yhteystietoryhmään kohdistuva toiminto;
      • keypinning=<value: true / false> yhteystiedon julkisen avaimen määritys;
      • encryption=<value: true / false> yhteystiedon oletussalaus;
      • signing=<value: true / false>  yhteystiedon oletusallekirjoitus.
    • :addrbook:myself Nykyiselle käyttäjälle kuuluvat osoitteet;
    • :addrbook:organization Nykyisen organisaation jäsenille kuuluvat osoitteet;
    • :incomingdefaults:inbox Sallittujen lista
    • :incomingdefaults:spam Estolista
  • Katso: Yhteystietolistanne käyttäminen

Eval

  • Käyttö: vnd.proton.eval
  • Kuvaus: Laskee merkkijonossa annetun yksinkertaisen aritmeettisen funktion arvon.
  • Katso: Muuttujien muuntaminen

Include

Erääntyminen

Testit

Nykyinen päivämäärä

  • Käyttö:
currentdate [":zone" <time-zone: string>] [COMPARATOR] [MATCH-TYPE] <date-part: string> <key-list: string-list>

Päiväys

  • Käyttö:
date [":zone" <time-zone: string> / ":originalzone"] [MATCH-TYPE] <header-name: string> <date-part: string> <key-list: string-list

HasFlag

  • Käyttö:
hasflag [MATCH-TYPE] [COMPARATOR] <list-of-flags: string-list>
  • Kuvaus: Testaa, onko tietyllä viestillä tietty merkki.
  • Paketti: imap4flags
  • Katso: Aloittaminen

Envelope

  • Käyttö:
envelope [COMPARATOR] [ADDRESS-PART] [MATCH-TYPE] <envelope-part: string-list> <key-list: string-list>

Osoite·

  • Käyttö:
address [COMPARATOR] [ADDRESS-PART] [MATCH-TYPE] <header-list: string-list> <key-list: string-list>
  • Kuvaus: Testaa, vastaavatko osoitteeksi jäsennetyt määritetyt otsakkeet määritettyjä avaimia.
  • Paketti: <oletus>
  • Katso: Vertailu osoitteisiin Sievessä

Otsake

  • Käyttö:
header [COMPARATOR] [MATCH-TYPE] <header-names: string-list> <key-list: string-list>

HasExpiration

  • Käyttö:
hasexpiration
  • Kuvaus: Testaa, onko viestille asetettu erääntymisaika.
  • Paketti: vnd.proton.expire

Exists

  • Käyttö:
exists <header-names: string-list>

Erääntyminen

  • Käyttö:
expiration :comparator "i;ascii-numeric" [MATCH-TYPE] <unit: "day" / "minute" / "second"> <key-list: string-list>
  • Kuvaus: Vertaa viestin erääntymisaikaa annettuihin avaimiin. Testi epäonnistuu, jos se suoritetaan viestille, joka ei eräänny.
  • Paketti: vnd.proton.expire

Size

  • Käyttö:
size <":over" / ":under"> <limit: number>

String

  • Käyttö:
string [MATCH-TYPE] [COMPARATOR] <source: string-list> <key-list: string-list>
  • Kuvaus: Arvioi, vastaako jokin lähdemerkkijonoista jotakin avainta.
  • Paketti: variables

Anyof

  • Käyttö:
anyof <tests: test-list>
  • Kuvaus: Suorittaa loogisen TAI-operaation sille annetuille testeille.
  • Paketti: <oletus>
  • Katso: Aloittaminen

Allof

  • Käyttö:
allof <tests: test-list>
  • Kuvaus: Suorittaa loogisen JA-operaation sille annetuille testeille.
  • Paketti: <oletus>
  • Katso: Aloittaminen

Not

  • Käyttö:
not <test: test>
  • Kuvaus: Kääntää annetun testin tuloksen vastakkaiseksi.
  • Paketti: <oletus>
  • Katso: Aloittaminen

True

  • Käyttö:
true
  • Kuvaus: Täsmää aina.
  • Paketti: <oletus>

False

  • Käyttö:
false
  • Kuvaus: Ei täsmää koskaan.
  • Paketti: <oletus>

Toiminnot

Require

  • Käyttö:
require <packages: string-list>
  • Kuvaus: Lataa määritetyn laajennuksen niin, että sen menetelmiä tai muokkauksia voidaan käyttää.
  • Paketti: <oletus>
  • Katso: Aloittaminen

FileInto

  • Käyttö:
fileinto <folder: string>
  • Kuvaus: Siirtää käsiteltävänä olevan viestin tiettyyn kansioon.
  • Paketti: fileinto
  • Katso: Aloittaminen

Addflag

  • Käyttö:
addflag <list-of-flags: string-list>
  • Kuvaus: Lisää määritetyn merkin käsiteltävänä olevaan viestiin.
  • Paketti: imap4flags
  • Katso: Aloittaminen

Removeflag

  • Käyttö:
removeflag <list-of-flags: string-list>
  • Kuvaus: Poistaa määritetyt merkit käsiteltävänä olevasta viestistä.
  • Paketti: imap4flags

Setflag

  • Käyttö:
setflag <list-of-flags: string-list>
  • Kuvaus: Poistaa kaikki liput ja asettaa määritetyt liput käsiteltävänä olevalle viestille.
  • Paketti: imap4flags

Stop

  • Käyttö:
stop
  • Kuvaus: Pysäyttää kaikkien Sieve-suodattimien käsittelyn. Tämän jälkeisiä Sieve-suodattimia ei suoriteta.
  • Paketti: <oletus>

Return

  • Käyttö:
return
  • Kuvaus: Pysäyttää nykyisen Sieve-suodattimen käsittelyn. Tämän jälkeiset Sieve-suodattimet suoritetaan edelleen.
  • Paketti: include

Aseta

  • Käyttö:
set [MODIFIER] <name: string> <value: string>
  • Kuvaus: Luo uusia muuttujia, jotka yhdistävät annetun nimen ja annetun arvon.
  • Paketti: variables
  • Katso: Muuttujien luominen

Hylkää

  • Käyttö:
discard
  • Kuvaus: Hylkää viestin tämän Sieve-suodattimen lopussa. Hylkäämisen jälkeen muita Sieve-suodattimia ei suoriteta.
  • Paketti: <oletus>

Säilytä

  • Käyttö:
keep
  • Kuvaus: Kumoaa viimeisimmän hylkäämiskomennon. Toiminnolla on vaikutusta vain, jos se on samassa Sieve-suodattimessa. Jos hylkäämistä ei ole suoritettu, tämä ei tee mitään.
  • Paketti: <oletus>

Reject

  • Käyttö:
reject <reason: string>
  • Kuvaus: Lähettää sähköpostin syyn kera lähettäjän SMTP-osoitteeseen ja hylkää tämän viestin välittömästi. keep-komento ei peruuta tätä toimintoa.
  • Paketti: <oletus>
  • Katso myös: Aloitusopas, Lomavastaajat ja päivämäärätestit

Eräännytä

  • Käyttö:
expire <unit: "day" / "minute" / "second"> <value: string>
  • Kuvaus: Eräännyttää viestin annetun ajan kuluttua.
  • Paketti: vnd.proton.expire
  • Katso myös: Erääntymisen hallinta

Poista erääntyminen

  • Käyttö:
unexpire
  • Kuvaus: Poistaa viestin erääntymisajan.
  • Paketti: vnd.proton.expire

Vacation

  • Käyttö:
vacation [":days" number] [":subject" string] [":mime"] [":handle" string] <reason: string>
  • Kuvaus: Lähettää automaattisen vastauksen lähettäjän SMTP-osoitteeseen siten, että määritetty syy on viestin runkona.
  • Paketti: vacation (vaatii maksullisen tilin)
  • Katso myös: Lomavastaajat ja päivämäärätestit

Kelvollinen ulkoinen lista

  • Käyttö:
valid_ext_list <ext-list-names: string-list>
  • Kuvaus: Testaa, ovatko kaikki annetut ulkoiset listat tuettuja ja kelvollisia.
  • Paketti: extlists