Sieve
Hva er Sieve?
Sieve er et filterspråk for e-post. Det kan evaluere innkommende e-postmeldinger med et sett regler og utføre en eller flere av et begrenset antall ulike handlinger (typisk plassere i en mappe, kaste, videresende eller svare med standardsvar) hvis regler slår til.
Sieve og e-postmapper
Sieve-skript kan ikke opprette e-postmapper. Du må opprette disse før du begynner å sortere meldinger til dem med Sieve. Hvis Sieve får beskjed om å sortere til en mappe som ikke finnes vil den levere til INBOX og avslutte regelevalueringen. I det nye e-postsystemet ligger alle mappene under INBOX. Du kan dessuten lage flere nivåer med mapper. I Sieve refererer man til mapper slik "INBOX.mappe1.mappe2", der mappe2 ligger under mappe1.
Slik lager du et Sieve-filter
- Skrive reglene i en tekstfil. Bruk en enkel editor som Textpad eller notepad - ikke MS Word eller lignende.
- Bruk en ManageSIEVE-klient for å laste opp og aktivere regelsettet. sieveshell er den klienten som kommer med Cyrus.
Slik aktiverer du ditt filter
La oss si du kalte filen med Sieve-skriptet ditt for noe så originalt som "sieve.script".
- Start en SSH-sesjon mot login.stud.ntnu.no
- Kjør kommandoen sieveshell sieve.stud.ntnu.no
- Her bruker du kommandoen put sieve.script for å laste opp skriptet.
- og activate sieve for å aktivere det. Merk at filens etternavn ikke tas med her. Kun ett skript kan være aktivt om gangen.
Innholdet i skriptet
Sieve-skriptet må starte med en linje som forteller Sieve hvilke verktøy som trengs.
require ["fileinto", "reject", "vacation", "regex", "relational", "comparator-i;ascii-numeric","imapflags"];
Eksempelregel
La oss først se på en regel for å lære oss syntaksen:
if size :over 1024K {
reject "Meldingen ble ikke levert; den var større enn hva mottaker godtar";
stop;
}
if size :over 1024K {
Her settes regelens vilkår opp. Hvis vilkåret blir oppfylt, blir regelen utført. Hvis ikke, fortsetter skriptet til det finner en regel som passer. Denne regelen slår til hvis det kommer inn meldinger som er større enn 1024 kilobytes (1 Megabyte). Kanskje ikke en regel du ønsker å ha, men den er fin som eksempel.
reject "Meldingen ble ikke levert; den var større enn hva mottaker godtar";
Det som befinner seg innenfor krøllparentesene er regelens handling. Kommandoen "reject" avviser meldinger, og sender tilbake den teksten vi skriver inn mellom hermetegnene. Legg merke til semikolonet på slutten av linjen. Dette er nødvendig på alle handlingslinjer.
stop;
Denne forteller Sievemotoren at den skal stoppe her, og ikke lete etter flere passende regler for denne meldingen. Vi kan la være å ta med "stop;" om vi vil gjøre flere ting med en melding, for eksempel legge en kopi i en mappe, og deretter videresende meldingen. Om du opplever at meldinger dukker opp flere steder uten av du ønsker dette - se etter regler hvor du kan ha glemt "stop;".
}
En avsluttende krøllparentes avslutter handlingsdelen av regelen. Legg merke til at det var en krøllparentes etter vilkåret i regelen også, som startet handlingsdelen av regelen.
Regler for spamfiltrering
Følgende regel vil filtrere ut meldinger som er merket som spam med tre stjerner, og plassere meldingene i mappen "spam".
if header :contains "X-Spam-Level" "***" {
fileinto "INBOX.spam";
stop;
}
Det er bedre å filtrere på tags enn på stjerner. Følgende regel vil filtrere ut meldinger med spam score på 3 eller høyere, og plassere meldingene i mappen "spam". "ge" betyr "større enn eller lik". Merk at mappen spam må finnes for at skriptet skal fungere. Om mappen ikke finnes, leveres meldingen til innboksen din, og skriptet avsluttes.
if header :value "ge" :comparator "i;ascii-numeric" "X-Spam-score" "3"{
fileinto "INBOX.spam";
stop;
}
Regler for sortering av meldinger
Følgende regel vil filtrere ut meldinger til "TDT4821-info@idi.ntnu.no", som kunne vært et emne ved IDI for eksempel. Deretter vil den plassere meldingen i mappen TDT4821 som igjen ligger under mappen emner. Merk igjen at både mappen "emner", og mappen "TDT4821" må være opprettet på forhånd. Dette gjør du lett i webmail eller med en IMAP-klient som Mozilla Thunderbird.
if address :contains ["To","Cc"] "TDT4821-info@idi.ntnu.no" {
fileinto "INBOX.emner.TDT4821";
stop;
}
Følgende regel er basert på regular expressions. Det er vanskeligere å sette opp slike regler, men de gir flere muligheter. Denne vil filtrere ut meldinger til
- film@idi.ntnu.no
- movies@idi.ntnu.no
- film@stud.ntnu.no
- movies@stud.ntnu.no
if header :regex ["To","Cc"] "(film|movies)@(idi|stud).ntnu.no" {
fileinto "INBOX.filmlister";
stop;
}
Kjente problemer
Scriptstørrelse
There was an error activating the script. The driver said: "Did not specify legal script data length." Denne feilmeldinngen tyder på at brukeren har for stort filter (større en 32kb).
Denne artikkelen er ikke ferdig, og vil bli oppdatert om kort tid. Om du trenger mer informasjon, anbefaler vi følgende lenker så lenge: BasicSieve og SieveExamples
| Languages: | Comments: | 0 | Aid: | 446 | User rating: |
|
|
| Last updated: | 2007-07-12 | Author: | oysteig | Read: | 1369 times |