From a83e91bcd0540467343f47e80689df548bfc0226 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan@rename-it.nl> Date: Thu, 29 Jul 2010 11:53:26 +0200 Subject: [PATCH] Updated extension status information. --- README | 49 ++++++++++--------- src/lib-sieve/ext-encoded-character.c | 8 +-- src/lib-sieve/ext-envelope.c | 6 +-- src/lib-sieve/ext-fileinto.c | 8 +-- src/lib-sieve/ext-reject.c | 8 +-- src/lib-sieve/plugins/body/ext-body.c | 9 ++-- .../ext-cmp-i-ascii-numeric.c | 8 +-- src/lib-sieve/plugins/copy/ext-copy.c | 10 ++-- src/lib-sieve/plugins/date/ext-date.c | 4 +- src/lib-sieve/plugins/enotify/ext-enotify.c | 4 +- .../plugins/environment/ext-environment.c | 10 ++-- .../plugins/imap4flags/ext-imap4flags.c | 6 +-- .../plugins/imap4flags/ext-imapflags.c | 6 +-- src/lib-sieve/plugins/include/ext-include.c | 11 +++-- src/lib-sieve/plugins/mailbox/ext-mailbox.c | 6 +-- src/lib-sieve/plugins/notify/ext-notify.c | 6 +-- src/lib-sieve/plugins/regex/ext-regex.c | 20 ++++---- .../plugins/relational/ext-relational.c | 8 +-- .../plugins/subaddress/ext-subaddress.c | 12 ++--- src/lib-sieve/plugins/vacation/ext-vacation.c | 9 ++-- .../plugins/variables/ext-variables.c | 12 ++--- src/sieve-tools/debug/ext-debug.c | 10 ++-- src/testsuite/ext-testsuite.c | 40 +++++++-------- 23 files changed, 136 insertions(+), 134 deletions(-) diff --git a/README b/README index 3a4f8214a..3806593b2 100644 --- a/README +++ b/README @@ -103,25 +103,30 @@ following list outlines the implementation status of each supported extension: The following Sieve language extensions are also supported: - copy (RFC 3894): fully supported + copy (RFC 3894): fully supported. body (RFC 5173): almost fully supported, but the text body-transform - implementation is simple and some issues make it still not completely - RFC compliant. - environment (RFC 5183): basic support is provided (v0.1.5+) - variables (RFC 5229): fully supported - vacation (RFC 5230): fully supported - relational (RFC 5231): fully supported - imap4flags (RFC 5232): fully supported - subaddress (RFC 5233): fully supported, but with limited configurability - date (RFC 5260; page 3): fully supported (v0.1.12+) - reject (RFC 5429; page 6): fully supported - enotify (RFC 5435): fully supported (v0.1.3+), but only the mailto - notification mechanism is available - mailbox (RFC 5490; page 2): fully supported (v0.1.10+), but - ACL permissions are not verified for mailboxexists - include (draft): fully supported, but the interaction with - ManageSieve is not according to specification. - regex (draft): almost fully supported, but UTF-8 is not supported. + implementation is simple and some issues make it still not completely RFC + compliant. + environment (RFC 5183): basic support is provided (v0.1.5+). + variables (RFC 5229): fully supported. + vacation (RFC 5230): fully supported. + relational (RFC 5231): fully supported. + imap4flags (RFC 5232): fully supported. + subaddress (RFC 5233): fully supported, but with limited configurability. + spamtest and virustest (RFC 5235): fully supported (v0.1.16+), but currently + considered experimental. + date (RFC 5260; page 3): fully supported (v0.1.12+). + reject (RFC 5429; page 6): fully supported. + enotify (RFC 5435): fully supported (v0.1.3+). Currently, only the mailto + notification mechanism (RFC 5436) is available. The xmpp notification + mechanism (RFC 5437) is under development and will become available as a + plugin. + mailbox (RFC 5490; page 2): fully supported (v0.1.10+), but ACL permissions + are not verified for mailboxexists. + include (draft v05): almost fully supported, but interaction with ManageSieve + is not in accordance with specification. + regex (draft v08; not latest ietf version): almost fully supported, but + UTF-8 is not supported. The following deprecated extensions are supported for backwards compatibility: @@ -134,15 +139,15 @@ following list outlines the implementation status of each supported extension: The following extensions are under development: ereject (RFC 5429; page 4): implemented, but currently equal to reject - spamtest and virustest (RFC 5235): implemented, but needs thorough testing Many more extensions to the language exist. Not all of these extensions are useful for Dovecot in particular, but many of them are. Currently, the author has taken notice of the following extensions: - index (RFC 5260; page 7): planned - editheader (RFC 5293): planned - foreverypart, mime, replace, enclose, and extracttext (RFC 5703): planned + vacation-seconds (draft): planned. + index (RFC 5260; page 7): planned. + editheader (RFC 5293): planned. + foreverypart, mime, replace, enclose, and extracttext (RFC 5703): planned. These extensions will be added as soon as the necessary infrastructure is available. diff --git a/src/lib-sieve/ext-encoded-character.c b/src/lib-sieve/ext-encoded-character.c index 84160ad42..3a7fe3345 100644 --- a/src/lib-sieve/ext-encoded-character.c +++ b/src/lib-sieve/ext-encoded-character.c @@ -1,13 +1,13 @@ /* Copyright (c) 2002-2010 Dovecot Sieve authors, see the included COPYING file */ -/* Extension encoded-character +/* Extension encoded-character * --------------------------- * * Authors: Stephan Bosch - * Specification: RFC5228 - * Implementation: full - * Status: experimental, largely untested + * Specification: RFC 5228 + * Implementation: full + * Status: testing * */ diff --git a/src/lib-sieve/ext-envelope.c b/src/lib-sieve/ext-envelope.c index 97f8fe472..1b095776e 100644 --- a/src/lib-sieve/ext-envelope.c +++ b/src/lib-sieve/ext-envelope.c @@ -1,13 +1,13 @@ /* Copyright (c) 2002-2010 Dovecot Sieve authors, see the included COPYING file */ -/* Extension envelope +/* Extension envelope * ------------------ * * Authors: Stephan Bosch - * Specification: RFC5228 + * Specification: RFC 5228 * Implementation: full - * Status: experimental, largely untested + * Status: testing * */ diff --git a/src/lib-sieve/ext-fileinto.c b/src/lib-sieve/ext-fileinto.c index 9a1b453ca..810889633 100644 --- a/src/lib-sieve/ext-fileinto.c +++ b/src/lib-sieve/ext-fileinto.c @@ -1,13 +1,13 @@ /* Copyright (c) 2002-2010 Dovecot Sieve authors, see the included COPYING file */ -/* Extension fileinto +/* Extension fileinto * ------------------ * - * Authors: Stephan Bosch - * Specification: RFC5228 + * Authors: Stephan Bosch + * Specification: RFC 5228 * Implementation: full - * Status: experimental, largely untested + * Status: testing * */ diff --git a/src/lib-sieve/ext-reject.c b/src/lib-sieve/ext-reject.c index 7251ebffe..a872a3f45 100644 --- a/src/lib-sieve/ext-reject.c +++ b/src/lib-sieve/ext-reject.c @@ -1,13 +1,13 @@ /* Copyright (c) 2002-2010 Dovecot Sieve authors, see the included COPYING file */ -/* Extension reject +/* Extension reject * ---------------- * * Authors: Stephan Bosch - * Specification: RFC5429 - * Implementation: full - * Status: experimental + * Specification: RFC 5429 + * Implementation: full + * Status: testing * */ diff --git a/src/lib-sieve/plugins/body/ext-body.c b/src/lib-sieve/plugins/body/ext-body.c index 32c60217b..1df905afe 100644 --- a/src/lib-sieve/plugins/body/ext-body.c +++ b/src/lib-sieve/plugins/body/ext-body.c @@ -1,13 +1,14 @@ /* Copyright (c) 2002-2010 Dovecot Sieve authors, see the included COPYING file */ -/* Extension body +/* Extension body * ------------------ * - * Authors: Stephan Bosch, original CMUSieve implementation by Timo Sirainen + * Authors: Stephan Bosch + * Original CMUSieve implementation by Timo Sirainen * Specification: RFC 5173 - * Implementation: full, but text body-transform implementation is simple - * Status: experimental, largely untested + * Implementation: almost full, but text body-transform implementation is simple + * Status: testing * */ diff --git a/src/lib-sieve/plugins/comparator-i-ascii-numeric/ext-cmp-i-ascii-numeric.c b/src/lib-sieve/plugins/comparator-i-ascii-numeric/ext-cmp-i-ascii-numeric.c index 5e8ea1df5..5196382b1 100644 --- a/src/lib-sieve/plugins/comparator-i-ascii-numeric/ext-cmp-i-ascii-numeric.c +++ b/src/lib-sieve/plugins/comparator-i-ascii-numeric/ext-cmp-i-ascii-numeric.c @@ -1,5 +1,5 @@ /* Copyright (c) 2002-2010 Dovecot Sieve authors, see the included COPYING file - */ + */ /* Extension comparator-i;ascii-numeric * ------------------------------------ @@ -7,10 +7,10 @@ * Author: Stephan Bosch * Specification: RFC 2244 * Implementation: full - * Status: experimental, largely untested - * + * Status: testing + * */ - + #include "sieve-common.h" #include "sieve-code.h" diff --git a/src/lib-sieve/plugins/copy/ext-copy.c b/src/lib-sieve/plugins/copy/ext-copy.c index 510f63441..534272dc1 100644 --- a/src/lib-sieve/plugins/copy/ext-copy.c +++ b/src/lib-sieve/plugins/copy/ext-copy.c @@ -2,13 +2,13 @@ */ /* Extension copy - * ------------------ + * -------------- * * Authors: Stephan Bosch * Specification: RFC 3894 * Implementation: full - * Status: experimental, largely untested - * + * Status: testing + * */ #include <stdio.h> @@ -24,8 +24,8 @@ #include "sieve-interpreter.h" #include "sieve-result.h" -/* - * Forward declarations +/* + * Forward declarations */ static const struct sieve_argument_def copy_tag; diff --git a/src/lib-sieve/plugins/date/ext-date.c b/src/lib-sieve/plugins/date/ext-date.c index 164714a66..4792868c1 100644 --- a/src/lib-sieve/plugins/date/ext-date.c +++ b/src/lib-sieve/plugins/date/ext-date.c @@ -7,10 +7,10 @@ * Authors: Stephan Bosch * Specification: RFC 5260 * Implementation: full - * Status: experimental + * Status: testing * */ - + #include "lib.h" #include "array.h" diff --git a/src/lib-sieve/plugins/enotify/ext-enotify.c b/src/lib-sieve/plugins/enotify/ext-enotify.c index 263e54204..c5a5b6e00 100644 --- a/src/lib-sieve/plugins/enotify/ext-enotify.c +++ b/src/lib-sieve/plugins/enotify/ext-enotify.c @@ -8,9 +8,9 @@ * Specification: RFC 5435 * Implementation: full * Status: testing - * + * */ - + #include <stdio.h> #include "sieve-common.h" diff --git a/src/lib-sieve/plugins/environment/ext-environment.c b/src/lib-sieve/plugins/environment/ext-environment.c index a3befcb59..36de5c94c 100644 --- a/src/lib-sieve/plugins/environment/ext-environment.c +++ b/src/lib-sieve/plugins/environment/ext-environment.c @@ -1,16 +1,16 @@ /* Copyright (c) 2002-2010 Dovecot Sieve authors, see the included COPYING file */ -/* Extension variables +/* Extension variables * ------------------- * * Authors: Stephan Bosch * Specification: RFC 5183 - * Implementation: full + * Implementation: basic * Status: experimental, not thoroughly tested * */ - + #include "lib.h" #include "str.h" #include "unichar.h" @@ -24,8 +24,8 @@ #include "ext-environment-common.h" -/* - * Extension +/* + * Extension */ static bool ext_environment_validator_load diff --git a/src/lib-sieve/plugins/imap4flags/ext-imap4flags.c b/src/lib-sieve/plugins/imap4flags/ext-imap4flags.c index 2a7209733..f8f187ea8 100644 --- a/src/lib-sieve/plugins/imap4flags/ext-imap4flags.c +++ b/src/lib-sieve/plugins/imap4flags/ext-imap4flags.c @@ -6,11 +6,11 @@ * * Authors: Stephan Bosch * Specification: RFC 5232 - * Implementation: full - * Status: experimental, roughly tested + * Implementation: full + * Status: testing * */ - + #include "lib.h" #include "mempool.h" #include "str.h" diff --git a/src/lib-sieve/plugins/imap4flags/ext-imapflags.c b/src/lib-sieve/plugins/imap4flags/ext-imapflags.c index c4a60f20b..350c5501a 100644 --- a/src/lib-sieve/plugins/imap4flags/ext-imapflags.c +++ b/src/lib-sieve/plugins/imap4flags/ext-imapflags.c @@ -6,11 +6,11 @@ * * Authors: Stephan Bosch * Specification: draft-melnikov-sieve-imapflags-03.txt - * Implementation: deprecated; provided for backwards compatibility - * Status: deprecated + * Implementation: full, but deprecated; provided for backwards compatibility + * Status: testing * */ - + #include "lib.h" #include "mempool.h" #include "str.h" diff --git a/src/lib-sieve/plugins/include/ext-include.c b/src/lib-sieve/plugins/include/ext-include.c index d0f050d8a..4ca12b6c0 100644 --- a/src/lib-sieve/plugins/include/ext-include.c +++ b/src/lib-sieve/plugins/include/ext-include.c @@ -6,16 +6,17 @@ * * Authors: Stephan Bosch * Specification: draft-ietf-sieve-include-01 - * Implementation: almost full; global namespace is missing. - * Status: experimental - * + * Implementation: mostly full, but required ManageSieve behavior is not + * implemented + * Status: testing + * */ - + /* FIXME: Current include implementation does not allow for parts of the script * to be located in external binaries; all included scripts are recompiled and * the resulting byte code is imported into the main binary in separate blocks. */ - + #include "lib.h" #include "sieve-common.h" diff --git a/src/lib-sieve/plugins/mailbox/ext-mailbox.c b/src/lib-sieve/plugins/mailbox/ext-mailbox.c index 3f5517b44..e556a6667 100644 --- a/src/lib-sieve/plugins/mailbox/ext-mailbox.c +++ b/src/lib-sieve/plugins/mailbox/ext-mailbox.c @@ -7,8 +7,8 @@ * Authors: Stephan Bosch * Specification: RFC 5490 * Implementation: almost full; acl support is missing for mailboxexists - * Status: experimental, largely untested - * + * Status: testing + * */ #include <stdio.h> @@ -26,7 +26,7 @@ #include "ext-mailbox-common.h" -/* +/* * Extension */ diff --git a/src/lib-sieve/plugins/notify/ext-notify.c b/src/lib-sieve/plugins/notify/ext-notify.c index 9cf718e45..25dd0b7f6 100644 --- a/src/lib-sieve/plugins/notify/ext-notify.c +++ b/src/lib-sieve/plugins/notify/ext-notify.c @@ -6,9 +6,9 @@ * * Authors: Stephan Bosch * Specification: draft-ietf-sieve-notify-00.txt - * Implementation: fully backwards compatible - * Status: testing (deprecated) - * + * Implementation: full, but deprecated; provided for backwards compatibility + * Status: testing + * */ #include <stdio.h> diff --git a/src/lib-sieve/plugins/regex/ext-regex.c b/src/lib-sieve/plugins/regex/ext-regex.c index 1a91a7356..5010fd96a 100644 --- a/src/lib-sieve/plugins/regex/ext-regex.c +++ b/src/lib-sieve/plugins/regex/ext-regex.c @@ -1,20 +1,22 @@ /* Copyright (c) 2002-2010 Dovecot Sieve authors, see the included COPYING file */ -/* Extension regex +/* Extension regex * --------------- * * Authors: Stephan Bosch - * Specification: draft-murchison-sieve-regex-07 - * Implementation: full, but suboptimal - * Status: experimental, largely untested + * Specification: draft-murchison-sieve-regex-08 (not latest) + * Implementation: full + * Status: testing * - * FIXME: Regular expressions are compiled during compilation and - * again during interpretation. This is suboptimal and should be - * changed. This requires dumping the compiled regex to the binary. + */ + +/* FIXME: Regular expressions are compiled during compilation and + * again during interpretation. This is suboptimal and should be + * changed. This requires dumping the compiled regex to the binary. * Most likely, this will only be possible when we implement regular - * expressions ourselves. - * + * expressions ourselves. + * */ #include "lib.h" diff --git a/src/lib-sieve/plugins/relational/ext-relational.c b/src/lib-sieve/plugins/relational/ext-relational.c index 28d4b552c..4d06c37ae 100644 --- a/src/lib-sieve/plugins/relational/ext-relational.c +++ b/src/lib-sieve/plugins/relational/ext-relational.c @@ -1,14 +1,14 @@ /* Copyright (c) 2002-2010 Dovecot Sieve authors, see the included COPYING file */ -/* Extension relational +/* Extension relational * -------------------- * * Author: Stephan Bosch * Specification: RFC 3431 * Implementation: full - * Status: experimental, largely untested - * + * Status: testing + * */ #include "lib.h" @@ -28,7 +28,7 @@ #include "ext-relational-common.h" -/* +/* * Extension */ diff --git a/src/lib-sieve/plugins/subaddress/ext-subaddress.c b/src/lib-sieve/plugins/subaddress/ext-subaddress.c index edaa1f6cf..399b568ad 100644 --- a/src/lib-sieve/plugins/subaddress/ext-subaddress.c +++ b/src/lib-sieve/plugins/subaddress/ext-subaddress.c @@ -1,16 +1,16 @@ /* Copyright (c) 2002-2010 Dovecot Sieve authors, see the included COPYING file */ -/* Extension subaddress +/* Extension subaddress * -------------------- * * Author: Stephan Bosch * Specification: RFC 3598 - * Implementation: full, but not fully configurable - * Status: experimental + * Implementation: full + * Status: testing * */ - + #include "sieve-common.h" #include "sieve-settings.h" @@ -26,8 +26,8 @@ #include <stdlib.h> #include <string.h> -/* - * Configuration +/* + * Configuration */ #define SUBADDRESS_DEFAULT_DELIM "+" diff --git a/src/lib-sieve/plugins/vacation/ext-vacation.c b/src/lib-sieve/plugins/vacation/ext-vacation.c index 870d1d810..b358d2e30 100644 --- a/src/lib-sieve/plugins/vacation/ext-vacation.c +++ b/src/lib-sieve/plugins/vacation/ext-vacation.c @@ -6,10 +6,9 @@ * * Authors: Stephan Bosch <stephan@rename-it.nl> * Specification: RFC 5230 - * Implementation: almost complete; the required sopport for Refences header - * is missing. - * Status: experimental, largely untested - * + * Implementation: full + * Status: testing + * */ #include "lib.h" @@ -25,7 +24,7 @@ #include "ext-vacation-common.h" -/* +/* * Extension */ diff --git a/src/lib-sieve/plugins/variables/ext-variables.c b/src/lib-sieve/plugins/variables/ext-variables.c index 307320e2d..a4a6926a1 100644 --- a/src/lib-sieve/plugins/variables/ext-variables.c +++ b/src/lib-sieve/plugins/variables/ext-variables.c @@ -1,21 +1,15 @@ /* Copyright (c) 2002-2010 Dovecot Sieve authors, see the included COPYING file */ -/* Extension variables +/* Extension variables * ------------------- * * Authors: Stephan Bosch * Specification: RFC 5229 - * Implementation: mostly full; no support for future namespaces - * Status: experimental, not thoroughly tested + * Implementation: full + * Status: testing * */ - -/* FIXME: This implementation of the variables extension does not support - * namespaces. It recognizes them, but there is currently no support to let - * an extension register a new namespace. Currently no such extension exists - * and therefore this support has a very low implementation priority. - */ #include "lib.h" #include "str.h" diff --git a/src/sieve-tools/debug/ext-debug.c b/src/sieve-tools/debug/ext-debug.c index 07c37e819..67097bd79 100644 --- a/src/sieve-tools/debug/ext-debug.c +++ b/src/sieve-tools/debug/ext-debug.c @@ -1,8 +1,8 @@ /* Copyright (c) 2002-2010 Dovecot Sieve authors, see the included COPYING file */ -/* Extension debug - * ------------------ +/* Extension debug + * --------------- * * Authors: Stephan Bosch * Specification: vendor-defined @@ -10,7 +10,7 @@ * Status: experimental * */ - + #include "lib.h" #include "array.h" @@ -28,8 +28,8 @@ #include "ext-debug-common.h" -/* - * Extension +/* + * Extension */ static bool ext_debug_validator_load diff --git a/src/testsuite/ext-testsuite.c b/src/testsuite/ext-testsuite.c index 25cf909c3..379790047 100644 --- a/src/testsuite/ext-testsuite.c +++ b/src/testsuite/ext-testsuite.c @@ -5,31 +5,31 @@ * ------------------- * * Authors: Stephan Bosch - * Specification: vendor-specific + * Specification: vendor-specific * (FIXME: provide specification for test authors) - * Implementation: very basic - * Status: under development - * Purpose: This custom extension is used to add sieve commands and tests that - * act the Sieve engine and on the test suite itself. This practically - * provides the means to completely control and thereby test the Sieve - * compiler and interpreter. This extension transforms the basic Sieve - * language into something much more powerful and suitable to perform - * complex self-test operations. Of course, this extension is only + * + */ + +/* + * Purpose: This custom extension is used to add sieve commands and tests that + * act the Sieve engine and on the test suite itself. This practically + * provides the means to completely control and thereby test the Sieve + * compiler and interpreter. This extension transforms the basic Sieve + * language into something much more powerful and suitable to perform + * complex self-test operations. Of course, this extension is only * available (as vnd.dovecot.testsuite) when the sieve engine is used * from within the testsuite commandline tool. Test scripts have the * extension .svtest by convention to distinguish them from any normal - * sieve scripts that may reside in the same directory. - * - * WARNING: Although this code can serve as an example on how to write - * extensions to the Sieve interpreter, it is generally _NOT_ to be - * used as a source for ideas on new Sieve extensions. Many of the - * commands and tests that this extension introduces conflict with the - * goal and the implied restrictions of the Sieve language. These - * restrictions were put in place with good reason. Therefore, do - * _NOT_ export functionality provided by this testsuite extension to - * your custom extensions that are to be put to general use. + * sieve scripts that may reside in the same directory. * - * Thank you. + * WARNING: Although this code can serve as an example on how to write + * extensions to the Sieve interpreter, it is generally _NOT_ to be + * used as a source for ideas on new Sieve extensions. Many of the + * commands and tests that this extension introduces conflict with the + * goal and the implied restrictions of the Sieve language. These + * restrictions were put in place with good reason. Therefore, do + * _NOT_ export functionality provided by this testsuite extension to + * your custom extensions that are to be put to general use. */ #include <stdio.h> -- GitLab