Current: * Implement variables extension Implemented: -> Core variable substitution works -> Accept namespaces (parse, no real support; proper error messages) -> Support match variables -> Implement variables support for include extension Current: -> Provide support for extensions that (partly) depend on variables support. -> Implement variables support for imapflags extension Next (in order of descending priority/precedence): * Vacation extension accepts duplicate tags (not allowed) * Finish implementing all extensions supported by cmusieve, except notify. * Limit the maximum number of errors. * Verify outgoing mail addresses * Make this implementation conform section 2.7.2 of RFC3028 (Comparisons Across Character Sets). * Get rid of all <stdio.h> printf()s in the library; use trace macro instead * Use lib/llist.h for the AST implementation. * Make the sieve plugins true plugins and add a SIEVE_PLUGINS config item to the lda-sieve plugin. * Revise extension support for comparators, match-types, address-parts and side-effects. * Full security review. Enforce limits on number of created objects, script size, execution time, etc... * Full standards compliance review for the engine and all fully implemented sieve extensions. * Code cleanup * Make sure cmusieve can be replaced seamlessly with the new plugin. * Make simple test suite for the base functionality * ## MAKE A FIRST RELEASE ## * Implement dropping errors in the user's mailbox as a mail message. * Add normalize() method to comparators to normalize the string before mathing (for efficiency). * Implement comparator-i;unicode-casemap * Automate script tests; i.e. build a test suite. * Use lib/str-find.h for :contains and :matches match types * Resolve code duplication introduced for handling address-parts and match-types in different command implementations. * Resolve code duplication amongst comparator, address-part and match-type support as much as possible. * Add development documentation, i.e. comment on library functions and document the binary and byte-code format. * Make the engine and its extensions much more configurable. Possibly this can be merged with Dovecot's new master config implementation. * Implement notify extension with sole support for mailto mechanism. * Implement editheader extension * Implement mimeloop extension * Give the byte code format some more thought, it is currently quite rough and to the point. * Try to implement proposed notify mechanisms other than mailto. Currently: xmpp and sip * Implement namespace support for variables extension (possibly needed by test suite; in that case priority is much higher)