X-Git-Url: https://git.exim.org/users/jgh/exim.git/blobdiff_plain/1c59d63bc3e53fc16671151a92606d305ba5499e..47db112512e23853b60b6ecea208056818e10907:/doc/doc-txt/README.SIEVE diff --git a/doc/doc-txt/README.SIEVE b/doc/doc-txt/README.SIEVE index 1c8a0ebc9..621ccf128 100644 --- a/doc/doc-txt/README.SIEVE +++ b/doc/doc-txt/README.SIEVE @@ -1,4 +1,4 @@ -$Cambridge: exim/doc/doc-txt/README.SIEVE,v 1.7 2005/08/30 10:55:52 ph10 Exp $ +$Cambridge: exim/doc/doc-txt/README.SIEVE,v 1.11 2007/03/21 15:15:12 ph10 Exp $ Notes on the Sieve implementation for Exim @@ -20,11 +20,13 @@ then there is no way around it. Exim Implementation -The Exim Sieve implementation offers the core as defined by draft -3028bis-4 (next version of RFC 3028 that fixes specification mistakes), -the "envelope" (3028bis), the "fileinto" (3028bis), the "copy" (RFC 3894) -and the "vacation" (draft-ietf-sieve-vacation-02.txt) extension, the -"i;ascii-numeric" comparator (RFC 2244). +The Exim Sieve implementation offers the core as defined by +draft-ietf-sieve-3028bis-10.txt (next version of RFC 3028 that +fixes specification mistakes), the "envelope" test (3028bis), the +"fileinto" action (3028bis), the "copy" parameter (RFC 3894), the +"vacation" action (draft-ietf-sieve-vacation-06), the "notify" action +(draft-ietf-sieve-notify-06.), the "i;ascii-numeric" comparator (RFC 2244) +and the subaddress parameter (draft-ietf-sieve-rfc3598bis-05). The Sieve filter is integrated in Exim and works very similar to the Exim filter: Sieve scripts are recognized by the first line containing @@ -120,6 +122,9 @@ Sieve script errors currently cause that messages are silently filed into This may be implemented in future by adding a header line to mails that are filed into "inbox" due to an error in the filter. +The automatic replies generated by "vacation" do not contain an updated +"references" header field. + Semantics Of Keep @@ -129,7 +134,7 @@ implicit keep flag; there is no command to set it once it has been reset. -Semantics of Fileinto +Semantics Of Fileinto RFC 3028 does not specify if "fileinto" tries to create a mail folder, in case it does not exist. This implementation allows to configure @@ -138,7 +143,35 @@ that aspect using the appendfile transport options "create_directory", the Exim specification for details. -Sieve Syntax and Semantics +Allof And Anyof Test + +RFC 3028 does not specify if these tests use shortcut/lazy evaluation. +Exim uses shortcut evaluation. + + +Action Reordering + +RFC 3028 does not specify if actions may be executed out of order. +Exim may execute them out of order, e.g. messages may be filed to +folders or forwarded in a different order than specified, because +those actions only setup delivery, but do not execute it themselves. + + +Wildcard Matching + +RFC 3028 is not exactly clear if comparators act on unicode characters +or on octets containing their UTF-8 representation. As it turns out, +many implementations go the second way. This does not make a difference +but for wildcard matching and octet-wise comparison. Working on unicode +means a dot matches a character. Working on UTF-8 means the dot matches +a single octet of a multi-octet sequence. For octet-wise comparisons, +working on UTF-8 means arbitrary byte sequences in headers can not be +matches, as they are rarely correct UTF-8 sequences and can thus not be +expressed as string literal. This implementation works on unicode, but +this may be changed in case RFC3028bis specifies this issue safe and sound. + + +Sieve Syntax And Semantics RFC 3028 confuses syntax and semantics sometimes. It uses a generic grammar as syntax for commands and tests and performs many checks during @@ -329,3 +362,24 @@ Global Reply Address Blacklist The draft requires that each implementation offers a global black list of addresses that will never be replied to. Exim offers this as option "never_mail" in the autoreply transport. + + +The enotify extension + +The extension "enotify" is specified using the following grammar +extension. + + notify-command = "notify" { notify-options } + notify-options = [":from" string] + [":importance" <"1" / "2" / "3">] + [":options" 1*(string-list / number)] + [":message" string] + + command =/ notify-command + + valid_notify_method = "valid_notify_method" + + + test =/ valid_notify_method + +Only the mailto URI scheme is implemented.