diff --git a/README b/README index 3a4f8214a896adc559c7cac0ef4e955cda7c3b9d..3806593b2dff0712007a313ae0426f85538d965b 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 84160ad42910769471c89b6bc45ee9df8892dbad..3a7fe33459e7893fc7b993e8a2d4014da08275e2 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 97f8fe4726d441b92d6adb1a7bc75ade0bdf326a..1b095776e597750121c3d4e76c2ed66b192bf71d 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 9a1b453ca6f2374549942e2d8a668d17fcf897ee..810889633afdfa4a316eb320e94b0bb5a275fbe1 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 7251ebffeccfddf99a78efaeee64ced70c07e45a..a872a3f450cedd38c978b7b07e6eec7361b3fb1d 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 32c60217be9681eb8b17b4d2b83eb0d095650265..1df905afebf837967c623e37b3fe52bdfd352a28 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 5e8ea1df53b74905b3bd963ce084872ab09c1ceb..5196382b101c571a1d8c4a7b49ba2400371f1a51 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 510f6344127301b685cfab2a76005b1e895fd8be..534272dc1a7c548b52ee80faec6a14f14a970042 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 164714a663886f9fc4f5b2afd222f6b4f4c3eee2..4792868c17ae942e0c28a1ee5aa3d5132047b233 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 263e54204973c41cd0501f44aee128b3034cf708..c5a5b6e00a8acf60cb09e190f028b00acda87961 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 a3befcb598fef3e23cb2ee430041ed94341ecffa..36de5c94ce13a3ddcaa95a14f3b778b3fac0ccd7 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 2a72097332e0ea0ff060039aa9f3e0900dc706d8..f8f187ea81223c9d019c968f3f0b4df6d6a1a195 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 c4a60f20b8862c0ca03aadef0072a9e0f54f9f4c..350c5501af35d7ecadf58a9cd2943c28210b3a4e 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 d0f050d8a671f4e92e821dfe836f60ffc496bff2..4ca12b6c0174f90bbac7beef6d6a1f5bddd51029 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 3f5517b44a20ad00f12b0a9f60c6a1646ff2f7a9..e556a66672c89961a86047f1e1e54668483cc5d6 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 9cf718e45db3a6e2c7879825bcc4de4036b2087f..25dd0b7f60a25ead0c39dcf8a78b75bb4f1b91c4 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 1a91a7356aadc8b7732e721e6c480c0bb0f27073..5010fd96a3bdc368c22fab7b9060dcce53f86a98 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 28d4b552c1b6afb77d1ae5717be1a2eecf76703d..4d06c37ae50ef8a4825d093ff64cb6a2fc915c01 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 edaa1f6cfacf1e9d6aeb7b3af5f672f1fce942f1..399b568add20c1ce99fd1571dbb2e121357ace09 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 870d1d81085944387cd13c04594b2352a0821669..b358d2e3006da1c7ea4d4073baf4d2e3ba866d38 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 307320e2ddcacc5b0d3d6f0d460751dd5805c160..a4a6926a177c117e8c0ff9aab0048a88a385df04 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 07c37e819fc25d2952915d782ac2d219fb282b67..67097bd7934d64691586c9bd9bc62954f26fdd03 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 25cf909c3c47cdd08831f13f0ec7b5504fc001ad..3797900471e7035a0e38fa1be6c0fb31dcfe2ee2 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>