Patch from the Sieve maintainer.
[exim.git] / doc / doc-txt / README.SIEVE
index 1c8a0ebc936559130164026a338436f89cf45c98..621ccf128664d1e76f9131ec67238d7fed03fa83 100644 (file)
@@ -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 } <method: string>
+  notify-options =  [":from" string]
+                    [":importance" <"1" / "2" / "3">]
+                    [":options" 1*(string-list / number)]
+                    [":message" string]
+
+  command          =/ notify-command
+
+  valid_notify_method = "valid_notify_method"
+                        <notification-uris: string-list>
+
+  test             =/ valid_notify_method
+
+Only the mailto URI scheme is implemented.