Cyrus IMAP 2.0.x Release Notes¶
Changes to the Cyrus IMAP Server since 2.0.16
- migrated to SASLv2 (Rob Siemborski) 
- altnamespace: it is now possible to display user mailboxes as siblings to the INBOX at the top-level (Ken Murchison) 
- unixhierarchysep: it is now possible to use slash as the hierarchy separator, instead of a period. (Ken Murchison, inspired by David Fuchs, dfuchs@uniserve.com) 
- SSL/TLS session caching (Ken Murchison) 
- support for IMAP CHILDREN & LISTEXT extensions (Ken Murchison, work in progress) 
- check recipient quota & ACL at time of RCPT TO: in lmtpd (Ken Murchison) 
- support for LMTP STARTTLS & SIZE extensions (Ken Murchison) 
- unified deliver.db, using cyrusdb interface, hopefully improving concurrency and performance (Ken Murchison) 
- fixed STORE FLAGS () bug (Ken Murchison) 
- fixed SEARCH SUBJECT vs. SEARCH HEADER SUBJECT bug (Ken Murchison) 
- users without an INBOX can have subscriptions (Ken Murchison; noticing a trend here?) 
- added cyrusdb_db3_nosync backend, used for duplicatedb and session cache, to postpone non-critical writes. (Ken Murchison) 
- support for STARTTLS and AUTH=ANONYMOUS for timsieved (Ken Murchison) 
- do setgid and initgroups in master (as urged by several people) 
- added more config info to IMAP ID (in a vain attempt to improve debugging) 
- configure now checks for DB3.3 
- SQUAT (Rob O'Callahan, roc@cs.cmu.edu) 
- change SEARCH HEADER x to SEARCH x utilizing internal cache where possible (Rob O'Callahan, roc@cs.cmu.edu) 
- an improved directory hashing option (Gary Mills, mills@cc.UManitoba.CA) 
- use of EGD for SSL/TLS (Amos Gouaux, amos@utdallas.edu) 
- separate certs/keys for services (Henning P. Schmiedehausen, hps@intermeta.de) 
- ability to force ipurge to traverse personal folders (Carsten Hoeger, choeger@suse.de) 
- fixed zero quota bugs in cyradm (Leena Heino, liinu@uta.fi) 
- ignore trailing whitespace in imapd.conf 
- Received: header (with TLS and AUTH info) 
- added '-i' switch to sendmail command line for SIEVE reject, redirect and vacation 
- small fixes to notify_unix 
- added "duplicatesuppression" switch to imapd.conf for enabling/disabling duplicate delivery suppression (Birger Toedtmann, birger@takatukaland.de) 
Changes to the Cyrus IMAP Server since 2.0.15
- fixed a longstanding bug in quota that would affect people with unusual top-level hierarchy, fix by John Darrow, John.P.Darrow@wheaton.edu. 
- some important fixes to db3 interface code, by Walter Wong wcw@cmu.edu, prompted by complaints from Scott Adkins adkinss@ohio.edu. 
- fixed some memory leaks in imclient and in the Perl IMAP module, prompted by Toni Andjelkovic toni@soth.at. 
- fixed a longstanding authentication error in the Perl IMAP module, should remove pesky extra Password: prompt. 
- fixed some allocation bugs in the managesieve perl module. 
Changes to the Cyrus IMAP Server since 2.0.14
- fixed memory management bugs in imapd, lmtpd that were being hit due to the connection reuse code and causing subtle and annoying problems. 
- we now clean up better when deleting a user 
- fixed an endian bug in ipurge 
- pop3d now can also reuse processes. 
- fix a bug in imclient that would strike when cyradm specifies a mechanism on the command-line. (SASL mechanism names aren't case sensitive.) 
- fix some bugs in handling SIGHUP in master 
- fix a couple of goofs in Admin.pm 
Changes to the Cyrus IMAP Server since 2.0.13
- fixed a silly bug with reusing SSL connections 
- lmtpd can now service multiple clients in sequence, hopefully improving performance 
- changed how Berkeley db databases are opened, hopefully lessening the chance of deadlock and improving performance 
- fixed a couple of memory leaks 
- lessened the chance of a race condition during index_check() 
Changes to the Cyrus IMAP Server since 2.0.12
- refactored code so less duplication 
- added alternate config file for partial virtual domain support 
- pop3d can now disable USER/PASS commands. 
- STARTTLS now accepts a SSLv23 hello but doesn't allow SSLv23 to be negotiated. 
- imtest no longer buffers to aid use as an automated layer. 
- master now supports maximum number of service processes via the "maxchild" modifier. 
- fixed a bug in the Sieve string lexer. 
- one imapd process can now service multiple clients in sequence, eliminating a large number of forks. 
Changes to the Cyrus IMAP Server since 2.0.11
- portability fixes involving setrlimit() 
- fixed compiler warnings 
- the STARTTLS command will only accept TLSv1 now, not SSLv2/v3. The imaps port is unaffected by this change. 
- timsieved no longer returns garbage strings. 
Changes to the Cyrus IMAP Server since 2.0.9
- some small memory savings 
- the "fud" daemon once again works correctly 
- the IDLE extension now uses signals correctly 
- problems with libwrap have been resolved 
- imapd and pop3d now log connections protected via TLS. 
- efficiency improvements when searching for a particular message-id 
- fixed an envelope-parsing bug affecting SORT and THREAD 
- made RENAME keep the same mailbox uniqueid, preserving seen state across renames 
- STOREing flags to multiple messages in one command is now more efficient 
- RENAME now preserves the ACL 
- LIST is now as efficient as Cyrus v1.6, modulo Berkeley DB issues. 
- Sieve zephyr notifications are now correct. 
- crash in reconstruct now fixed. 
- man pages added for cyrus.conf, master, lmtpd, idled, ctl_mboxlist, and ctl_deliver. 
- master can now listen on specific interfaces 
- master can now reread /etc/cyrus.conf on SIGHUP. 
- timsieved now uses symlinks instead of hard links. 
Changes to the Cyrus IMAP Server since 2.0.8
- remembered to update this file 
- bug in Cyrus::IMAP perl module affecting cyradm's setquota fixed 
- portability fix with socklen_t 
Changes to the Cyrus IMAP Server since 2.0.7
- preliminary implementation of the IDLE extension (Ken Murchison, ken@oceana.com). 
- THREAD=REFERENCES now part of the normal build. 
- tweaks to the installation documentation and suggested Sendmail configuration 
- portability fixes and other small bugfixes 
- added "-a" flag to lmtpd 
- master process can now export statistics about running processes via UCD SNMP AgentX 
- many fixes to Cyrus Murder-related code 
- fixes to perl code, especially the Sieve interface. added an IMSP interface to the perl code, but it still needs work. 
Changes to the Cyrus IMAP Server since 2.0.6
- some number of random static variables eliminated, to save on memory footprint 
- recursive RENAME was a little to eager; fixed. RENAME will also give the client a hint that a sub-RENAME failed. (mostly probably useful for cyradm, but cyradm doesn't take advantage of it yet.) 
- THREAD=X-JWZ has turned into THREAD=REFERENCES (Ken Murchison) 
- DELETE wasn't failing cleanly in database code; fixed. 
- off-by-one bug in seen_db fixed. 
- starting/committing/aborting transactions now logged more correctly in cyrsudb_db3 
- master will now accept port numbers instead of just service names in cyrus.conf. also logs even more verbosely (see bug #115.) 
- libwrap_init() is now inside the loop, since i don't quite understand the semantics of libwrap calls. 
- setquota in cyradm now behaves more sanely (and gives correct usage message). 
- bugfixes to the managesieve client perl api. (still needs work.) 
- small fixes in timsieved. 
- added a "make dist" target so i won't dread releases as much. 
Changes to the Cyrus IMAP Server since 2.0.5
- APPEND now honors the Seen flag. 
- mailboxes file can once again be a flat text file. (compile-time choice) 
- subscriptions file can be flat text or berkeley db. likewise for seen state. 
- unfortunately, the format of the mailboxes file has changed. 
- implementation of "JWZ" threading, a first pass on the forthcoming THREAD=REFERENCES. 
- bugfixes in libacap. 
- bugfixes in other Murder related functionality. 
- removal of dead code. 
- will now look in CYRUS_PREFIX/etc/imapd.conf if there's no /etc/imapd.conf. 
- more paranoid implementation of ID. 
- more descriptive lmtp errors. 
- finished implementation of LMTP 8BITMIME. 
- fixed minor bugs in pop3d. 
- small test suite for cyrusdb backends added in lib/test/. 
- added -DPERL_POLLUTE to the perl compilation to deal with Perl 5.6. 
- small additions to the Sieve library. 
- As usual, owe lots of thanks to Ken Murchison for his hard work and awesome implementations. 
Changes to the Cyrus IMAP Server SINCE 2.0.4
- Now should work with Berkeley DB 3.1, but does not auto-upgrade 3.0 databases (and, in fact, I haven't written any upgrade software yet). 
- SORT and THREAD should now function correctly. 
- Some configure fixes. 
- Some fixes for possible race conditions in initializing services and database structures. 
- Some non-gcc compile fixes with structure initialization. 
- Some non gcc compile fixes with structure initialization. 
Changes to the Cyrus IMAP Server SINCE 2.0.3
- fixed mbpath and ipurge. Thanks to Alain Turbide for the bug report. 
- configure: removed mmap_private.c; it was buggy, and not worth supporting. 
- configure: improvements in detecting libwrap, typos fixed in detecting libsasl. 
- Merged the acapsieve library into libacap. 
- improvements to the ACAP API. 
- invariant checks added to the skiplist code. 
- bugfix in TCL cyradm. 
- acapmbox.c: bugfixes in handling acap connections. 
- fix the size given for a unix socket address (changes throughout the code), patch thanks to Vladimir Kravchenko, jimson@null.ru. 
- rewrote deliver to use the generic LMTP API in lmtpengine.c. Likewise, implemented the client-side API in lmtpengine.c. (Still need to implement AUTH.) 
- added SORT and THREAD support (Ken Murchison, ken@oceana.com.) 
- In checking an APPEND command, we were rejecting valid system flags and accepting invalid ones. 
- minor bug fixes to proxyd. 
- large amount of debugging code added to target-acap. 
- build fixes to Perl programs. 
- allow plaintext authentication to timsieved. 
Changes to the Cyrus IMAP Server in 2.0
- The mailboxes file is now a transaction-protected Berkeley database. 
- The core delivery process has been moved to lmtpd. deliver is now a simple wrapper to create an LMTP transaction. 
- master process, responsible for spawning services (imapd, lmtpd, etc.) and for routine housekeeping. Optionally, it can use libwrap to allow or deny connections. 
- ACAP (Application Configuration Access Protocol) support for Cyrus Murder: IMAP Aggregator. 
- Sieve enhancements: regular expressions, notifications, automatically setting IMAP flags. 
- SNMP (Simple Network Management Protocol) support for monitoring usage (e.g. number of users logged in) as well as for instrumenting protocol usage (e.g. number of times CREATE has been called). 
- Perl version of cyradm contributed by Brandon Allbery (allbery@ece.cmu.edu). Eventually we expect to transition to the Perl version away from the TCL version. 
- Bugfix in modified UTF-7 processing (for mailbox names). Bugfix in index_searchcacheheader(). 
- Implemented the extension MULTIAPPEND. 
- RENAME is now hierarchical. 
- The right that controls whether a mailbox may be deleted is now "c". (It used to be "d".) 
- An additional backend for seen state has been created, seen_db. It stores seen state in a per-user database.