Current activities: * Improve debugging support in the sieve-test tool: - Improve trace debugging towards something more intuitively readable. - Give trace debugging multiple levels of verbosity (e.g. to include more messy output like value matching). Next (in order of descending priority/precedence): * ## MAKE A SECOND RELEASE (0.2.x) ## * Finish body extension: - Implement proper :content "multipart" behavior - Implement proper :content "message/rfc822" behavior - Build test cases for decoding MIME encodings to UTF-8 * Unfinished new extensions: - Finish the ereject extension * Build a sieve tool to filter an entire existing mailbox through a Sieve script: - Add commandline options to fully customize execution - Write manual page * Update include extension to latest draft: - Implement required ManageSieve behavior * Vacation extension improvements: - Implement configurable sender exclusion list. - Implement mechanism for implicitly including an account's aliases in the vacation command's :addresses list. * Improve error handling. - Detect permission errors when writing global script binaries and advise the administrator on using sievec to precompile the scripts. - Avoid reporting user-caused errors to the master log. - Implement dropping errors in the user's mailbox as a mail message. * Fix remaining RFC deviations: - Fix issues listed in doc/rfc/RFC-questions.txt based on answers - Allow for the existence of dynamic comparators (i.e. specified by variables). - Allow for :regex matching with variable key. - Detect assignment of too large constant values to variables at compile time. - Verify outgoing mail addresses at runtime when necessary (e.g. after variables substitution) - Improve handling of invalid addresses in headers (requires Dovecot changes) * Add normalize() method to comparators to normalize the string before matching (for efficiency). * Properly implement Sieve internationalization support (utf-8 handling), currently it is not complete: - Make this implementation fully conform section 2.7.2 of RFC5228 (Comparisons Across Character Sets). - Verify validity of utf8 where necessary. - Implement comparator-i;unicode-casemap. * Make testsuite much more exhaustive: - Add support for testing the content of result actions - Test as many error/warning/info conditions as possible. - Review the specification documents and check whether the given conditions are tested at least once. * Fix ManageSieve proxy to recognize response codes from the backend and forward them to the user if appropriate/safe. * Implement proper support for ManageSieve SASL ANONYMOUS login. * Enforce ManageSieve protocol syntax better with some of the commands. Some commands still allow spurious extra arguments. * Test ManageSieve behavior thoroughly: - Test pipelined behavior - Test proxy authentication * Code cleanup: - Make address handling more uniform. - Review all FIXMEs * Build a server with test mail accounts that processes lots and lots of mail (e.g. spam, mailing lists etc.) * ## MAKE A THIRD RELEASE (0.3.x) ## * Implement abstract string list and make matching interface more generic. Use this to: - Simplify matching API - Implement index extension - Implement extlists extension * Enotify extension: detect use of variable values extracted from the message that are used in the method argument. RFC reports this as a security issue. * Make the sieve storage a base class with (possibly) various implementations, just like mail-storage. This aims to provide support for alternate types of script storage like LDAP or SQL database. * Add support for stream matching for handling large values, e.g. from the body extension. * Implement message modification and extraction API in order to: - Implement editheader extension - Implement replace, enclose, foreverypart, mime and extracttext extensions * 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) * 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) * Use lib/str-find.h for :contains and :matches match types * Warn during compile if using non-existent folders. * Implement IMAP plugin for IMAPSieve support: - This may include support for manually running a script on a set of messages through IMAP (no specification for something like this is available; we will have to provide our own) * Variables extension: implement compile time evaluation of constant values * Add development documentation, i.e. comment on library functions and document the binary and byte-code format. * Give the byte code format some more thought, it is currently quite rough and to the point. * Implement SIP notify mechanism.