Hello Dovecot users,
In the last week two nasty bugs were found in the new Sieve implementation. Primarily, the include extension did not work when a compiled binary was loaded from disk. This is something that is still not tested by the test suite, giving this bug the opportunity to slip through. Also, the value matching implementation would sometimes cause a assertion failure. Other than that, various small bugs were fixed.
On the more positive side, I have implemented support for the new mailbox extension (RFC 5490), which provides the means to test whether a mailbox exists. Also, it adds the :create argument to the fileinto command, which makes sure that the target folder is created before saving is attempted. Of course, this is only useful when deliver is used with the -n option. There wasn't a great need for this extension, but I could use it in the test suite and it was almost trivial to implement.
In other news, I have further developed the sieve-filter command line tool. It is getting closer to a usable state, being able to filter a large number of messages in an existing mailbox, but its use is currently still very much discouraged as it tends to be very good at eating mailboxes when the user is less attentive. It needs more command line configuration options, a simulation mode to perform a dry run, and a man page that describes its use and its dangers.
Changelog for Sieve v0.1.10:
* Changed action execution of fileinto and keep. These changes depend on API additions in Dovecot, making this release depend on Dovecot v1.2.2 or newer. * Further developed the sieve-filter command line tool. This required a few changes to the action execution of the Sieve engine. The tool was successfully tested on folders with a few 100k spam messages. However, the commandline options are still incomplete, a man page is missing and it needs much more testing before I can recommend anyone to use this tool. + Added support for the mailbox extension. This allows checking whether a mailbox exists using the mailboxexists command and it adds the :create argument to the fileinto command to create the mailbox when it is missing. The :create feature is useless unless the Deliver LDA is run with the -n option. + Improved the testsuite with tests for message delivery. Messages stored using keep and fileinto can be fed back into the Sieve engine for verification. This includes testing of applied IMAP flags. + Updated the man pages with the new method of specifying the supported extensions using + and - (for the -x parameter of the sieve tools) + Further developed the deprecated notify extension. A dummy for the denotify command exists, meaning that its use does not cause an error anymore. - Fixed a bug in the derivation of the binary path from the script path. A bare filename would yield a path relative to root. - Fixed a bug in the value matching code. The context data now uses a proper pool in stead of the data stack. Bug reported by Jan Sechser. - Fixed assertion fail in the include extension caused by missing initialization upon binary load. This bug surfaces only for stored binaries. Bug reported by Tom Hendrikx. - Fixed include error message for failed :global include. It mentioned the wrong config parameter. - Fixed broken wiki reference in an error message of the plugin about the 'sieve' setting. - Fixed behavior of fileinto when delivering into a namespace prefix. Previous fix used the wrong storage.
The release is available as follows:
Have fun testing the new releases and don't hesitate to notify me when there are problems. Please include your configuration, the involved Sieve scripts and an example message in any bug or problem report when possible, so that I can easily reproduce the issue.