Cyrus IMAP 2.1.x Release Notes
******************************

Changes to the Cyrus IMAP Server since 2.1.14

* Correct a potential DOS attack in the fud daemon.

* Arbitron now works again

* Telemetry logging for mupdate

* Duplicate Suppression logging for redirect sieve actions

* A number of bugs in reconstruct have been fixed. also added the -p
  and -x options

* Better stubbing out of user_deleteacl

* No longer log any shutdown() failures

* Improved IPv6 support (for systems with two getnameinfo
  implementations)

* Misc Documentation Improvements

Changes to the Cyrus IMAP Server since 2.1.13

* Be more forgiving in the parsing of MIME boundary headers,
  specifically those generated by Eudora where the outer boundaries
  are substrings of the inner boundaries. This feature can be disabled
  by enabling the rfc2046_strict option.

* Allow cyradm to handle aggregate mailbox sets for ACL and DELETE
  operations.

* Add a lmtp_downcase_rcpt option to force the lowercasing of
  recipient addresses (Henrique de Moraes Holschuh <hmh@debian.org>).

* Include more MIME headers in sieve rejection notices

* Add an mbexamine command for debugging purposes

* LMTP will now fatal error if we cannot initialize the duplicate
  delivery database.

* Continued audit by Security Appraisers and Bynari

* Correctly terminate the processes by calling service_abort even on
  successful exit (helps to fix a db3 lockers problem)

* Fix some murder+altnamespace/unixhiersep issues

* Fix imclient’s handling of literals.

* Add support for the windows-1256 character set

* Don’t log ‘could not shut down filedescriptor’ messages when the
  socket is already not connected

* Now include a script to convert sieve script names to the
  altnamespace format

* Added a –with-extraident configure option to make it easier to set
  the extra version information that is compiled into the binary.

* Minor build fixes.

* Minor other bug fixes.

Changes to the Cyrus IMAP Server since 2.1.12

* Add maxfds= option in cyrus.conf

* “The shutdown() Patch” by Henrique de Moraes Holschuh
  <hmh@debian.org> and Jeremy Howard <jhoward@fastmail.fm>

* Now report both built-with and running-with OpenSSL versions

* Misc other small bugfixes

* Security Appraisers and Bynari review of the majority of the
  modules in imap/

Changes to the Cyrus IMAP Server since 2.1.11

* Master now will forcibly exit if a service is not executable

* Master now has a daemon mode and pidfile support (-d and -p
  options)

* Berkeley DB Configuration methods have changed. Hopefully they’re
  more generic now. You can still use –with-dbdir, or you can use
  –with-bdb-libdir and –with-bdb-incdir

* timsieved now handles usernames with dots (when unixhierarchysep
  is active)

* tugowar has been removed from the distribution.

* Squatter now has an option to skip unmodified mailboxes.

* Properly hash username to remove a user’s sieve scripts when their
  INBOX is removed.

* Reset output buffer when prot_flush returns EOF.

* Minor Makefile improvements with use of $(srcdir)

* Remotepurge improvement for empty mailboxes

* Fix for AFS overwriting the canonicalized username in ptloader

* Security audit of imapd.c performed by SecurityAppraisers and
  Bynari

Changes to the Cyrus IMAP Server since 2.1.10

* Fixed some potential buffer overflows in the sieve code, as well
  as a pre-login buffer overflow in the IMAP parsing code.

* ipurge can now skip flagged messages

* Fix a problem with the flat backend and tracking new files

* Fix a problem with the memory pool routines on 64-bit machines

Changes to the Cyrus IMAP Server since 2.1.9

* support Berkley DB 4.1

* more portable use of errno throughout

* timsieved now does telemetry logging

* libcyrus.a no longer supplies fs_get() and fs_give()

Changes to the Cyrus IMAP Server since 2.1.8

* Fix a strlcpy() off-by-one error.

* Better handling of errors in connecting to LMTP servers for
  deliver and lmtpproxyd.

* Fix bug in pop3proxyd’s pop3s handling.

* Fix Exim install documentation.

Changes to the Cyrus IMAP Server since 2.1.7

* Fix a severe locking problem during failed CREATEs

* Change default locking method to fcntl from flock

* Don’t cleanup the original mailbox during a RENAME while holding
  the mailbox list lock

* Quoting fixes in cyradm

* Small pathname fix in rehash script

Changes to the Cyrus IMAP Server since 2.1.6

* Correct some minor version number errors.

Changes to the Cyrus IMAP Server since 2.1.5

* Better locking of the mailbox list during mupdate operations for
  CREATE and RENAME

* Permissions fixes for annotations.

* pop3proxyd now does telemetry logging

* Cleanup a number of leaks in the murder code

* Correct semantics of our provided strlcpy(). Fix places where
  strlcpy() was being used incorrectly.

* Correct a significant memory leak in the memory pool routines

* OpenSSL is now handled correctly for the perl modules

* Small documentation cleanups

* The normal assortment of small bugfixes

Changes to the Cyrus IMAP Server since 2.1.4

* Sieve is no longer dependent on duplicate delivery suppression (it
  still uses the duplicate delivery database however).

* Sieve now supports draft-segmuller-sieve-relation-02.txt

* imtest now includes all the functionality previously kept in
  pop3test, lmtptest, smtptest, and mupdatetest. imtest will notice if
  it is invoked with one of these names and do the right thing. The -P
  flag can be used to force a particular protocol. As part of this,
  the default install location for mupdatetest has changed to be the
  same as the other test utilities. imtest also includes new
  MANAGESIEVE functionality (sivtest) as well as the ability to
  reconnect to the same server multiple times (useful for testing
  SSL/TLS session caching and DIGEST-MD5 fast reauth).

* snmpgen generates stubbed out code so we don’t waste resources on
  something that just doesn’t work. At some point in time, we’ll make
  it work again as it would be useful to gather aggregate statistics
  on what commands are being used so we can better tune the server.
  This change closes bug #1191. New bug 1267 opened to re-enable the
  feature.

* Added the chk_cyrus program to help point out missing message
  files and/or mailboxes

* ANNOTATEMORE improvements. Server annotation support has been
  added. We are also now using the /vendor/cmu/cyrus-imapd hierarchy.
  The “info” command in cyradm now returns annotations for the given
  mailbox (provided that ANNOTATEMORE support is compiled into the
  server)

* The RENAME command has been almost entirely rewritten. Now we rely
  on mailbox-level locking instead of locking the entire mailboxes
  file for the duration of the rename. ctl_cyrusdb -r now also cleans
  up “reserved” mailboxes that may appear in the event of a crash.

* ctl_mboxlist can now dump only a particular partition

* The configuration subsystem now uses a hash table to speed up
  lookups of options. Additionally, the hash table implementation has
  been updated to possibly take advantage of memory pools.

* Many bugfixes related to the Cyrus Murder. Includes improvments to
  subscription handling as well as correct merging of seen state on
  mailbox moves.

* Can now configure an external debugger (debug_command option in
  imapd.conf.

* Misc. autoconf-related fixes (most notably those related to
  sasl_checkapop and O_DSYNC).

* Misc. locking-related fixes.

* Security fixes related to handling large literals in getxstring(),
  as well as correct usage of layers in timsieved.

Changes to the Cyrus IMAP Server since 2.1.3

* All “MAIL” and “SIEVE” notifications are now handled by notifyd
  which is a daemon that supports multiple notification methods. The
  mailnotifier and sievenotifier options have been added to
  /etc/imapd.conf to configure notifications. (Ken Murchison)

* Many feature enhancements and bugfixes for the Cyrus Murder. The
  code now supports live (but not transparent) moving of mailboxes
  from one server to another.

* Some warning fixes.

* fdatasync() is no longer required.

* Fixed a bug in imap/append.c that would show itself if a message
  was being delivered to five or more different partitions.

* Deliveries now don’t create a redudant temporary file using
  tmpfile(); the staging directory is used instead. (Ken Murchison)

* Fix a possible crashing bug in squatter. (Ken Murchison)

* Deleting a user now also removes their Sieve scripts.

* cyrusdb_skiplist: release locks during iteration. Should prevent
  denial of service attacks and possibly increase performance.

* cyrusdb_skiplist: introduce a new mode using O_DSYNC writes which
  is possibly faster on Solaris. Currently off (it seems to hurt
  performance on Linux).

* master has preliminary code to avoid forking storms.

* sieveshell should now loop through all available SASL mechanisms
  before conceding defeat.

* sieveshell can now upload a file to a different name.

Changes to the Cyrus IMAP Server since 2.1.2

* fud now runs from the Cyrus master process; more generally, the
  Cyrus master process can deal with UDP services. (Amos Gouaux,
  amos@utdallas.edu)

* Sieve has been updated to be compliant with RFC 3028 and draft-
  martin-sieve-notify-01. All notify actions and any fileinto and/or
  redirect actions using stringlists will have to be updated/changed.

* added cvt_cyrusdb for quick conversions between different cyrusdb
  backends.

* fixed a bug in the Sieve header cache, where legal header names
  were being rejected.

* many Murder-related fixes

* suppress a bogus TLS session reuse DBERROR message

* make the list of acceptable TLS ciphers configurable in
  /etc/imapd.conf

* cyrusdb_skiplist fixes; it’s now suitable for using in production
  environments though there are still performance problems outstanding

Changes to the Cyrus IMAP Server since 2.1.1

* now compatible with Berkeley DB4 (Larry M. Rosenbaum,
  lmr@ornl.gov)

* timsieved now supports proxying via loginuseacl (Amos Gouaux,
  amos@utdallas.edu)

* Sieve vacation now does a case-insensitive comparison of
  :addresses

* Warning-related bug fixes from Henrique de Moras Holschuh
  hmh@debian.org

* automatic archival of db3 files so that filesystem backups are
  always consistent (Ken Murchison, ken@oceana.com)

* added a skiplist database backend, still needs more testing

* further work on the Cyrus Murder

* fixed bug in remotepurge dealing with mailboxes with characters
  that need to be escaped inside quoted-strings

* Cyrus::IMAP::Admin now supports referrals

* cyradm, via Cyrus::IMAP::Shell, now can remove quotaroots

* timsieved, sieveshell, and the MANAGESIEVE protocol extended with
  referrals

Changes to the Cyrus IMAP Server since 2.1.0

* now compatible with Cyrus SASL 2.1.0

* fixed a problem with LMTP AUTH and unix domain sockets

* make deleting users faster

* add a “-n” switch to remotepurge

* cyradm now does implicit SASL authorization

* fix for Sieve :matches comparator
