Proton-hjemmeside

Sieve-filter (avancerede brugerdefinerede filtre)

Læsetid
38 min
Kategori
Modtag og læs e-mails

Proton Mail tilbyder brugere forskellige måder til automatisk at filtrere e-mails på ved at tildele etiketter eller sortere dem i mapper. Generelt er der tre metoder:

  1. Tilføjelse af afsendere til Blokeringsliste og Godkendt-lister således at de altid eller aldrig lægges i spam-mappen;
  2. Oprettelse af et brugerdefineret filter ved hjælp af Proton Mails interaktive grænseflade;
  3. [Mest avanceret] Oprettelse af et brugerdefineret filter i Sieve.

Ud af disse metoder tilbyder oprettelse af et brugerdefineret filter i Sieve den største alsidighed, men det er også mere kompliceret at bruge. Af denne grund anser vi Sieve for at være en avanceret funktion for brugere med en vis teknisk erfaring. For de fleste brugere er den interaktive grænseflade velegnet til at opbygge de brugerdefinerede filtre, De har brug for.

Indholdsfortegnelse

Hvad er Sieve?

Sieve er et programmeringssprog, der bruges til at filtrere e-mails. De kan oprette filtre i Sieve ved at skrive enkle regler. For eksempel “Giv alle beskeder fra Kyle den grønne etiket”. Ved at kombinere disse regler kan De oprette et sofistikeret filtreringssystem.

De kan skrive Sieve-regler fra bunden, låne dem fra eksempler som dem i denne artikel eller bruge software, der gør det nemmere.

Faktisk tilbyder vi Dem allerede en måde at oprette Sieve-filtre på ved hjælp af den interaktive grænseflade, som bruger Deres input til at generere Sieve-filtre. En anden god måde at lære Sieve på er ved at oprette filtre ved hjælp af den interaktive grænseflade og redigere filtrene i Sieve, da selve den interaktive grænseflade bruger en delmængde af Sieve.

Sammenlign for eksempel følgende filter oprettet ved hjælp af den interaktive grænseflade…


… med koden for det samme filter vist i Sieve-editoren:

Denne artikel vil introducere Dem til Sieve og forklare, hvordan De skriver Deres egne Sieve-filtre. Hvis De har brug for mere information om at bruge Sieve, er der adskillige andre vejledninger online, som kan hjælpe. Hvis De har spørgsmål om Sieve i Proton Mail, som ikke er besvaret på denne side, kan De altid kontakte supportteamet her.

Kom i gang

For at begynde at oprette Sieve-filtre skal De logge ind på mail.proton.me(nyt vindue) og gå til Indstillinger → Alle indstillinger → Proton Mail → Filtre → Tilføj Sieve-filter.

Et Sieve-script består af en liste over kommandoer. I de fleste scripter starter det med en require-kommando. require-kommandoen indlæser en udvidelse, der giver en bestemt funktionalitet. For eksempel har vi brug for fileinto-kommandoen for at tildele en etiket eller lægge en besked i en mappe.

For at indlæse denne kommando skriver vi blot:

require "fileinto";

For at indlæse flere udvidelser kan De bruge en liste:

require ["fileinto", "imap4flags"];

I dette tilfælde indlæser imap4flags en udvidelse, der gør det muligt for Dem at markere e-mail som læst. Efter require-kommandoen vil De ofte udføre nogle test på den indgående besked. Dette gøres ved at kombinere if og en anden kommando såsom address eller header.

Endelig, hvis testene lykkes, kan De anvende en handling på en besked. Lad os for eksempel antage, at vi vil lægge alle e-mails fra en bestemt afsender i den samme mappe og markere den indgående e-mail som læst. Dette kunne skrives som:

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

Bemærk, at #-tegnet angiver en kommentar og ikke tolkes som en del af Sieve-scriptet. Desuden skal mappen eller etiketten, De angiver (her enemies), eksistere i Deres miljø: De kan lære at oprette mapper og etiketter her. Når De har angivet dette filter, skal De trykke på knappen GEM. Deres filter vil nu køre for hver indgående e-mail.

Selvfølgelig vil De måske lægge e-mails fra flere afsendere i den samme mappe. I dette tilfælde kan De overføre en liste over strenge til adressekommandoen (en streng(nyt vindue) er en række tegn, i dette tilfælde en e-mailadresse):

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";
}

Bemærk, at når De kan overføre en streng to en testbetingelse, er det normalt også muligt at overføre en liste. Den vil derefter forsøge at finde et match ved at prøve en af strengene i listen. Dette gælder ikke for kommandoer som fileinto, addflag osv.

Men Sieve is mere kraftfuld end blot at omarrangere Deres postkasse. Det giver Dem også mulighed for at afvise e-mails med en svarbesked:

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

Brug af test

Kombination af test i Sieve

Som vi viste Dem i afsnittet Kom godt i gang, kan De udføre test ved hjælp af if-kommandoen på indgående beskeder for at afgøre, om en e-mail skal påvirkes af en require-kommando.

Ud over if-kommandoen er der andre testkommandoer, der gør det muligt for Dem at strukturere Deres script på en enkel måde.

Else

else-kommandoen giver Dem mulighed for at gøre noget, når if-kommandoen ikke udførte sine handlinger. 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-mailen blive flyttet til mappen Kenny, hvis emnet er præcis mmph mmph. I det andet tilfælde (altså når emnet ikke er præcis mmph mmph) vil e-mailen blive flyttet til mappen Understandable.

Elsif

elsif er sammentrækningen af else if. Ligesom else-kommandoen vil den blive udført, hvis if-betingelsen er falsk, men kun hvis elsif-betingelsen er sand. Hvis elsif ikke er sand, vil den næste elsif– eller else-blok blive udfø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";
}

Bemærk, at kun én af if-, elsif– eller else-blokkene vil blive udført i en enkelt kørsel.

Anyof

Nogle gange har De brug for at udføre en kommando, når en ud af flere test lykkes. Til dette kan De bruge kommandoen anyof. Dette gøres ved at skrive anyof efterfulgt af en startparentes ‘(’, de udsagn, De vil teste, adskilt af kommaer, og en slutparentes ‘)’.

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 script vil placere beskeder, der kommer fra kenny@northpark.example.com eller indeholder mmph mmph i emnelinjen, i mappen Kenny.

Allof

Modstykket til anyof findes også: allof. Dette giver Dem mulighed for kun at udføre en kommando, når alle de angivne betingelser er opfyldt:

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 script vil placere beskeder, der kommer fra kenny@northpark.example.com og indeholder mmph mmph i emnelinjen, i mappen Kenny.

Not

Endelig har De nogle gange brug for at anvende en kommando, hvis noget ikke matcher. At tilføje not foran udsagnet vil sikre, at det sker:

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";
}

Hvilket svarer til:

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 placerer alle e-mails, der ikke indeholder real guitar i emnelinjen, i mappen Young people.

Det er naturligvis muligt at kombinere alle disse test. For eksempel vil De måske stjernemarkere en e-mail, hvis den både ikke er fra Kenny og ikke indeholder 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";
}

Udførelse af test på overskrifter

Ved at bruge kommandoen address kan De udføre test på adresseoverskrifter, såsom overskrifterne from, to og sender. De kan udtrække forskellige dele af e-mailadressen ved at bruge et af følgende flag:

  • :localpart — delen før snabel-a’et (@)
  • :domain — delen efter snabel-a’et (@)
  • :all — hele adressen

Følgende kodestykke forklarer brugen af denne kommando:

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";
}

Sammenfattende vil dette script placere alt, der sendes fra domænet northpark.example.com, i PaperPeople og springfield.example.com i YellowPeople.

Derudover vil beskeden blive markeret, uanset hvilket domæne en e-mail sendes fra, hvis delen før @ er lig med chef (f.eks. chef@example.com). En anden interessant anvendelse er automatisk at gemme alt, der sendes til en bestemt adresse, i en mappe:

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

Avanceret

Kommandoen envelope giver Dem mulighed for at udføre flere test. Generelt henter testen address kun værdien ud af overskriften. Men i SMTP-sessionen kan man angive en anden from-adresse end den, der står i overskriften.

I Proton Mails overskriftsgrænseflade svarer envelope-from til overskriften return-path, og envelope-to svarer til overskriften x-original-to.

Ved at bruge kommandoen envelope kan De hente de faktiske to:– og from:-adresser fra kuverten. Bemærk, at der ikke findes andre felter end de to, så sender findes ikke i denne kommando. Bemærk venligst, at envelope findes i en udvidelse, og det kræver derfor, at De først angiver require for denne udvidelse.

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";
}

Brug af sammenligningsoperatorer til at evaluere to værdier

Når en test evaluerer to værdier, er det muligt at angive, hvordan denne sammenligning udføres ved hjælp af forskellige flag kaldet comparators. Tidligere har vi allerede brugt to comparators: :is og :contains, som kontrollerer, at den givne streng er nøjagtig lig med den specifikke værdi, og at den specifikke værdi indeholder den givne streng, 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";
}

Sammenligningsoperatoren :matches kan også bruges til at definere et mere specifikt format. Den vil sammenligne begge værdier fra start til slut, ligesom operatoren :is. Men i tilfældet med :matches kan den værdi, De har defineret, indeholde værdierne ? og *. Spørgsmålstegnet vil matche ét tegn, og stjernen (kaldet et jokertegn) vil matche nul eller flere tegn.

Med dette format kan De oprette denne test:

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

I dette eksempel vil testen lykkes, hvis emnet for beskeden starter med mmph og derefter indeholder et eller flere tegn efter det. Med andre ord vil e-mailen blive markeret, når emnet begynder med ‘mmph’. ‘mmph mmph’ og ‘mmph mmph Hello’ vil begge matche; ‘Hello mmph’ og ‘Springfield sales’ vil ikke.

Stjernen kan også bruges i midten af værdien og flere gange, som følger:

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

Denne test vil matche, hvis emnet begynder med ‘mmph ’ (med et mellemrum), indeholder endnu et ‘mmph ’ (med et mellemrum) og slutter med ‘mmph’ (uden et mellemrum). Matchende emner er ‘mmph mmph mmph’, ‘mmph mmph mmphmmph’ eller ‘mmph is mmph and mmph’.

Denne sammenligningsoperator :matches kan være meget nyttig ved sammenligning af adresser. Som De måske ved, har Proton Mail flere domæner: protonmail.com og proton.me. Hvis De vil kontrollere, om en besked kommer fra en Proton Mail-bruger, kan De bruge dette script:

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

Hvis De af en eller anden grund har brug for at matche præcis tegnet * eller ?, kan De sætte dem i anførselstegn ved at tilføje \\ foran: \\* vil matche en stjerne, og \\? vil matche et spørgsmålstegn.

Bemærk, at vi også understøtter regex-udvidelsen, som også definerer sammenligningsoperatoren :regex. Denne sammenligningsoperator er en mere præcis version af :matches, som er meget kompleks. For mere information bedes De læse den officielle dokumentation(nyt vindue).

I nogle tilfælde (som De vil se i det følgende i denne artikel), vil De måske sammenligne numeriske værdier. Pakken relational er lavet til denne anvendelse. Denne pakke definerer sammenligningsoperatoren :value, som efterfølges af sammenligningstypen.

Den giver Dem mulighed for at kontrollere, om en værdi er større end (hvor sammenligningstypen er “gt”), større end eller lig med (“ge”), lig med (“eq”), mindre end eller lig med (“le”) eller mindre end (“lt”) den givne værdi.

Ved sammenligning af numeriske værdier er pakken comparator-i;ascii-numeric også meget nyttig. Den fortæller script-fortolkeren, at strengens indhold er et tal, og ikke en almindelig streng. Den kan bruges ved at tilføje :comparator “i;ascii-numeric” til testen.

Med alle disse oplysninger kan vi bygge følgende script:

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

Denne test vil flytte beskeden til mappen Dummy example, hvis emnet er større end eller lig med 2. Hvis emnet ikke er et tal, men en tekst, vil testen mislykkes. Som sådan ser dette eksempel meget dumt ud, men det er beregnet til at blive brugt i kombination med andre udvidelser som date, som vi vil definere senere i denne artikel.

Sammenligning ved hjælp af kontekst i Sieve

De kan også få adgang til oplysninger relateret til Deres konto og Proton Mail-kontekst generelt ved hjælp af udvidelser. For eksempel kan De kontrollere, om afsenderadressen er på Deres kontaktliste.

Få adgang til Deres kontaktliste

De kan få adgang til Deres kontaktliste ved hjælp af udvidelsen extlists. Kombineret med overskriftstestene kan De derefter kontrollere, om en kontakt er på Deres kontaktliste.

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

Denne test vil markere en besked med etiketten Known , hvis afsenderen er indeholdt i listen :addrbook:personal?label=Family. Listen kan opdeles i to dele. For det første betyder :addrbook:personal, at adressen er i Deres personlige adressebog. For det andet indsnævrer label=Family listen yderligere ved at angive, at kontakten ud over at være i Deres adressebog også skal tilhøre kontaktgruppen Family. Hvis De har brug for det, kan De ændre denne etiket til en anden kontaktgruppe. De kan bruge :addrbook:personal?label=Work, hvis De vil, og i så fald vil testen kun lykkes, hvis afsenderen er i Deres adressebog og i kontaktgruppen Work.

Mere generelt overholder en liste Tag URI-skemaet(nyt vindue), og De kan tilføje ekstra parametre for at indsnævre Deres filtre. Derefter kan De bruge denne liste 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 leverede fire forskellige lister:

  • :addrbook:personal¹ kontrollerer, om en adresse er på Deres kontaktliste. Listen accepterer parameteren label, der matcher en specifik kontaktgruppe. Denne parameter findes i fire underversioner:
    • :addrbook:personal?label=something vil matche en kontakt, der er i kontaktgruppen “something”;
    • :addrbook:personal?label.starts-with=something vil matche en kontakt, der tilhører mindst én gruppe, der begynder med “something”;
    • :addrbook:personal?label.ends-with=something vil matche en kontakt, der tilhører mindst én gruppe, der slutter med “something”;
    • :addrbook:personal?label.contains=something vil matche en kontakt, der tilhører mindst én gruppe, der indeholder “something”.

De kan også få adgang til kryptografiske oplysninger om den matchende e-mail:

  • :addrbook:personal?keypinning=true vil matche en kontakt, der har en betroet nøgle. Hvis true ændres til false, vil det matche en kontakt, der ikke har en betroet nøgle;
  • :addrbook:personal?encryption=true vil matche en kontakt, for hvem kryptering er aktiveret. Hvis true ændres til false, vil det matche en kontakt, for hvem kryptering ikke er konfigureret eller er deaktiveret;
  • :addrbook:personal?signing=true vil matche en kontakt, for hvem signering er aktiveret. Hvis true ændres til false, vil det matche en kontakt, for hvem signering er deaktiveret.
  • :addrbook:myself¹ matcher enhver adresse, som ejes af Dem selv;
  • :addrbook:organization matcher enhver adresse, som ejes af en person i den organisation, De er medlem af;
  • :incomingdefaults:inbox kontrollerer, om adressen er på Deres Godkendt-liste;
  • :incomingdefaults:spam kontrollerer, om adressen er på Deres Blokeringsliste.

Kombineret med variabel-udvidelsen (beskrevet i det næste afsnit) vil de matchende variabler blive ændret. Den matchende variabel ${0} vil altid indeholde den sidste e-mailadresse i den angivne liste. Hvis listen var markeret med noten 1, vil den matchende variabel ${1} indeholde visningsnavnet.

For eksempel kan De med listerne nedenfor oprette et filter, som sletter alle e-mails, der modtages fra andre end Deres familie eller en person på Deres hvidliste:

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 betingelse er opfyldt, vil handlingen kassér blive udført. Denne handling sletter e-mailen straks og permanent. De kan også blot flytte den til papirkurvsmappen ved at bruge en fileinto-handling i stedet for en kassering: fileinto “trash”;.

Oprettelse af variabler

Et andet nyttigt værktøj, når De administrerer kontekst, er definitionen af variabler. En variabel er en midlertidig lagerplacering, hvor De kan placere tekst og mærke den med et navn. Senere vil De kunne genbruge dette indhold ved at kalde det ved dets navn. De kan for eksempel have følgende script:

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}";

Formålet med dette script er at afvise en e-mail med en tilpasset besked. Hvis den oprindelige e-mail er fra kenny, og dens emne er ’mmph mmph’, oprettes variablen ’besked’, som indeholder mmph mmph. I det andet tilfælde vil beskeden blive udfyldt med ’Sorry, I don’t want emails today!’. Derefter genbruger vi denne variabel i afvisningskommandoen i det sidste trin.

Sieve definerer ikke variabler indbygget, så de er defineret i udvidelsen variables, som skal kræves i begyndelsen af Deres script. Der er to måder at definere en variabel på.

  • Eksplicit oprettelse af en variabel:

Handlingen set leveres til at oprette en variabel.

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

Den første streng er navnet på Deres variabel, og den anden er værdien af Deres variabel. Så det foregående eksempel opretter en variabel kaldet labelname, som indeholder Work.

Når en variabel er defineret, kan De kalde den ved at tilføje følgende format i a streng: ${name}, hvor name er navnet på Deres variabel. Når det udføres, vil det blive erstattet af variablens værdi. (Hvis De ikke har defineret variablen, vil den blive erstattet af en tom streng.) Således i følgende script:

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}";

Deres e-mail vil blive mærket med etiketten /Work. Da vi allerede har defineret variablen labelname, erstattes den således af Work. Dog er foldername ikke defineret, så den fjernes blot.

  • Implicit tildeling af en variabel:

Det mest interessante brugsscenarie for variabler er, når man bruger en :matches-test. Lad os tage følgende eksempel, hvor e-mailens afsender 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 bruges sammen med variabel-udvidelsen, vil resultatet af en match-handling blive lagret i variablerne. Flere variabler vil blive indstillet med et numerisk navn. Først vil variablen 0 indeholde det fulde match (i vores eksempel vil det være den fulde adresse: test@proton.me). Derefter vil den første matchende gruppe blive tildelt variablen 1 (i vores eksempel vil det være test), den anden matchende gruppe vil blive tildelt den anden variabel (proton.me) og så videre indtil den sidste matchende gruppe.

I vores eksempel udføres kommandoen fileinto. Placeringen er defineret til ${1}, som genkendes som en variabel og dermed erstattes af dens værdi, som beregnet ovenfor: test.

Bemærk, at det også er muligt at tildele variabler i en :regex-test ved hjælp af regulære udtryks-matchgrupper.

Transformering af variabler

En god mulighed er transformering af variabler. Til det kan nøgleordet set bruges med en kombination af flag, der kan bruges til at ændre værdien, før den tildeles variablen.

  • :lower vil ændre en variabels værdi til små bogstaver;
  • :upper vil ændre en variabels værdi til store bogstaver;
  • :lowerfirst vil ændre det første bogstav i variablens værdi til lille begyndelsesbogstav;
  • :upperfirst vil ændre det første bogstav i variablens værdi til stort begyndelsesbogstav;
  • :quotewildcard vil sætte anførselstegn omkring ethvert jokertegn i strengen, så det kan bruges bogstaveligt i en match-erklæring;
  • :length vil returnere værdiens længde.

Bemærk, at De også kan genbruge en defineret variabel i en anden set-handling. Lad os forbedre vores foregående eksempler:

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}";

Trin for trin vil filtret oprette tre variabler. Den første kommando set vil oprette variablen labelname. Indholdet af variablen er Work. Faktisk transformeres den oprindelige værdi WORK ved hjælp af både :lower– og :upperfirst-flagene, hvilket ændrer formateringen til work og derefter Work.

Den anden set-kommando vil oprette en anden variabel kaldet foldername, som indeholder strengen Geneva. Faktisk blev flagene :lower og :upperfirst brugt.

Endelig oprettes variablen location. Værdien “${foldername}/${labelname}” indeholder to variabler: foldername og labelname. Så Sieve-fortolkeren vil erstatte disse variabler med deres værdier: Work og Geneva.

Endelig bruges variablen location som argument for kommandoen fileinto. Således vil e-mailen blive flyttet til den mappe, hvis navn er værdien af variablen location: Work/Geneva.

Sammenligningerne kan også anvendes på matchende variabler:

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

Her, hvis e-mailens afsender er test@proton.me, vil den blive mærket med etiketten Test.

En anden måde at ændre en variabels værdi på er at bruge udvidelsen vnd.proton.eval. Denne udvidelse definerer det nye flag :eval, som vil give Dem mulighed for at udføre nogle 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 eksempel, og stadig under forudsætning af at e-mailen kommer fra test@proton.me, vil e-mailen blive mærket med værdien 478. Faktisk er længden af den første matchende variabel 19, og resultatet af 19 * 25 – 1 / 8 + 3 rundes op til 478.

Dette kan virke ubrugeligt i starten, men denne udvidelse giver mere mening kombineret med andre handlinger.

Sammenligning med andre felter i Sieve

Matchning på specifikke overskrifter er også muligt. For eksempel, for at placere alle beskeder, der sendes til lister (ofte er det markedsføringsbeskeder eller nyhedsbreve), kan De gøre følgende:

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

For at sortere e-mails fra sociale medier i deres egen mappe kan De 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";
}

Bemærk, at vi bruger:

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

i stedet for:

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

Da sidstnævnte kontrollerer, om både x-facebook og x-linkedin-id er blevet indstillet.

For rent faktisk at se, hvilken værdi en overskrift indeholder, kan De bruge 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";
}

Bortset fra handlingen :is, som laver et nøjagtigt match, understøtter header-kommandoen også :matches, som matcher ved hjælp af jokertegn (f.eks. vil “*@*.com” matche enhver e-mailadresse, der slutter på dot com), og kommandoen :contains, som kontrollerer, om overskriften indeholder en given streng.

For at designe Sieve-filtre kan det være nyttigt at hente en e-mails overskrifter. For at gøre dette i Proton Mail-webgrænsefladen skal De gå til Flere () → Vis overskrifter. Et nyt vindue vil åbne, som indeholder alle e-mailens overskrifter.

Filtrer efter beskedstørrelse i Sieve

Det er muligt at behandle store e-mails anderledes end små e-mails. For eksempel ønsker De måske at markere store e-mails med flag, så De kan slette dem for at spare plads i postkassen. Dette kan gøres på følgende måde:

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 De kan se, er enheder tilgængelige, hvis De ønsker at angive store størrelser, ved at tilføje det bogstav, der svarer til den forventede enhed, lige efter tallet. Tre enheder er tilgængelige: K for en kibioctet (eller 1.024 bytes), M for en mebioctet (eller 1.048.576 bytes) og G for en gibioctet (eller 1.073.741.824 bytes).

Bemærk venligst, at “over” i dette tilfælde betyder større end, og “under” betyder mindre end. Dette betyder, at hvis en besked har en størrelse på nøjagtig 1.000 bytes, vil hverken

size :under 1000

eller

size :over 1000

matche.

Bemærk, at Sieve-filtre ikke har adgang til det faktiske indhold og kun viser den krypterede størrelse.

Udførelse af avancerede handlinger på beskeder

De kan udføre forskellige reaktioner på en besked i Sieve. Vi har allerede præsenteret handlingerne fileinto, addflag, discard og reject i de foregående afsnit. Her vil vi præsentere flere avancerede handlinger.

Fraværsbeskeder og datotests

De kan replikere funktionen til autosvar i Sieve ved hjælp af kommandoen vacation. Faktisk er det funktionen til autosvar i Deres Indstillinger, der afhænger af Sieve for at udføre sit arbejde. Men ved at bruge vacation-tilvalgene i et script har De mange flere muligheder for at tilpasse Deres autosvar. For eksempel kan De skræddersy specifikke beskeder afhængigt af betingelser. Bemærk: Som med funktionen til autosvar i Indstillingerne er handlingen vacation kun tilgængelig med betalte abonnementer.

Kommandoen vacation sender et fraværsvar til alle, der forsøger at kontakte Dem. Den er ofte koblet sammen med testene currentdate eller date for at sende svar i et specifikt tidsrum.

Antag, at jeg skal på ferie fra den 14. juli 2017 til den 14. august 2017 i Colorado-tid. Jeg kan bruge følgende Sieve-kode til at indstille et autosvar:

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.";
}

Nogle af de valgfrie argumenter til en vacation-kommando er argumenterne :handle og :days. Som standard vil Sieve ikke svare flere gange til den samme afsender inden for et bestemt antal dage, kaldet timeout. Dette forhindrer Dem i utilsigtet at sende adskillige automatiske e-mails.

For at kontrollere timeouten kan De bruge parameteren :days. Argumentet :days bruges til at angive den periode, hvor adresser gemmes og ikke besvares, og det angives altid i dage. Nogle gange har De flere vacation-kommandoer i Deres Sieve-script, og De skal sørge for, at hver af dem sender et svar mindst én gang (hvis reglen matcher). I så fald kan tilvalget :handle bruges. Argumentet til :handle er en streng, der identificerer den type svar, der sendes.

For at se, hvordan dette fungerer, kan De forestille Dem, at De er lærer. Lærere modtager ofte lektieafleveringer via e-mail. Det er nyttigt at sortere dem i deres egen mappe. Desuden kan De afvise afleveringer, der kommer efter tidsfristen.

I et sådant tilfælde vil De måske bruge handle for at sikre, at der sendes svar, når det er nødvendigt:

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 de tilladte argumenter for fraværsbesvarelsen, angivet i den rækkefølge, som argumenterne skal videregives i:

  • :days er det antal dage, som autosvaret skal undlade at sende et svar til den samme afsender efter at have sendt en fraværsbesked
  • :subject er et præfiks (som standard auto), som autosvaret skal bruge til at svare afsenderen. For eksempel vil “Lektieaflevering 2” modtage et svar med “late: Lektieaflevering 2“, hvis :subject “late” videregives.
  • :mime angiver, at den første linje i svaret bruger et specifikt format. Dette gør det muligt for afsenderen at svare med html-beskeder. For eksempel, for at skrive et html-svar, skal De videregive argumentet :mime og skrive Content-Type : text/html i den første linje af svaret.
  • :handle er en streng, der identificerer den type svar, der sendes.

Bemærk venligst, at parameteren :zone i currentdate er en valgfri parameter og vil bruge den lokale tid på serveren (Geneve, Schweiz, i tilfælde af Proton Mail), hvis den ikke er indstillet.

Zone-parameteren accepterer tidszone-forskydninger, som er strenge i formen “+0100“, hvilket betyder UTC+1, og faktiske tidszoner i ICANN-databasen (se https://en.wikipedia.org/wiki/List_of_tz_database_time_zones(nyt vindue)). Den sidste mulighed er ofte mere nyttig (selvom den er ikke-standard Sieve), da den også indkoder sommertiden for hver tidszone.

De kan sammenligne datoer ved at bruge den normale :is/ :contains/ :matches-parameter. Så for eksempel matcher følgende Sieve-kommando enhver dato i juli 2017:

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

Men i de fleste tilfælde er parameteren :value meget mere nyttig.

Den sidste parameter, De skal videregive, er formatet. Formatet indkoder også, hvilken del af datoen De ønsker at sammenligne. I det givne eksempel har vi brugt datoformatet. Alle understø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 åååå-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 skudsekund(nyt vindue), der kun forekommer kl. 23:59:60, når videnskabsfolk anser det for nødvendigt)
  • time, tiden som tt:mm:ss
  • iso8601, datoen og tiden i henhold til ISO8601-standarden, for eksempel: 2005-08-15T15:52:01+00:00
  • std11, datoen og tiden i henhold til RFC2822-standarden, for eksempel: Mon, 15 Aug 2005 15:52:01 +0000
  • zone, tidszoneforskydningen i formatet +/-zzzz, for eksempel +0000 eller -1200
  • julian, antallet af dage siden den 17. november 1858 UTC
  • weekday, ugedagen startende med søndag som 0 op til lørdag som 6

Endelig er det også muligt at hente datoen fra en overskrift i stedet for at bruge currentdate. Denne date-kommando fungerer på samme måde som currentdate, bortset fra at den kræver en ekstra streng før formatstrengen: navnet på overskriften. For eksempel:

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

Bemærk venligst, at overskrifterne ikke nødvendigvis er nøjagtige: en afsender kan ændre dem efter behag, og de er derfor ikke pålidelige.

Overvejelser:

  1. Autosvaret svarer ikke på automatisk genererede beskeder såsom mailinglister, e-mails sendt af et andet autosvar eller beskeder sendt af en noreply-adresse.
  2. Autosvaret sender ikke beskeder flere gange til den samme e-mailadresse, undtagen når vacation-kommandoen har et andet :handle.

Håndtering af udløb

En unik funktion ved Proton Mail is muligheden for at indstille en udløbstid for sendte beskeder, hvorefter beskeden slettes fra modtagerens postkasse.

De kan også bruge denne funktion til at administrere Deres indgående beskeder ved at tilføje en udløbstid:

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

Scriptet ovenfor sletter enhver modtaget e-mail efter 10 dage. Dette er en smule ekstremt, da det gælder for alle e-mails. I stedet bør De sandsynligvis bruge en betingelse til kun at anvende scriptet på et bestemt sæt e-mails. For eksempel kan De lade enhver besked fra en person, der ikke er i Deres kontakter, udløbe:

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";
}

Bemærk: Hvis den angivne udløbstid overstiger 730 dage, vil den automatisk blive begrænset til 730 dage.

Begrænsninger for Sieve

Der er flere Sieve-begrænsninger, De bør være opmærksom på.

  • Sendte beskeder kan ikke flyttes manuelt eller af et filter til Indbakke/Udkast. De vil altid forblive i mappen Afsendt samt i de mapper/etiketter, der er anvendt af brugeren eller filteret.
  • Modtagne beskeder kan ikke flyttes manuelt eller af et filter til Udkast/Afsendt.
  • Udkast kan ikke flyttes manuelt eller af et filter til Indbakke/Afsendt.
  • For beskeder i Spam — eller beskeder, der placeres i spam under behandlingen — sender vi ikke automatiske svar / feriebeskeder. Hvis De har brug for en sådan funktion, kan De overveje at tilføje en brugerdefineret mappe — for eksempel mySpam — og deaktivere notifikationer for den.
  • Begrænsninger for autosvar/feriebeskeder

Bemærkning om understøttelse af regulære udtryk

Protons implementering af Sieve følger standarden for Sieve-e-mailfiltrering, som kun omfatter minimal understøttelse af regulære udtryk. Nogle almindelige genvejssyntakser for regulære udtryk, såsom \b (ordgrænse), \w (ordtegn), \W (ikke-ordtegn) og \d (ciffer), understøttes ikke i Sieve. Som følge heraf kan brug af disse genvejstegn i filtre medføre, at de fejler i det stille. Denne begrænsning skyldes selve Sieve-standarden, som prioriterer enkelhed og kompatibilitet på tværs af platforme. For yderligere detaljer henvises til Sieve-udkastet til RFC for regulære udtryk.

Liste over understøttede handlinger og test

Pakker

Sieve understøtter følgende udvidelser. De kan læse den officielle dokumentation for at få flere oplysninger.

Dato

  • Anvendelse: date
  • Beskrivelse: (nyt vindue)Giver mulighed for at kontrollere datooplysninger.
  • Dokumentation: https://tools.ietf.org/html/rfc5260(nyt vindue)
  • Implementering: Standardkomparatoren er i;ascii-numeric og ikke i;ascii-casemap. Dato er nemlig ikke anvendelig sammen med casemap-komparatoren.
  • Se: Feriebeskeder og datotest

Envelope

FileInto

  • Anvendelse: fileinto
  • Beskrivelse: Anvender en etiket på en besked eller flytter den til en mappe.
  • Dokumentation: https://tools.ietf.org/html/rfc5228#section-4.1(nyt vindue)
  • Implementering: Skråstreger angiver mappens fulde sti, og de skal maskeres, hvis et etiketnavn indeholder en skråstreg. Følgende tilvalg understøttes:
    • Work“: dette er etiketten eller mappen med navnet ‘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 ligger i mappen ‘Work’
    • Work/Misc\\/Others“: dette er undermappen ‘Misc/Others’, som ligger i mappen ‘Work’
  • Se: Kom i gang

Imap4flags

Afvis

Vacation

Variables

Relationel

  • Anvendelse: relationel
  • Beskrivelse: Leverer relationelle match-operatorer.
  • Dokumentation: https://tools.ietf.org/html/rfc5231

Regex

  • Anvendelse: regex
  • Beskrivelse: Leverer regex-match-operatorer.
  • Dokumentation: https://tools.ietf.org/id/draft-ietf-sieve-regex-01.html

ASCII-numerisk komparator

Eksternt lagrede lister

  • Anvendelse: extlists
  • Beskrivelse: Giver adgang til kontaktlister.
  • Dokumentation: https://tools.ietf.org/html/rfc6134(nyt vindue)
  • Implementering: Følgende lister understøttes
    • addrbook:personal : Personlig kontaktliste. Følgende forespørgsler understøttes:
      • label[.starts-with / .ends-with / .contains]=<gruppe: streng>: handling mod en kontaktgruppe;
      • keypinning=<værdi: true / false> definition af kontaktens offentlige nøgle;
      • encryption=<værdi: true / false> kontaktens standardkryptering;
      • signing=<værdi: true / false>  kontaktens standardsignatur.
    • :addrbook:myself Adresser, der tilhører den aktuelle bruger;
    • :addrbook:organization Adresser, der tilhører medlemmerne af den aktuelle organisation;
    • :incomingdefaults:inbox Godkendt-liste
    • :incomingdefaults:spam Blokeringsliste
  • Se: Adgang til Deres kontaktliste

Eval

  • Anvendelse: vnd.proton.eval
  • Beskrivelse: Evaluerer en simpel aritmetisk funktion angivet i en streng.
  • Dokumentation: Transformering af variabler

Include

Udløb

Test

Currentdate

  • Anvendelse:
currentdate [":zone" <time-zone: string>] [COMPARATOR] [MATCH-TYPE] <date-part: string> <key-list: string-list>

Dato

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

HasFlag

  • Anvendelse:
hasflag [MATCH-TYPE] [COMPARATOR] <list-of-flags: string-list>
  • Beskrivelse: Tester, om en bestemt besked har et bestemt flag.
  • Pakke: imap4flags
  • Se: Kom godt i gang

Envelope

  • Anvendelse:
envelope [COMPARATOR] [ADDRESS-PART] [MATCH-TYPE] <envelope-part: string-list> <key-list: string-list>

Adresse·

  • Anvendelse:
address [COMPARATOR] [ADDRESS-PART] [MATCH-TYPE] <header-list: string-list> <key-list: string-list>

Header

  • Anvendelse:
header [COMPARATOR] [MATCH-TYPE] <header-names: string-list> <key-list: string-list>

HasExpiration

  • Anvendelse:
hasexpiration
  • Beskrivelse: Tester, om en besked har en udløbstid angivet.
  • Pakke: vnd.proton.expire

Exists

  • Anvendelse:
exists <header-names: string-list>

Udløb

  • Anvendelse:
expiration :comparator "i;ascii-numeric" [MATCH-TYPE] <unit: "day" / "minute" / "second"> <key-list: string-list>
  • Beskrivelse: Sammenligner beskedens udløbstid med de(n) angivne nøgle(r). Testen vil mislykkes, hvis den køres mod en besked, der ikke udløber.
  • Pakke: vnd.proton.expire

Size

  • Anvendelse:
size <":over" / ":under"> <limit: number>

String

  • Anvendelse:
string [MATCH-TYPE] [COMPARATOR] <source: string-list> <key-list: string-list>
  • Beskrivelse: Evaluerer, om nogen af kildestrengene matcher en nøgle.
  • Pakke: variables

Anyof

  • Anvendelse:
anyof <tests: test-list>
  • Beskrivelse: Udfører en logisk OR-handling på de test, der leveres til den.
  • Pakke: <standard>
  • Se: Kom i gang

Allof

  • Anvendelse:
allof <tests: test-list>
  • Beskrivelse: Udfører en logisk AND-handling på de test, der leveres til den.
  • Pakke: <standard>
  • Se: Kom godt i gang

Not

  • Anvendelse:
not <test: test>
  • Beskrivelse: Inverterer resultatet af den givne test.
  • Pakke: <standard>
  • Se: Kom godt i gang

True

  • Anvendelse:
true
  • Beskrivelse: Matcher altid.
  • Pakke: <standard>

False

  • Anvendelse:
false
  • Beskrivelse: Matcher aldrig.
  • Pakke: <standard>

Handlinger

Require

  • Anvendelse:
require <packages: string-list>
  • Beskrivelse: Indlæser en angiven udvidelse, så dens metoder eller modifikationer kan bruges.
  • Pakke: <standard>
  • Se: Kom i gang

FileInto

  • Anvendelse:
fileinto <folder: string>
  • Beskrivelse: Flytter den besked, der behandles, til en bestemt mappe.
  • Pakke: fileinto
  • Se: Kom godt i gang

Addflag

  • Anvendelse:
addflag <list-of-flags: string-list>
  • Beskrivelse: Tilføjer det angivne flag til den besked, der behandles.
  • Pakke: imap4flags
  • Se: Kom godt i gang

Removeflag

  • Anvendelse:
removeflag <list-of-flags: string-list>
  • Beskrivelse: Fjerner de angivne flag fra den besked, der behandles.
  • Pakke: imap4flags

Indstil flag

  • Anvendelse:
setflag <list-of-flags: string-list>
  • Beskrivelse: Fjerner alle flag og indstiller de angivne flag på den besked, der behandles.
  • Pakke: imap4flags

Stop

  • Anvendelse:
stop
  • Beskrivelse: Stopper behandlingen af alle Sieve-filtre. Efterfølgende Sieve-filtre vil ikke blive kørt.
  • Pakke: <standard>

Return

  • Anvendelse:
return
  • Beskrivelse: Stopper behandlingen af det aktuelle Sieve-filter. Efterfølgende Sieve-filtre vil stadig blive kørt.
  • Pakke: include

Indstil

  • Anvendelse:
set [MODIFIER] <name: string> <value: string>
  • Beskrivelse: Opretter nye variabler, der associerer det angivne navn med den angivne værdi.
  • Pakke: variables
  • Se: Oprettelse af variabler

Kassér

  • Anvendelse:
discard
  • Beskrivelse: Kasserer beskeden i slutningen af dette Sieve-filter. Efter kassering vil ingen andre Sieve-filtre blive kørt.
  • Pakke: <standard>

Behold

  • Anvendelse:
keep
  • Beskrivelse: Fortryder den seneste kassér-kommando. Vil kun have effekt, hvis den er i det samme Sieve-filter. Hvis der ikke er blevet udført nogen kassering, vil dette ikke gøre noget.
  • Pakke: <standard>

Afvis

  • Anvendelse:
reject <reason: string>
  • Beskrivelse: Sender en e-mail til afsenderens SMTP-adresse med en årsag og kasserer denne besked med det samme. Behold-kommandoen vil ikke annullere denne handling.
  • Pakke: <standard>
  • Se: Kom godt i gang, Feriebeskeder og datotests

Udløb

  • Anvendelse:
expire <unit: "day" / "minute" / "second"> <value: string>

Fjern udløb

  • Anvendelse:
unexpire
  • Beskrivelse: Fjerner en beskeds udløbstid.
  • Pakke: vnd.proton.expire

Vacation

  • Anvendelse:
vacation [":days" number] [":subject" string] [":mime"] [":handle" string] <reason: string>
  • Beskrivelse: Sender et automatisk svar til afsenderens SMTP-adresse med den angivne årsag som brødtekst.
  • Pakke: vacation (kræver en betalt konto)
  • Se: Feriebeskeder og datotests

Gyldig ekstern liste

  • Anvendelse:
valid_ext_list <ext-list-names: string-list>
  • Beskrivelse: Tester, om alle de angivne eksterne lister er understøttet og gyldige.
  • Pakke: extlists