summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/doc-txt/ChangeLog4
-rw-r--r--doc/doc-txt/README.SIEVE34
-rw-r--r--src/src/sieve.c18
3 files changed, 48 insertions, 8 deletions
diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index a34126472..b9f9967e6 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -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
-----------------
diff --git a/doc/doc-txt/README.SIEVE b/doc/doc-txt/README.SIEVE
index 42c9cbf5d..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.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.
diff --git a/src/src/sieve.c b/src/src/sieve.c
index a1a7b8883..9dd04eee7 100644
--- a/src/src/sieve.c
+++ b/src/src/sieve.c
@@ -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