Sieve-filter (avanserte tilpassede filtre)
- Lesetid
- 36 min
- Kategori
- Motta og les E-poster
Proton Mail tilbyr brukere ulike måter å filtrere e-poster automatisk på ved å tildele etiketter eller sortere dem i mapper. Generelt finnes det tre metoder:
- Legge til avsendere i blokkerings- og tillatelseslister slik at de alltid eller aldri havner i søppelpostmappen;
- Opprette et tilpasset filter ved hjelp av det interaktive grensesnittet til Proton Mail;
- [Mest avansert] Opprette et tilpasset filter i Sieve.
Av disse metodene tilbyr det å opprette et tilpasset filter i Sieve størst allsidighet, men det er også mer komplisert å bruke. Av denne grunn anser vi Sieve som en avansert funksjon for brukere med litt teknisk erfaring. For de fleste brukere er det interaktive grensesnittet egnet til å bygge de tilpassede filtrene du trenger.
Innholdsfortegnelse
Hva er Sieve?
Sieve er et programmeringsspråk som brukes til å filtrere e-poster. Du kan opprette filtre i Sieve ved å skrive enkle regler. For eksempel «Gi alle meldinger fra Kyle den grønne etiketten». Å kombinere disse reglene kan skape et avansert filtreringssystem.
Du kan skrive Sieve-regler fra bunnen av, låne dem fra eksempler som de i denne artikkelen, eller bruke programvare som gjør det enklere.
Faktisk tilbyr vi deg allerede en måte å opprette Sieve-filtre på ved å bruke det interaktive grensesnittet, som bruker inndataene dine til å generere Sieve-filtre. En annen god måte å lære Sieve på er å opprette filtre ved hjelp av det interaktive grensesnittet og redigere filtrene i Sieve, siden selve det interaktive grensesnittet bruker en delmengde av Sieve.
Sammenlign for eksempel følgende filter som er opprettet ved hjelp av det interaktive grensesnittet …
… med koden for det samme filteret vist i Sieve-editoren:
Denne artikkelen vil introdusere deg for Sieve og forklare hvordan du skriver dine egne Sieve-filtre. Hvis du trenger mer informasjon om bruk av Sieve, finnes det mange andre veiledninger på nettet som kan hjelpe deg. Hvis du har spørsmål om Sieve i Proton Mail som du ikke finner svar på her, kan du alltid kontakte brukerstøtten vår her.
Kom i gang
For å begynne å opprette Sieve-filtre, logg inn på mail.proton.me(nytt vindu) og gå til Innstillinger → Alle innstillinger → Proton Mail → Filtre → Legg til Sieve-filter.
Et Sieve-skript består av en liste med kommandoer. I de fleste skript starter det med en require-kommando. Kommandoen require laster inn en utvidelse som gir en bestemt funksjonalitet. For eksempel trenger vi kommandoen fileinto for å tildele en etikett eller legge en melding i en mappe.
For å laste denne kommandoen skriver vi rett og slett:
require "fileinto";
For å laste inn flere utvidelser kan du bruke en liste:
require ["fileinto", "imap4flags"];
I dette tilfellet laster imap4flags inn en utvidelse som lar deg markere e-post som lest. Etter require-kommandoen vil du ofte utføre noen tester på den innkommende meldingen. Dette gjøres ved å kombinere if og en annen kommando som address eller header.
Til slutt, hvis testene lykkes, kan du bruke en handling på en melding. Anta for eksempel at vi ønsker å legge alle e-poster fra en bestemt avsender i samme mappe, og markere den innkommende e-posten som lest. Dette kan skrives som:
require ["fileinto", "imap4flags"];
# I don't really like Spott
if address :is "from" "Spott.Tenerman@northpark.example.com"
{
addflag "\\Seen";
fileinto "enemies";
}Merk at #-tegnet indikerer en kommentar og tolkes ikke som en del av Sieve-skriptet. Mappen eller etiketten du angir (her enemies), må også eksistere i miljøet ditt: du kan lære å opprette mapper og etiketter her. Etter å ha angitt dette filteret, trykker du på LAGRE-knappen. Filteret ditt vil nå kjøre for hver innkommende e-post.
Selvfølgelig vil du kanskje legge e-poster fra flere avsendere i samme mappe. I så fall kan du sende en liste over strenger til adressekommandoen (en streng(nytt vindu) er en serie tegn, i dette tilfellet en e-postadresse):
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";
}Merk at når du kan sende en streng til en testbetingelse, er det vanligvis også mulig å sende en liste. Den vil da prøve å finne et samsvar ved å prøve hvilken som helst av strengene i listen. Dette gjelder ikke for kommandoer som fileinto, addflag osv.
Men Sieve er kraftigere enn bare å omorganisere postboksen din. Det lar deg også avvise e-poster med en svarmelding:
require "reject";
# Reject mails that spell my name wrong
if header :contains "subject" "Kyhel"
{
reject "My name is not Kyhel";
}Bruke tester
Kombinere tester i Sieve
Som vi viste deg i delen Kom i gang, kan du utføre tester med if-kommandoen på innkommende meldinger for å avgjøre om en e-post skal påvirkes av en require-kommando.
I tillegg til if-kommandoen finnes det andre testkommandoer som lar deg strukturere skriptet ditt på en enkel måte.
Else
Kommandoen else lar deg gjøre noe når if-kommandoen ikke utførte handlingene sine. Et eksempel på dette er:
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";
}Her vil e-posten bli flyttet til mappen Kenny hvis emnet er nøyaktig mmph mmph. I det andre tilfellet (altså når emnet ikke er nøyaktig mmph mmph) vil e-posten bli flyttet til mappen Understandable.
Elsif
Kommandoen elsif er sammentrekningen av else if. I likhet med else-kommandoen, vil den bli utført hvis if-betingelsen er usann, men bare hvis elsif-betingelsen er sann. Hvis elsif ikke er sann, vil den neste elsif– eller else-blokken bli utført.
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";
}Merk at bare én av if-, elsif– eller else-blokkene vil bli utført i en enkelt kjøring.
Anyof
Noen ganger må du utføre en kommando når en av flere tester lykkes. Til dette kan du bruke kommandoen anyof. Dette gjøres ved å skrive anyof etterfulgt av en parentes «(», utsagnene du vil teste separert med kommaer, og en avsluttende parentes «)».
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";
}Dette skriptet vil legge meldinger som kommer fra kenny@northpark.example.com, eller som inneholder mmph mmph i emnefeltet, i mappen Kenny.
Allof
Motstykket til anyof finnes også: allof. Dette lar deg utføre en kommando bare når alle de angitte betingelsene stemmer:
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";
}
Dette skriptet vil legge meldinger som kommer fra kenny@northpark.example.com og inneholder mmph mmph i emnefeltet, i mappen Kenny.
Not
Til slutt må du noen ganger bruke en kommando hvis noe ikke stemmer. Ved å legge til not foran utsagnet, sørger du for at det skjer:
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";
}Noe som tilsvarer:
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";
}Dette legger alle e-poster som ikke inneholder real guitar i emnefeltet, i mappen Young people.
Det er selvfølgelig mulig å kombinere alle disse testene. For eksempel vil du kanskje stjernemerke en e-post hvis den både ikke er fra Kenny og ikke inneholder mmph mmph i emnet:
require ["fileinto", "imap4flags"];
if not anyof ( header :contains "subject" "mmph mmph",
address :is "from" "Kyhel.Broski@northpark.example.com" ) {
addflag "\\Flagged";
}Utføre tester på topptekster
Ved å bruke kommandoen address kan du utføre tester på adressetopptekster, som topptekstene from, to og sender. Du kan trekke ut forskjellige deler av e-postadressen ved å bruke ett av følgende flagg:
- :localpart — delen før krøllalfaen (@)
- :domain — delen etter krøllalfaen (@)
- :all — hele adressen
Følgende kodebit forklarer bruken av denne kommandoen:
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";
}Kort oppsummert vil dette skriptet legge alt som sendes fra domenet northpark.example.com i PaperPeople, og springfield.example.com i YellowPeople.
Dessuten, uansett hvilket domene en e-post sendes fra, hvis delen før @ er lik chef (f.eks. chef@example.com), vil meldingen bli flagget. En annen interessant bruk er å automatisk lagre alt som sendes til én adresse, i en mappe:
require ["fileinto", "imap4flags"];
# Put support mail in a separate organized folder
if address :localpart "to" "support"
{
fileinto "Support";
}Avansert
Kommandoen envelope lar deg utføre flere tester. Generelt henter address-testen bare verdien ut av toppteksten. I SMTP-økten kan man imidlertid angi en annen from-adresse enn den i toppteksten.
I Proton Mails topptekstgrensesnitt tilsvarer envelope-from toppteksten return-path, og envelope-to tilsvarer toppteksten x-original-to.
Ved å bruke kommandoen envelope kan du hente de faktiske to:– og from:-adressene fra konvolutten. Merk at det ikke finnes andre felt enn disse to, så sender finnes ikke i denne kommandoen. Vær oppmerksom på at envelope er i en utvidelse, og dermed krever at du bruker require på denne utvidelsen først.
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";
}Bruke komparatorer til å evaluere to verdier
Når en test evaluerer to verdier, er det mulig å spesifisere hvordan denne sammenligningen gjøres ved hjelp av forskjellige flagg kalt comparators. På forhånd har vi allerede brukt to komparatorer: :is og :contains, som sjekker at den angitte strengen er nøyaktig lik den spesifikke verdien, og at den spesifikke verdien inneholder den angitte strengen, som i følgende test.
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";
}Komparatoren :matches kan også brukes til å definere et mer spesifikt format. Den vil sammenligne begge verdiene fra begynnelse til slutt, akkurat som komparatoren :is. Men når det gjelder :matches, kan verdien du definerte inneholde verdiene ? og *. Spørsmålstegnet vil samsvare med ett tegn, og stjernen (kalt jokertegn) vil samsvare med null eller flere tegn.
Med dette formatet kan du opprette denne testen:
require ["fileinto", "imap4flags"];
if header :matches "subject" "mmph*" {
addflag "\\Flagged";
}I dette eksempelet vil testen lykkes hvis emnet på meldingen starter med mmph og deretter inneholder et eller flere tegn etter det. Med andre ord vil e-posten bli flagget når emnet begynner med «mmph». «mmph mmph» og «mmph mmph Hello» vil begge samsvare; «Hello mmph» og «Springfield sales» vil ikke.
Stjernen kan også brukes midt i verdien og flere ganger, som følger:
require ["fileinto", "imap4flags"];
if header :matches "subject" "mmph *mmph *mmph" {
addflag "\\Flagged";
}Denne testen vil samsvare hvis emnet begynner med «mmph » (med mellomrom), inneholder en annen «mmph » (med mellomrom) og slutter med «mmph» (uten mellomrom). Samsvarende emner er «mmph mmph mmph», «mmph mmph mmphmmph» eller «mmph is mmph and mmph».
Denne komparatoren :matches kan være svært nyttig ved sammenligning av adresser. Som du kanskje vet, har Proton Mail flere domener: protonmail.com og proton.me. Hvis du vil sjekke om en melding kommer fra en Proton Mail-bruker, kan du bruke dette skriptet:
require ["fileinto", "imap4flags"];
# Put support mail in a separate organized folder
if address :domain :matches "from" "protonmail.*"
{
fileinto "Internal";
}Hvis du av en eller annen grunn må samsvare nøyaktig med tegnet * eller ?, kan du sette dem i anførselstegn ved å legge til \\ foran: \\* vil samsvare med en stjerne og \\? vil samsvare med et spørsmålstegn.
Merk at vi også støtter regex-utvidelsen, som også definerer komparatoren :regex. Denne komparatoren er en mer presis versjon av :matches, mas er svært kompleks. Hvis du vil ha mer informasjon, kan du lese den offisielle dokumentasjonen(nytt vindu).
I noen tilfeller (som du vil se i resten av denne artikkelen) vil du kanskje sammenligne numeriske verdier. Pakken relational er laget for denne bruken. Denne pakken definerer komparatoren :value, som etterfølges av sammenligningstypen.
Den lar deg sjekke om en verdi er større enn (sammenligningstypen er “gt”), større enn eller lik (“ge”), lik (“eq”), mindre enn eller lik (“le”) eller mindre enn (“lt”) den angitte verdien.
Ved sammenligning av numeriske verdier er pakken comparator-i;ascii-numeric også svært nyttig. Den forteller skripttolkeren at innholdet i strengen er et tall, og ikke en vanlig streng. Den kan brukes ved å legge til :comparator “i;ascii-numeric” i testen.
Med all denne informasjonen kan vi bygge følgende skript:
require ["fileinto", "relational", "comparator-i;ascii-numeric"];
if header :value "ge" :comparator "i;ascii-numeric" "subject" "2"
{
fileinto "Dummy example";
}Denne testen vil flytte meldingen til mappen Dummy eksempel hvis emnet er større eller lik 2. Hvis emnet ikke er et tall, men tekst, vil testen mislykkes. Slik sett virker dette eksempelet veldig dumt, men det er ment å brukes i kombinasjon med andre utvidelser som date, som vi vil definere senere i denne artikkelen.
Sammenligning ved bruk av kontekst i Sieve
Du kan også få tilgang til informasjon knyttet til kontoen din og Proton Mail-konteksten generelt ved å bruke utvidelser. For eksempel kan du sjekke om avsenderens adresse er i kontaktlisten din.
Få tilgang til kontaktlisten din
Du kan få tilgang til kontaktlisten din ved å bruke utvidelsen extlists. Kombinert med toppteksttestene kan du deretter sjekke om en kontakt er i kontaktlisten din.
require ["fileinto", "extlists"];
# Checks that the sender is in your personal address book
if header :list "from" ":addrbook:personal?label=Family"
{
fileinto "Known";
}Denne testen vil flagge en melding med etiketten Known hvis avsenderen finnes i listen :addrbook:personal?label=Family. Listen kan deles i to deler. For det første betyr :addrbook:personal at adressen er i din personlige adressebok. For det andre snevrer label=Family listen ytterligere inn ved å spesifisere at i tillegg til å være i adresseboken din, må kontakten også tilhøre kontaktgruppen Family. Om du vil, kan du endre denne etiketten til en annen kontaktgruppe. Du kan bruke :addrbook:personal?label=Work hvis du vil, og i så fall vil testen bare lykkes hvis avsenderen er i adresseboken din og i kontaktgruppen Work.
Mer generelt følger en liste Tag URI-skjemaet(nytt vindu), og du kan legge til ekstra parametere for å snevre inn filtrene dine. Deretter kan du bruke denne listen som følger:
require ["fileinto", "extlists"];
# replace :your:list:here by the list you want to use
if header :list "from" ":your:list:here"
{
# some actions...
}Vi har oppgitt fire forskjellige lister:
- :addrbook:personal¹ sjekker om en adresse er i kontaktlisten din. Listen godtar parameteren label som samsvarer med en spesifikk kontaktgruppe. Denne parameteren kan bøyes i fire underversjoner:
- :addrbook:personal?label=something vil samsvare med en kontakt som er i kontaktgruppen «something»;
- :addrbook:personal?label.starts-with=something vil samsvare med en kontakt som tilhører minst én gruppe som begynner med «something»;
- :addrbook:personal?label.ends-with=something vil samsvare med en kontakt som tilhører minst én gruppe som slutter med «something»;
- :addrbook:personal?label.contains=something vil samsvare med en kontakt som tilhører minst én gruppe som inneholder «something».
Du kan også få tilgang til kryptografisk informasjon om den samsvarende e-posten:
- :addrbook:personal?keypinning=true vil samsvare med en kontakt som har en klarert nøkkel. Hvis du endrer true til false, vil det samsvare med en kontakt som ikke har en klarert nøkkel;
- :addrbook:personal?encryption=true vil samsvare med en kontakt som har kryptering aktivert. Hvis du endrer true til false, vil det samsvare med en kontakt som ikke har kryptering konfigurert eller som har det deaktivert;
- :addrbook:personal?signing=true vil matche en kontakt som signering er aktivert for. Å endre true til false vil matche en kontakt som signering er deaktivert for.
- :addrbook:myself¹ matcher alle adresser som eies av deg selv;
- :addrbook:organization matcher hver adresse som eies av noen i organisasjonen du er medlem av;
- :incomingdefaults:inbox sjekker om adressen er i tillatelseslisten din;
- :incomingdefaults:spam sjekker om adressen er i blokkeringslisten din.
Kombinert med variabelutvidelsen (beskrevet i neste avsnitt), vil de matchende variablene bli endret. Den matchende variabelen ${0} vil alltid inneholde den siste e-postadressen i den angitte listen. Hvis listen var merket med merknad 1, vil den matchende variabelen ${1} inneholde visningsnavnet.
For eksempel kan du med listene nedenfor bygge et filter som sletter alle e-poster mottatt fra andre enn familien din eller noen på hvitlisten din:
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
}Hvis den betingelsen er oppfylt, vil handlingen discard bli utført. Denne handlingen sletter e-posten umiddelbart og permanent. Du kan også ganske enkelt flytte den til papirkurvmappen ved å bruke en fileinto-handling i stedet for discard: fileinto “trash”;.
Opprette variabler
Et annet nyttig verktøy når du administrerer kontekst, er variabel-definisjonen. En variabel er et midlertidig lagringssted der du kan plassere tekst og merke den med et navn. Senere vil du kunne gjenbruke dette innholdet ved å referere til navnet. Du kan for eksempel ha følgende skript:
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}";Målet med dette skriptet er å avvise en e-post med en tilpasset melding. Hvis den opprinnelige e-posten er fra kenny og emnet er «mmph mmph», opprettes variabelen «message» med innholdet mmph mmph. I motsatt fall vil meldingen fylles ut med «Beklager, jeg ønsker ikke e-poster i dag!». Deretter, i det siste trinnet, gjenbruker vi denne variabelen i reject-kommandoen.
Sieve definerer ikke variabler opprinnelig, så de er definert i utvidelsen variables, som må kreves i begynnelsen av skriptet ditt. Det er to måter å definere en variabel på.
- Eksplisitt opprettelse av en variabel:
Handlingen set tilbys for å opprette en variabel.
require "variables"; # Create a variable called "labelname" and containing the string "Work". set "labelname" "Work";
Den første strengen er navnet på variabelen din, og den andre er verdien av variabelen din. Så det forrige eksempelet oppretter en variabel kalt labelname som inneholder Work.
Når en variabel er definert, kan du kalle den ved å legge til følgende format i en streng: ${name}, der name er navnet på variabelen din. Når den kjøres, vil den bli erstattet med variabelverdien. (Hvis du ikke har definert variabelen, vil den bli erstattet av en tom streng.) Dermed, i følgende skript:
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}";E-posten din vil bli merket med etiketten /Work. Siden vi allerede har definert variabelen labelname, blir den dermed erstattet av Work. Siden foldername derimot ikke er definert, blir den rett og slett fjernet.
- Implisitt tildeling av en variabel:
Det mest interessante bruksområdet for variabler er når du bruker en :matches-test. La oss ta følgende eksempel, der e-postavsenderen er 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}";
}Når det brukes med variables-utvidelsen, vil resultatet av en match-operasjon bli lagret i variablene. Flere variabler vil bli angitt med et numerisk navn. Først vil variabelen 0 inneholde hele treffet (i vårt eksempel vil det være hele adressen: test@proton.me). Deretter vil den første treffgruppen bli tildelt variabelen 1 (i vårt eksempel vil det være test), den andre treffgruppen vil bli tildelt den andre variabelen (proton.me), og så videre helt til den siste treffgruppen.
I eksempelet vårt blir kommandoen fileinto utført. Plasseringen er definert til ${1} som gjenkjennes som en variabel, og blir dermed erstattet av verdien sin, beregnet som ovenfor: test.
Merk at det også er mulig å tilordne variabler i en :regex-test ved å bruke treffgrupper for regulære uttrykk.
Transformere variabler
En fin mulighet er transformering av variabler. Til det kan nøkkelordet set brukes med en kombinasjon av flagg som kan brukes til å endre verdien før den tildeles variabelen.
- :lower vil endre en variabelverdi til små bokstaver;
- :upper vil endre en variabelverdi til store bokstaver;
- :lowerfirst vil endre den første bokstaven i variabelverdien til liten bokstav;
- :upperfirst vil endre den første bokstaven i variabelverdien til stor bokstav;
- :quotewildcard vil sette eventuelle jokertegn i strengen i anførselstegn, slik at de kan brukes bokstavelig i en match-setning;
- :length vil returnere lengden på verdien.
Merk at du også kan gjenbruke en definert variabel i en annen set-handling. La oss forbedre de forrige eksemplene våre:
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}";Trinn for trinn vil filteret opprette tre variabler. Den første kommandoen set vil opprette variabelen labelname. Innholdet i variabelen er Work. Den opprinnelige verdien WORK transformeres nemlig ved å bruke både flaggene :lower og :upperfirst, noe som endrer skrivemåten til work og deretter Work.
Den andre set-kommandoen vil opprette en andre variabel kalt foldername, som inneholder strengen Geneva. Flaggene :lower og :upperfirst ble nemlig brukt.
Til slutt opprettes variabelen location. Verdien «${foldername}/${labelname}» inneholder to variabler: foldername og labelname. Dermed vil sieve-tolken erstatte disse variablene med verdiene deres: Work og Geneva.
Til slutt brukes variabelen location som argument for kommandoen fileinto. E-posten vil dermed bli flyttet til mappen som har navnet til verdien av variabelen location: Work/Geneva.
Komparatorene kan også brukes på matchende variabler:
require "variables";
require "fileinto";
if address :all :matches "from" "*@*" {
set :lower :upperfirst "fileintovar" "${1}";
fileinto "${fileintovar}";
}Her, hvis e-postens avsender er test@proton.me, vil den bli merket med etiketten Test.
En annen måte å endre verdien til en variabel på, er å bruke utvidelsen vnd.proton.eval. Denne utvidelsen definerer det nye flagget :eval, som lar deg gjøre noen enkle beregninger:
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}";
}I dette eksempelet, og fortsatt under forutsetning av at e-posten kommer fra test@proton.me, vil e-posten bli merket med verdien 478. Lengden på den første matchende variabelen er nemlig 19, og resultatet av 19 * 25 – 1 / 8 + 3 rundes opp til 478.
Dette kan virke unyttig i starten, men denne utvidelsen gir mer mening kombinert med andre operasjoner.
Sammenligning mot andre felt i Sieve
Det er også mulig å matche på spesifikke topptekster. For eksempel, for å plassere alle meldinger som sendes til lister (ofte er de markedsføringsmeldinger eller nyhetsbrev), kan du gjøre følgende:
require "fileinto";
# Filter all lists into the same folder
if exists "list-unsubscribe"
{
fileinto "advertisements";
}For å sortere e-poster fra sosiale medier til deres egen mappe, kan du skrive:
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";
}Merk at vi bruker:
anyof(exists "x-facebook", exists "x-linkedin-id")
i stedet for:
exists ["x-facebook", "x-linkedin-id"]
Siden sistnevnte sjekker om både x-facebook og x-linkedin-id er angitt.
For å faktisk se hvilken verdi en topptekst inneholder, kan du bruke header-testen:
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";
}Bortsett fra :is-operasjonen, som gjør et nøyaktig treff, støtter header-kommandoen også :matches, som matcher ved hjelp av jokertegn (f.eks. «*@*.com» vil matche enhver e-postadresse som slutter på dot com), og :contains-kommandoen, som sjekker om toppteksten inneholder en gitt streng.
For å utforme Sieve-filtre, kan det være nyttig å hente topptekstene til en e-post. For å gjøre dette i Proton Mail-webgrensesnittet, går du til Mer (∨) → Vis topptekster. Et nytt vindu åpnes som inneholder alle topptekstene til e-posten.
Filtrer ved hjelp av meldingsstørrelse i Sieve
Det er mulig å behandle store e-poster annerledes enn små e-poster. For eksempel vil du kanskje flagge store e-poster, slik at du kan slette dem for å spare plass i innboksen. Dette kan gjøres på følgende måte:
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";
}Som du kan se, er enheter tilgjengelige hvis du vil angi store størrelser ved å legge til bokstaven som tilsvarer den forventede enheten rett etter tallet. Tre enheter er tilgjengelige: K for en kibioctet (eller 1024 byte), M for en mebioctet (eller 1 048 576 byte) og G for en gibioctet (eller 1 073 741 824 byte).
Vær oppmerksom på at «over» i dette tilfellet betyr større enn, og «under» betyr mindre enn. Dette betyr at hvis en melding har en størrelse på nøyaktig 1000 byte, vil verken
size :under 1000
eller
size :over 1000
vil matche.
Merk at Sieve-filtre ikke har tilgang til det faktiske innholdet, og bare viser den krypterte størrelsen.
Utføre avanserte handlinger på meldinger
Du kan utføre forskjellige reaksjoner på en melding i Sieve. Vi har allerede presentert handlingene fileinto, addflag, discard og reject i de forrige avsnittene. Her vil vi presentere mer avanserte handlinger.
Fraværsmeldinger og datotester
Du kan gjenskape auto-svar-funksjonen i Sieve ved å bruke vacation-kommandoen. Faktisk er auto-svar-funksjonen i innstillingene dine avhengig av Sieve for å gjøre jobben sin. Men ved å bruke fraværsalternativene i et skript, har du mange flere muligheter til å tilpasse auto-svarene dine. For eksempel kan du skreddersy spesifikke meldinger avhengig av betingelser. Merk: Som med auto-svar-funksjonen i innstillingene, er vacation-handlingen bare tilgjengelig med betalte abonnementer.
vacation-kommandoen sender et fraværssvar til alle som prøver å kontakte deg. Den kobles ofte med testene currentdate eller date for å sende svar i et spesifikt tidsrom.
Anta at jeg skal på ferie fra 14. juli 2017 til 14. august 2017, i Colorado-tid. Jeg kan bruke følgende Sieve-kode for å angi en automatisk svarer:
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.";
}Noen av de valgfrie argumentene for en vacation-kommando er argumentene :handle og :days. Som standard vil Sieve ikke svare flere ganger til samme avsender innen et bestemt antall dager, kalt tidsavbrudd. Dette forhindrer at du utilsiktet sender mange automatiserte e-poster.
For å kontrollere tidsavbruddet kan du bruke parameteren :days. Argumentet :days brukes til å spesifisere perioden der adresser beholdes og ikke blir svart på, og angis alltid i dager. Noen ganger har du flere vacation-kommandoer i Sieve-skriptet ditt, og du må sørge for at hver av dem sender et svar minst én gang (hvis regelen treffer). I så fall kan alternativet :handle brukes. Argumentet til :handle er en streng som identifiserer typen svar som sendes.
For å se hvordan dette fungerer, anta at du er en lærer. Lærere mottar ofte lekser på e-post. Det er nyttig å sortere dem i en egen mappe. Videre kan du avvise alle innleveringer som kommer etter fristen.
I et slikt tilfelle vil du kanskje bruke handle for å sikre at svar sendes når det er nødvendig:
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.";
}
}Her er alle tillatte argumenter for fraværssvaret, oppført i rekkefølgen argumentene skal angis:
- :days er antall dager den automatiske svareren skal avstå fra å sende et svar til samme avsender etter å ha sendt en fraværsmelding
- :subject er et prefiks (som standard auto) som den automatiske svareren skal bruke til å svare avsenderen. For eksempel vil «Homework Assignment 2» motta et svar med «late: Homework Assignment 2» hvis :subject “late” angis.
- :mime indikerer at den første linjen i svaret bruker et bestemt format. Dette gjør at avsenderen kan svare med HTML-meldinger. For eksempel, for å skrive et HTML-svar, angir du argumentet :mime og skriver Content-Type : text/html på den første linjen i svaret.
- :handle er en streng som identifiserer typen svar som sendes.
Vær oppmerksom på at :zone-parameteren i currentdate er en valgfri parameter og vil bruke den lokale tiden til tjeneren (Genève, Sveits, for Proton Mail) hvis den ikke er angitt.
Soneparameteren godtar tidssoneforskyvninger, som er strenger på formen «+0100» som betyr UTC+1, og faktiske tidssoner i ICANN-databasen (se https://en.wikipedia.org/wiki/List_of_tz_database_time_zones(nytt vindu)). Det siste alternativet er ofte mer nyttig (selv om det ikke er standard Sieve) fordi det også koder sommertiden for hver tidssone.
Du kan sammenligne datoer ved å bruke den vanlige parameteren :is/ :contains/ :matches. Så for eksempel vil følgende Sieve-kommando matche alle datoer i juli 2017:
currentdate :zone "US/Mountain" :matches "date" "2017-07-??"
Men i de fleste tilfeller er parameteren :value mye mer nyttig.
Den siste parameteren du må angi, er formatet. Formatet koder også hvilken del av datoen du vil sammenligne. I det gitte eksempelet har vi brukt datoformatet. Alle støttede formater er:
- year, året kodet i formatet «0000» til «9999»
- month, måneden kodet som «01» til «12»
- day, dagen kodet som «01» til «31»
- date, kodet som yyyy-mm-dd
- hour, timen kodet som «00» til «23»
- minute, minuttet kodet som «00» til «59»
- second, sekundet kodet som «00» til «60» (60 er et skuddsekund(nytt vindu), som bare oppstår kl. 23:59:60 når forskere anser det som nødvendig)
- time, tiden som hh:mm:ss
- iso8601, dato og tid i henhold til ISO8601-standarden, for eksempel: 2005-08-15T15:52:01+00:00
- std11, dato og tid i henhold til RFC2822-standarden, for eksempel: Mon, 15 Aug 2005 15:52:01 +0000
- zone, tidssoneforskyvningen i formatet +/-zzzz, for eksempel +0000 eller -1200
- julian, antall dager siden 17. november 1858 UTC
- weekday, ukedagen som starter med søndag som 0 til lørdag som 6
Til slutt er det også mulig å hente datoen fra en topptekst i stedet for å bruke currentdate. Denne datokommandoen fungerer på samme måte som currentdate, bortsett fra at den krever en ekstra streng før formatstrengen: navnet på toppteksten. For eksempel:
date :zone "US/Mountain" :matches "received" "date" "2017-07-??"
Vær oppmerksom på at topptekstene ikke nødvendigvis er nøyaktige: en avsender kan endre dem etter eget ønske, og de er derfor ikke pålitelige.
Viktig å tenke på:
- Den automatiske svareren svarer ikke på automatisk genererte meldinger, som e-postlister, e-poster sendt av en annen automatisk svarer, eller meldinger sendt fra en noreply-adresse.
- Den automatiske svareren vil ikke sende meldinger flere ganger til samme e-postadresse, unntatt når vacation-kommandoen har en annen :handle.
Administrere utløpsdato
Én unik funksjon ved Proton Mail er muligheten til å angi en utløpstid på sendte meldinger, og da vil meldingen slettes fra mottakerens innboks.
Du kan også bruke denne funksjonen til å administrere de innkommende meldingene dine ved å legge til en utløpstid:
require "vnd.proton.expire"; # permanently delete all incoming and outgoing emails after 10 days expire "day" "10";
Skriptet ovenfor vil slette alle mottatte e-poster etter 10 dager. Dette er litt ekstremt, siden det gjelder alle e-poster. I stedet bør du sannsynligvis bruke en betingelse for å bruke skriptet på bare et bestemt sett med e-poster. For eksempel kan du la alle meldinger fra noen som ikke er i kontaktene dine, utløpe:
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";
}Merk: Hvis den angitte utløpstiden overskrider 730 dager, vil den automatisk begrenses til 730 dager.
Begrensninger for Sieve
Det er flere Sieve-begrensninger du bør merke deg.
- Sendte meldinger kan ikke flyttes manuelt eller av et filter til Innboks/Utkast. De vil alltid bli værende i Sendt-mappen og mapper/etiketter som er brukt av brukeren eller filteret.
- Mottatte meldinger kan ikke flyttes manuelt eller av et filter til Utkast/Sendt.
- Utkast kan ikke flyttes manuelt eller av et filter til Innboks/Sendt.
- For meldinger i Søppelpost — eller meldinger som blir plassert i søppelpost under behandling — sender vi ikke autosvar eller fraværsmeldinger. Hvis du trenger en slik funksjon, kan du vurdere å legge til en egendefinert mappe — for eksempel mySpam — og deaktivere varsler for den.
- Begrensninger for autosvar/fraværsmeldinger
Litt om støtte for regulære uttrykk
Protons implementering av Sieve følger standarden for Sieve-e-postfiltrering, som kun inkluderer minimal støtte for regulære uttrykk. Noen vanlige forkortelser for regulære uttrykk, som \b (ordgrense), \w (ordtegn), \W (ikke-ordtegn) og \d (siffer), støttes ikke i Sieve. Som et resultat kan bruk av disse forkortelsene i filtre føre til at de feiler uten feilmelding. Denne begrensningen skyldes selve Sieve-standarden, som prioriterer enkelhet og kompatibilitet på tvers av plattformer. Du finner alle detaljer i Sieve Regular Expressions Draft RFC.
Liste over støttede handlinger og tester
Pakker
Sieve støtter følgende utvidelser. Du kan se den offisielle dokumentasjonen for mer informasjon.
Dato
- Bruk: date
- Beskrivelse: (nytt vindu)Gir en måte å sjekke datoinformasjon på.
- Dokumentasjon: https://tools.ietf.org/html/rfc5260(nytt vindu)
- Implementering: Standard sammenligningsfunksjon er i;ascii-numeric og ikke i;ascii-casemap. «date» er nemlig ikke nyttig med casemap-sammenligning.
- Se: Fraværsmeldinger og datotester
Envelope
- Bruk: envelope
- Beskrivelse: (nytt vindu)Definerer tester rundt meldingens SMTP-konvolutt (envelope).
- Dokumentasjon: https://tools.ietf.org/html/rfc5228#section-5.4(nytt vindu)
- Se: Sammenligning mot adresser i Sieve
FileInto
- Bruk: fileinto
- Beskrivelse: Bruker en etikett på en melding eller flytter den til en mappe.
- Dokumentasjon: https://tools.ietf.org/html/rfc5228#section-4.1(nytt vindu)
- Implementering: Skråstreker indikerer mappens fulle bane, og de må maskeres hvis et etikettnavn inneholder en skråstrek. Følgende alternativer støttes:
- «Work»: dette er etiketten eller mappen som heter «Work»
- «Work/Project1»: dette er undermappen «Project1» som ligger i mappen «Work»
- «Work/Project1/Docs»: dette er undermappen «Docs» som ligger i undermappen «Project1», som igjen ligger i mappen «Work»
- «Work/Misc\\/Others»: dette er undermappen «Misc/Others» som ligger i mappen «Work»
- Se: Kom i gang
Imap4flags
- Bruk: imap4flags
- Beskrivelse: Bruker et flagg på en melding.
- Dokumentasjon: https://tools.ietf.org/html/rfc5232(nytt vindu)
- Implementering: Parametere for variabellister støttes ikke. Bruk utvidelsen variables i stedet.
- Se: Kom i gang
Reject
- Bruk: reject
- Beskrivelse: Avviser en melding med en spesifikk melding.
- Dokumentasjon: https://tools.ietf.org/html/rfc5429(nytt vindu)
- Se: Kom i gang
Vacation
- Bruk: vacation
- Beskrivelse: Sender en autosvarmelding.
- Dokumentasjon: https://tools.ietf.org/html/rfc5230(nytt vindu)
- Se: Fraværsmeldinger og datotester
Variables
- Bruk: variables
- Beskrivelse: Oppretter og bruker variabler.
- Dokumentasjon: https://tools.ietf.org/html/rfc5229(nytt vindu)
- Se: Opprette variabler
Relasjonell
- Bruk: relational
- Beskrivelse: Tilbyr relasjonelle samsvarsoperatorer.
- Dokumentasjon: https://tools.ietf.org/html/rfc5231
Regex
- Bruk: regex
- Beskrivelse: Tilbyr regex-samsvarsoperatorer.
- Dokumentasjon: https://tools.ietf.org/id/draft-ietf-sieve-regex-01.html
Ascii-numerisk sammenligner
- Bruk: comparator-i;ascii-numeric
- Beskrivelse: Tilbyr sammenligning av tall.
- Dokumentasjon: https://tools.ietf.org/html/rfc5231(nytt vindu)
Eksternt lagrede lister
- Bruk: extlists
- Beskrivelse: Gir tilgang til kontaktlister.
- Dokumentasjon: https://tools.ietf.org/html/rfc6134(nytt vindu)
- Implementering: Følgende lister støttes
- addrbook:personal : Personlig kontaktliste. Følgende søk støttes:
- label[.starts-with / .ends-with / .contains]=<group: string>: operasjon mot en kontaktgruppe;
- keypinning=<value: true / false> definisjon av kontaktens offentlige nøkkel;
- encryption=<value: true / false> kontaktens standardkryptering;
- signing=<value: true / false> kontaktens standardsignatur.
- :addrbook:myself Adresser som tilhører den gjeldende brukeren;
- :addrbook:organization Adresser som tilhører medlemmene av den gjeldende organisasjonen;
- :incomingdefaults:inbox Tillatelsesliste
- :incomingdefaults:spam Blokkeringsliste
- addrbook:personal : Personlig kontaktliste. Følgende søk støttes:
- Se: Få tilgang til kontaktlisten din
Eval
- Bruk: vnd.proton.eval
- Beskrivelse: Evaluerer en enkel aritmetisk funksjon angitt i en streng.
- Dokumentasjon: Transformere variabler
Inkludering
- Bruk: include
- Beskrivelse: Administrerer Sieve-arbeidsflyt.
- Dokumentasjon: https://tools.ietf.org/html/rfc6609(nytt vindu)
- Implementering: Kun return-noden støttes.
Utløpsdato
- Bruk: vnd.proton.expire
- Beskrivelse: Administrerer utløp av meldinger.
- Dokumentasjon: Administrere utløp
Tester
Currentdate
- Bruk:
currentdate [":zone" <time-zone: string>] [COMPARATOR] [MATCH-TYPE] <date-part: string> <key-list: string-list>
- Beskrivelse: Utfører en test som bruker den gjeldende datoen på Proton Mail-e-posttjeneren
- Pakke: date
- Se: Liste over støttede handlinger og tester
Dato
- Bruk:
date [":zone" <time-zone: string> / ":originalzone"] [MATCH-TYPE] <header-name: string> <date-part: string> <key-list: string-list
- Beskrivelse: Utfører en test som bruker datoen beskrevet i en topptekst.
- Pakke: date
- Se: Liste over støttede handlinger og tester
HasFlag
- Bruk:
hasflag [MATCH-TYPE] [COMPARATOR] <list-of-flags: string-list>
- Beskrivelse: Sjekker om en bestemt melding har et bestemt flagg.
- Pakke: imap4flags
- Se: Kom i gang
Envelope
- Bruk:
envelope [COMPARATOR] [ADDRESS-PART] [MATCH-TYPE] <envelope-part: string-list> <key-list: string-list>
- Beskrivelse: Sjekker om den angitte delen av SMTP-konvolutten samsvarer med den angitte nøkkelen.
- Pakke: envelope
- Se: Sammenligning mot adresser i Sieve – Avansert
Adresse·
- Bruk:
address [COMPARATOR] [ADDRESS-PART] [MATCH-TYPE] <header-list: string-list> <key-list: string-list>
- Beskrivelse: Sjekker om de angitte topptekstene delt opp som en adresse samsvarer med de angitte nøklene.
- Package: <standard>
- Se: Sammenligning mot adresser i Sieve
Topptekst
- Bruk:
header [COMPARATOR] [MATCH-TYPE] <header-names: string-list> <key-list: string-list>
- Beskrivelse: Sjekker om de angitte topptekstene samsvarer med de angitte nøklene.
- Pakke: <standard>
- Se: Sammenligning mot andre felt i Sieve
Har utløpsdato
- Bruk:
hasexpiration
- Beskrivelse: Sjekker om en melding har en angitt utløpsdato.
- Pakke: vnd.proton.expire
Eksisterer
- Bruk:
exists <header-names: string-list>
- Beskrivelse: Sjekker om (alle) de angitte topptekstene eksisterer.
- Package: <standard>
- Se: Sammenligning mot andre felt i Sieve
Utløpsdato
- Bruk:
expiration :comparator "i;ascii-numeric" [MATCH-TYPE] <unit: "day" / "minute" / "second"> <key-list: string-list>
- Beskrivelse: Sammenligner meldingens utløpsdato med de(n) angitte nøkkelen(e). Testen vil mislykkes hvis den kjøres mot en melding som ikke utløper.
- Pakke: vnd.proton.expire
Størrelse
- Bruk:
size <":over" / ":under"> <limit: number>
- Beskrivelse: Sjekker om den totale størrelsen på meldingen (inkludert vedlegg) er over eller under en bestemt grense.
- Package: <standard>
- Se: Filtrer etter meldingsstørrelse i Sieve
Streng
- Bruk:
string [MATCH-TYPE] [COMPARATOR] <source: string-list> <key-list: string-list>
- Beskrivelse: Evaluerer om noen av kildestrengene samsvarer med en nøkkel.
- Pakke: variables
Anyof
- Bruk:
anyof <tests: test-list>
- Beskrivelse: Utfører en logisk ELLER på testene som oppgis.
- Pakke: <standard>
- Se: Kom i gang
Allof
- Bruk:
allof <tests: test-list>
- Beskrivelse: Utfører en logisk OG på testene som oppgis.
- Pakke: <standard>
- Se: Kom i gang
Not
- Bruk:
not <test: test>
- Beskrivelse: Inverterer resultatet av den oppgitte testen.
- Pakke: <standard>
- Se: Kom i gang
True
- Bruk:
true
- Beskrivelse: Samsvarer alltid.
- Pakke: <standard>
False
- Bruk:
false
- Beskrivelse: Samsvarer aldri.
- Pakke: <standard>
Handlinger
Require
- Bruk:
require <packages: string-list>
- Beskrivelse: Laster en angitt utvidelse slik at metodene eller modifikasjonene dens kan brukes.
- Pakke: <standard>
- Se: Kom i gang
FileInto
- Bruk:
fileinto <folder: string>
- Beskrivelse: Flytter meldingen som behandles, til en bestemt mappe.
- Pakke: fileinto
- Se: Kom i gang
Addflag
- Bruk:
addflag <list-of-flags: string-list>
- Beskrivelse: Legger til det angitte flagget på meldingen som behandles.
- Pakke: imap4flags
- Se: Kom i gang
Removeflag
- Bruk:
removeflag <list-of-flags: string-list>
- Beskrivelse: Fjerner de angitte flaggene fra meldingen som behandles.
- Pakke: imap4flags
Setflag
- Bruk:
setflag <list-of-flags: string-list>
- Beskrivelse: Fjerner alle flagg og angir de spesifiserte flaggene på meldingen som behandles.
- Pakke: imap4flags
Stop
- Bruk:
stop
- Beskrivelse: Stopper behandlingen av alle Sieve-filtre. Påfølgende Sieve-filtre vil ikke kjøre.
- Pakke: <standard>
Return
- Bruk:
return
- Beskrivelse: Stopper behandlingen av gjeldende Sieve-filter. Påfølgende Sieve-filtre vil fortsatt kjøre.
- Pakke: include
Set
- Bruk:
set [MODIFIER] <name: string> <value: string>
- Beskrivelse: Oppretter nye variabler som forbinder det oppgitte navnet med den oppgitte verdien.
- Pakke: variables
- Se: Opprette variabler
Discard
- Bruk:
discard
- Beskrivelse: Forkaster meldingen på slutten av dette Sieve-filteret. Etter forkastingen vil ingen andre sieve-filtre kjøres.
- Pakke: <standard>
Keep
- Bruk:
keep
- Beskrivelse: Tilbakestiller den forrige forkast-kommandoen. Vil bare ha effekt hvis den er i det samme Sieve-filteret. Hvis ingen forkasting har blitt utført, vil dette ikke gjøre noe.
- Pakke: <standard>
Reject
- Bruk:
reject <reason: string>
- Beskrivelse: Sender en e-post til avsenderens SMTP-adresse med en begrunnelse, og forkaster denne meldingen umiddelbart. Keep-kommandoen vil ikke avbryte denne handlingen.
- Pakke: <standard>
- Se: Kom i gang, Fraværsmeldinger og datotester
Expire
- Bruk:
expire <unit: "day" / "minute" / "second"> <value: string>
- Beskrivelse: Gjør at en melding utløper etter den oppgitte tiden.
- Pakke: vnd.proton.expire
- Se: Administrere utløp
Unexpire
- Bruk:
unexpire
- Beskrivelse: Fjerner utløpstiden for en melding.
- Pakke: vnd.proton.expire
Vacation
- Bruk:
vacation [":days" number] [":subject" string] [":mime"] [":handle" string] <reason: string>
- Beskrivelse: Sender et automatisk svar til SMTP-adressen til avsenderen med den angitte begrunnelsen som brødtekst.
- Pakke: vacation (krever en betalt konto)
- Se: Fraværsmeldinger og datotester
Gyldig ekstern liste
- Bruk:
valid_ext_list <ext-list-names: string-list>
- Beskrivelse: Tester om alle de oppgitte eksterne listene støttes og er gyldige.
- Pakke: extlists



