Next (in order of descending priority/precedence): * Review sieve-address parsing implementation for past-end checks * Improve handling of old/corrupt binaries. * Move to 1.2 and start using mailbox_keyword_is_valid() and new const str. * Resolve problems in variables extension: scope uses hash the wrong way and extension ids are emitted directly. * Full standards compliance review for the engine and all fully implemented sieve extensions. Issues discovered so far: - Address test MUST restrict itself to headers that contain addresses. - Implementations SHOULD consider unknown envelope parts an error. - The null reverse-path is matched against as the empty string, regardless of the ADDRESS-PART argument specified. - Header test does not strip trailing whitespace * Code cleanup * Make sure cmusieve can be replaced seamlessly with the new plugin. * Full security review. Enforce limits on number of created objects, script size, execution time, etc... * Make simple test suite for the base functionality * ## MAKE A FIRST RELEASE ## * Add normalize() method to comparators to normalize the string before matching (for efficiency). * Verify outgoing mail addresses at runtime when necessary (e.g. after variables substitution) * Warn about the use of syntactically invalid header names. * Implement dropping errors in the user's mailbox as a mail message. * Provide a solution for mail_get_headers_utf8 reparsing the whole message each time it is called (header and address test; Timo might provide solution from within Dovecot) * Build a sieve tool to filter an entire existing mailbox through a sieve script. * Build a server with test mail accounts that processes lots and lots of mail (e.g. spam, mailing lists etc.) * Make this implementation conform section 2.7.2 of RFC3028 (Comparisons Across Character Sets). * Implement comparator-i;unicode-casemap * Implement environment extension * Implement notify extension with sole support for mailto mechanism. * Implement date and index extensions * Optimize code containing true/false tests to omit explicit JMP opcodes (i.e. optimize the test away and any code that negatively depends on it) * 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. * 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 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)