Patch from the Sieve maintainer.
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Wed, 21 Mar 2007 15:15:12 +0000 (15:15 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Wed, 21 Mar 2007 15:15:12 +0000 (15:15 +0000)
doc/doc-txt/ChangeLog
doc/doc-txt/README.SIEVE
src/src/sieve.c

index a34126472249605bb4e179f4eb6794165d53dd0b..b9f9967e63563705fc927044c6d11b60c1ecccf3 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.497 2007/03/21 15:10:39 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.498 2007/03/21 15:15:12 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -190,6 +190,8 @@ PH/41 (Following a suggestion from Tony Finch) If all the RCPT commands in a
       intended to be helpful for MUAs that show only the final error to their
       users.
 
+PH/42 Another patch from the Sieve maintainer.
+
 
 Exim version 4.66
 -----------------
index 42c9cbf5d654379cab3abe64e036e5fed29bdd4f..621ccf128664d1e76f9131ec67238d7fed03fa83 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/README.SIEVE,v 1.10 2006/04/25 10:44:57 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
 
@@ -21,11 +21,12 @@ then there is no way around it.
 Exim Implementation
 
 The Exim Sieve implementation offers the core as defined by
-draft-ietf-sieve-3028bis-05.txt (next version of RFC 3028 that fixes
-specification mistakes), the "envelope" test (3028bis), the "fileinto"
-action (3028bis), the "copy" action (RFC 3894), the "vacation" action
-(draft-ietf-sieve-vacation-05.txt) and the "i;ascii-numeric" comparator
-extension (RFC 2244).
+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
@@ -361,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.
index a1a7b8883133ca115689780a9d295b2e7bed274b..9dd04eee7bc969ba0b90272f5a98b20cfcaa95f7 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/sieve.c,v 1.25 2007/03/13 10:05:17 ph10 Exp $ */
+/* $Cambridge: exim/src/src/sieve.c,v 1.26 2007/03/21 15:15:12 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -28,6 +28,9 @@
 /* Undefine it for UNIX-style \n end-of-line terminators (default). */
 #undef RFC_EOL
 
+/* Define this for development of the Sieve extension "encoded-character". */
+#undef ENCODED_CHARACTER
+
 /* Define this for development of the Sieve extension "envelope-auth". */
 #undef ENVELOPE_AUTH
 
@@ -58,6 +61,9 @@ struct Sieve
   int keep;
   int require_envelope;
   int require_fileinto;
+#ifdef ENCODED_CHARACTER
+  int require_encoded_character;
+#endif
 #ifdef ENVELOPE_AUTH
   int require_envelope_auth;
 #endif
@@ -126,6 +132,10 @@ static uschar str_fileinto_c[]="fileinto";
 static const struct String str_fileinto={ str_fileinto_c, 8 };
 static uschar str_envelope_c[]="envelope";
 static const struct String str_envelope={ str_envelope_c, 8 };
+#ifdef ENCODED_CHARACTER
+static uschar str_encoded_character_c[]="encoded-character";
+static const struct String str_encoded_character={ str_encoded_character_c, 17 };
+#endif
 #ifdef ENVELOPE_AUTH
 static uschar str_envelope_auth_c[]="envelope-auth";
 static const struct String str_envelope_auth={ str_envelope_auth_c, 13 };
@@ -3058,6 +3068,9 @@ filter->line=1;
 filter->keep=1;
 filter->require_envelope=0;
 filter->require_fileinto=0;
+#ifdef ENCODED_CHARACTER
+filter->require_encoded_character=0;
+#endif
 #ifdef ENVELOPE_AUTH
 filter->require_envelope_auth=0;
 #endif
@@ -3130,6 +3143,9 @@ while (parse_identifier(filter,CUS "require"))
     {
     if (eq_octet(check,&str_envelope,0)) filter->require_envelope=1;
     else if (eq_octet(check,&str_fileinto,0)) filter->require_fileinto=1;
+#ifdef ENCODED_CHARACTER
+    else if (eq_octet(check,&str_encoded_character,0)) filter->require_encoded_character=1;
+#endif
 #ifdef ENVELOPE_AUTH
     else if (eq_octet(check,&str_envelope_auth,0)) filter->require_envelope_auth=1;
 #endif