Hello Dovecot users,
I have finally finished the first release of Pigeonhole for Dovecot v2.0. The most notable change from previous Dovecot v1.2 Sieve/ManageSieve releases is that all is now integrated in a single package and there is no need to patch Dovecot anymore to gain ManageSieve support.
- Merged Sieve and ManageSieve packages into a single Pigeonhole package. There is also no need to patch Dovecot anymore to gain ManageSieve support. Version numbering of previous Sieve releases is continued as v0.2.0. The sources originally branched off from Sieve v0.1.5 and ManageSieve v0.11.4, but the NEWS history of much more recent releases for Dovecot v1.2 is included since these changes are all included in this release as well.
- The ManageSieve service now binds to TCP port 4190 by default due to the IANA port assignment for the ManageSieve service. When upgrading from v1.2, this should be taken into account. The service can be configured manually to listen on both 2000 and 4190.
- The Dovecot configuration now calls the ManageSieve protocol ‘sieve’ in stead of ‘managesieve’ because it is registered as such with IANA. The binaries and the services are still called managesieve and managesieve-login.
- The binary representation of a compiled Sieve script is updated to include source code locations of all commands and arguments. This is implemented in a similar manner as such debug information is included in some system executables and libraries (DWARF-like). Run-time errors can now always refer to the proper line number in the Sieve source script.
- The Sieve plugin is adapted to work properly with the new LMTP service introduced with Dovecot v2.0. The same plugin is used for both LDA and LMTP.
- The ‘sieve_subaddress_sep’ setting for the Sieve subaddress extension is now known as ‘recipient_delimiter’. Although the deprecated sieve_subaddress_sep setting is still recognized for backwards compatibility, it is recommended to update the setting to the new name, since the new LMTP service also use the recipient_delimiter setting.
- ManageSieve: changed default IMPLEMENTATION capability to from ‘Dovecot’ to ‘Dovecot Pigeonhole’.
- Renamed the sieved tool to sieve-dump. The original name was somewhat confusing.
- Updated man pages to match style and structure of new Dovecot man pages.
- Made testsuite commands more uniform and cleaned up many of the testsuite scripts. Some minor new tests were added in the process.
- Simplified string matching API to use abstract string lists as data sources. This will also make implementing the index extension easier in the future.
- Significantly improved trace debugging with the sieve-test tool. The full execution of the script can be examined, including the matched values and keys of the respective Sieve test commands. The executed statements are listed with their line number (and code address when requested). The level of detail is configurable from the command line.
- The SIEVE and NOTIFY capabilities reported by the ManageSieve protocol can now be configured manually. If left unconfigured, the capabilities are determined from the default Sieve and ManageSieve configuration. User-specific capabilities aren’t reported until after authentication.
- Significantly improved file error handling. This means that administrators get a more useful and informative log message when file operations fail. The most notable example is that when the LDA Sieve plugin is trying to store a binary for a global script, the resulting failure message also points the administrator towards pre-compiling the script with sievec.
- Added runtime argument value checking for several commands (redirect, date, vacation). When variables are used, these checks cannot be performed at compiletime. A proper runtime error now is produced when invalid data is encountered.
- UTF8 validity of fileinto command argument is now checked either at compile time or at runtime. Previously, it was not checked until the store action was executed.
- Validity of IMAP flags for the imap4flags extension is now checked also at runtime. Previously, it was not checked until the store action was executed.
- Simplified and restructured error handling. Also made sure that user-caused errors are no longer written to the Dovecot master/LDA log.
- Multiscript: fixed duplicate implicit keep caused by erroneous execution state update.
- Prevented assertion failure due to currupt binary string representation. If the string was missing a final \0 character an assertion was produced in stead of a binary corruption error.
- Imap4flags: fixed bug in setflag command; when parameter was a stringlist, only the last item was actually set.
- Variables extension: fixed :length set modifier to recognize utf8 characters in stead of octets.
- Testsuite: prevented innocent warning messages, i.e. those that are part of the test, from showing up by default.
- ManageSieve/Sieve storage: fixed error handling of PUTSCRIPT commmand; save commit errors would not make the command fail.
- ManageSieve: enforced protocol syntax better with some of the commands; some commands allowed spurious extra arguments.
- Fixed Sieve script name checking to properly handle length limit and added 0x00ff as invalid character.
- Removed spurious old stdio.h (top) includes; these caused compile issues on specific systems.
- Fixed default Sieve capability (as reported by ManageSieve): extra extensions spamtest, spamtestplus and virustest were enabled by default. These should, however, only be enabled when properly configured and there is no default configuration.
The release is available as follows:
Refer to pigeonhole.dovecot.org and the Dovecot v2.0 wiki for more information. Have fun testing this first release and don’t hesitate to notify me when there are any problems.
The bugfixes above are also applied to the Dovecot v1.2 Sieve and ManageSieve sources and I’ll produce new releases for those in the next few days.
Oh… and if anyone is wondering what those duplicate notifications are on the dovecot-cvs list… well… oops.