Sieve (e-postfiltreringsspråk)
Originalförfattare | University of Washington och Carnegie Mellon University och standardiserad av Tim Showalter |
---|---|
Initial release | 1999 |
Operativ system | Cross-platform |
Typ | E-postfiltrering |
Hemsida |
Sieve är ett programmeringsspråk som kan användas för e-postfiltrering . Det är skyldigt att skapa CMU Cyrus Project, skaparna av Cyrus IMAP-server .
Språket är inte bundet till något speciellt operativsystem eller e-postarkitektur. Det kräver användning av RFC-2822-kompatibla meddelanden, men bör i övrigt generaliseras till andra system som uppfyller dessa kriterier. Den aktuella versionen av Sieves basspecifikation beskrivs i RFC 5228, publicerad i januari 2008.
Språk
Sieve är ett datadrivet programmeringsspråk som liknar tidigare e-postfiltreringsspråk som procmail och maildrop , och tidigare linjeorienterade språk som sed och AWK : det specificerar villkor att matcha och åtgärder som ska utföras vid matchning.
Detta skiljer sig från programmeringsspråk för allmänna ändamål genom att det är mycket begränsat – basstandarden har inga variabler och inga loopar (men tillåter villkorlig förgrening), vilket förhindrar skenande program och begränsar språket till enkla filtreringsoperationer. Även om tillägg har utformats för att utöka språket till att inkludera variabler och, i begränsad grad, loopar, är språket fortfarande mycket begränsat och därför lämpligt för att köra användarutformade program som en del av e-postsystemet.
Det finns också ett betydande antal begränsningar för språkets grammatik , för att minska komplexiteten i att tolka språket, men språket stöder också användningen av flera metoder för att jämföra lokaliserade strängar och är helt Unicode -medvetet.
Medan Sieve ursprungligen var tänkt som ett verktyg externt till SMTP, utökar RFC 5429 det oväntat för att tillåta avslag på SMTP-protokollnivå.
Använda sig av
Sieve-skripten kan genereras av en GUI -baserad regelredigerare eller så kan de matas in direkt med hjälp av en textredigerare .
Skripten överförs till e-postservern på ett serverberoende sätt. ManageSieve-protokollet (definierat i RFC 5804) tillåter användare att hantera sina Sieve-skript på en fjärrserver. E-postservrar med lokala användare kan tillåta att skripten lagras i t.ex. en .sieve-fil i användarnas hemkataloger.
Historia
Språket standardiserades i den (nu föråldrade) RFC 3028 från januari 2001 av Tim Showalter.
Tillägg
IETF Sieve-arbetsgruppen har uppdaterat basspecifikationen 2008 (RFC 5228), och har tagit med följande tillägg till Proposed Standard-status:
- RFC 5173 – Kropp; tillåter ett skript att testa brödtexten i ett meddelande, inte bara dess rubrik.
- RFC 5229 – Variabler; tillåter skriptet att spara och hämta värden i variabler.
- RFC 5230 – Semester; anger en åtgärd för att skicka ett svar som informerar avsändaren om att mottagaren kan vara borta.
- RFC 5231 – Relationstester; definierar numeriska tester, så att ett skript kan testa ett fält för ett numeriskt värde, och kan testa mot antalet förekomster av ett fält.
- RFC 5232 – IMAP4flaggor; tillåter ett skript att testa och ställa in ett meddelandes IMAP-flaggor .
- RFC 5233 – Subadress; tillåter ett skript att testa underadresser i formen "användare+detalj@domän.exempel".
- RFC 5235 – Spamtest och Virustest; tillåter ett skript att samverka med implementeringsberoende meddelandefiltrering.
- RFC 5260 – Datum- och indextillägg.
- RFC 5293 – Editheader; tillåter ett skript att lägga till och ta bort meddelandehuvudfält .
- RFC 5429 – Avvisa; tillåter att meddelanden avvisas på antingen LMTP / SMTP- nivå eller med ett MDN eller DSN .
- RFC 5435 – Meddelanden; tillåter ett skript att utlösa externa meddelanden om e-post .
- RFC 5436 – E-postmeddelanden; anger meddelanden via e-post.
- RFC 5437 – XMPP-meddelanden; anger meddelanden via XMPP .
- RFC 5490 – Kontroll; Postlådestatus och åtkomst till postlådemetadata.
- RFC 5703 – MIME Part Tests, Iteration, Extraction, Replacement and Enclosure
- RFC 5804 - Ett protokoll för fjärrhantering av siktskript
Ett antal andra tillägg håller fortfarande på att utvecklas av Sieve-arbetsgruppen. [ citat behövs ]
Exempel
Detta är ett exempel på siktskript:
# Sieve filter # Deklarera de tillägg som används av detta skript. # require [ "fileinto" , "reject" ]; # Meddelanden som är större än 100K kommer att avvisas med ett felmeddelande # if size :over 100K { reject "Jag accepterar inte e-post som är större än 100kb. Ladda upp större filer till en server och skicka en länk till mig. Tack ." ; } # E-postmeddelanden från en e-postlista kommer att läggas i mappen "mailinglist" # elsif address :is [ "From" , "To" ] "[email protected]" { fileinto "INBOX.mailinglist" ; } # Skräppostregel: Meddelandet innehåller inte min adress i rubriken Till, CC eller BCC #, eller ämnet är något med "pengar" eller "Viagra". # elsif anyof ( inte adress :all :contains [ "To" , "Cc" , "Bcc" ] "[email protected]" , header :matches "Ämne" [ "*pengar*" , "*Viagra*" ] ) { fileinto "INBOX.spam" ; } # Behåll resten. # Detta är inte nödvändigt eftersom det finns en "implicit keep"-regel # else { keep ; }