Changes to the Cyrus IMAP Server since 2.3.15
* Added user_deny.db to be able to selectively deny users access to
Cyrus services.
* Added disconnect_on_vanished_mailbox option. See imapd.conf(5) for
details
* Reworked SQL detection code in configure. See install-upgrade.html
for more details.
* Added popuseimapflags option which enables setting and obeying IMAP
flags in the POP server.
* Added optimized method of handling an empty maildrop in pop3d.
Changes to the Cyrus IMAP Server since 2.3.14
* Fixed CERT VU#336053 - Potential buffer overflow in Sieve.
* Added new cyr_df tool for reporting Cyrus spool partition disk
space usage.
* Fixed a crash when selecting a folder after using the SCAN command
* Split mupdate_synchronize() into network scarfing and mailbox
comparision pieces. This allows us to not lock out the mailboxes.db
and mupdate clients while scarfing the UPDATE response, which can
be quite time consuming over slow links.
* Added support for MUPDATE COMPRESS and IMAP COMPRESS commands which
help speed up bulk data commands over slow links.
* Allow frontend servers in a Murder to proxy the CREATE, DELETE,
SETACL, SETQUOTA, and GETQUOTA commands for toplevel mailboxes. In
order for a frontend to know where to CREATE a toplevel mailbox,
either the defaultserver option must be set (ALL new toplevel
mailboxes are created on this particular server), or the serverlist
option must be set (new toplevel mailboxes are created on whichever
server has the most available spool space).
* Use delayed expunge in ipurge to avoid corrupting cache file and as
a bonus make it unexpungable.
* Run daily tasks at the same time each day instead of exactly 24
hours apart to detect daylight savings changes
* Fixed Bug #2727 by immediately expunging old messages on INBOX to
INBOX.sub rename
* Fixed incorrect quota calculations on sync_server when replicating
unexpunged messages (thanks David Carter)
* Allow user rename to succeed even if the user is over quota
* Fixed a skiplist foreach bug and various datatype size issues that
caused problems on some 64 bit architectures
* Added additional logging of mailbox events if condstore is enabled
to ensure modseq values are always correctly replicated
* Fixed "DBERROR db4: environment reference count went negative" by
forking idled before opening the database environment.
* Fixed a squatter bug where any short search term (< 4 characters)
would cause squatter to return all messages regardless of the other
filters being applied
Changes to the Cyrus IMAP Server since 2.3.13
* Fixed incompatibility between older ManageSieve clients and newer
servers that issue an auto-capability response after AUTH with a
SASL security layer.
* Fixed quota calculation to ignore files not mentioned in the index
* Correct cache truncation after an aborted append (was leaving empty
holes in the cache file>)
* Fixed ACLs copying when renaming users
* Fixed TLS session reuse
* Log more detail about changes done by a reconstruct (indicating
that there were problems with the mailbox before hand - mainly as a
debugging aid)
* Ensured that the longest possible named mailbox can still be
deleted when delayed delete is enabled by increasing buffer sizes
* Add configuration option mailbox_default_options allowing (for
example) modsequences to be turned on for all new mailboxes
* Replication:
* added -R option to sync_client to do rolling replication in the
foreground (to run under supervise or similar)
* made cyr_synclog run as cyrus user if started as root
* Changed ADDSUB/DELSUB replication to replicate current state
rather than log explicit changes, avoiding a bug where if
multiple subscription changes happened in one sync run, the
replica could be incorrect
* Changed replication logging related to user creation and
mailboxes to ensure correct replication of delayed delete of
entire users
* Always overwrite the seen DB on the replica with the full DB
from the master on "setseen_all" to guarantee consistency
* Sync all mailbox annotations, not just condstore, ensuring
mailbox is consistent on both ends (solves POP3_NEW_UIDL bug)
Noteworthy changes:
* Added an experimental "sql" backend for cyrusdb. Currently MySQL,
PostgreSQL, and SQLite are supported.
* Added support for IMAP [CAPABILITY] response code to client-side
of Murder proxies.
* Added support for ManageSieve auto-capability response after
STARTTLS and after AUTH with a SASL security layer.
* Made MAXWORD and MAXQUOTED sizes configurable via imapd.conf
* Rewrote cyrusdb_quotalegacy.c to use readir()
rather than glob.c. This avoids a potential crash due to
conflicts between glibc and Heimdal implementations of glob().
* Added support for fulldirhash to 'ctl_mboxlist -v'
* Several skiplist transaction bugfixes.
* cyr_expire no longer has a default of 0 (zero) for -X and -D.
These options must be used explicitly in order to have the desired
effect.
* Added sieve_utf8fileinto option.
* Added sieve_sasl_send_unsolicited_capability and
sieve_sasl_expect_unsolicited_capability options.
* Several 32/64-bit compatibility fixes.
* Added statuscache.db to cache IMAP STATUS data which significantly reduces
the amount of I/O necessary when neither the mailbox nor \Seen state has
changed -- courtesy of Fastmail.fm.
* Added option to unexpunge to restore messages by time interval -- courtesy
of David Carter.
* Implemented undocumented IMAP SCAN extension, which allows Pine/Alpine to
do cross-mailbox searches -- based on work of David Carter.
* Implemented incremental squat updates (see squatter.8) -- courtesy of David
Carter.
* Fixed major bugs in reconstruct -k implementation -- courtesy of David
Carter.
* Added code to promote transaction safety and to track the lock status of
skiplist databases -- courtesy of Fastmail.fm.
* Added option to mbexamine to compare quota usage in cyrus.index to the
actual message file sizes.
* Allow long lines in imapd.conf to be split across multiple lines by using
backslash as a continuation character.
* The Sieve compiler now translates UTF-8 mailbox names used in fileinto to
modified UTF-7 so that messages will be successfully inserted into the
mailbox.
* Use a more appropriate argument with LHLO command.
* Added serverinfo option to control the information displayed in banner
greetings and capability responses.
* Fixed miscellaneous bugs and build issues.
While here, DESTDIR ready.
Noteworthy changes:
* Fixed several skiplist bugs -- courtesy of Fastmail.fm.
* Add robustness to skiplist recovery -- courtesy of Fastmail.fm.
* Added support for modification sequences to replication protocol
(for CONDSTORE) -- courtesy of David Carter.
* Fixed delayed delete replication -- courtesy of Fastmail.fm.
* Allow [un]deleting of user INBOXes (renaming to/from deleted
hierarchy) to work when using delayed delete -- courtesy of Simon
Matter.
* Prevented SSL_accept() from blocking indefinitely when using
TLS/SSL.
Changes to the Cyrus IMAP Server since 2.3.9
* Added support for "delayed" delete, in which mailboxes are renamed to a
special admin-only "deleted" hierarchy at the time of the DELETE (hiding
them from the client), rather than immediately removing them from the
filesystem. This allows messages/mailboxes to be recovered by the admin in
case of user error. The mailboxes and messages can be removed at a later
time by cyr_expire. The new delete_mode and deletedprefix options in
imapd.conf controls whether deletes are "immediate" or "delayed" and the
mailbox hierarchy for "delayed" deletes. -- courtesy of David Carter and
FastMail.fm.
* Fixed the special case of RENAMEing an Inbox, so that it doesn't keep the
same mailbox uniqueid, thus allowing it to replicate properly (seen state
is still preserved).
* Disabled Nagle's algorithm in sync_client and sync_server to increase the
throughput of the replication protocol. -- courtesy of Wes Craig.
* Added support for a shared \Seen flag on messages (must be enabled on a
per-mailbox basis with the /vendor/cmu/cyrus-imapd/sharedseen mailbox
annotation.
* Added -u and -U options to reconstruct -- courtesy of David Carter.
* Added SETUIDVALIDITY command to the replication protocol -- courtesy of
David Carter.
* Finally fixed (again?) alignment issues on 64-bit SPARC.
* Changed message GUIDs used by replication to be the SHA1 hash of the
messages -- based on work of David Carter and Fastmail.fm.
* Improve the performance of commands that operate on sequence-sets. The
sequence-set is now parsed only once, and the commands operate on a sorted
list of seq-ranges.
* Added new cyr_synclog utility for adding events to the replication log --
courtesy of Fastmail.fm.
* Added support for PCRE library -- courtesy of Fastmail.fm.
* Added support for disabling duplicate delivery suppression on a per-folder
basis with the /vendor/cmu/cyrus-imapd/duplicatedeliver mailbox annotation
-- courtesy of Fastmail.fm.
* Fixed miscellaneous bugs and build issues.
* Added support for BDB 4.5 and 4.6.
* Fixed bug in frontend handling of CREATE for both proxying and referring.
-- courtesy of Gary Mills
* Fixed local deletion during XFER from a unified server. -- courtesy of Gary
Mills
* Fixed XFER bug which prevented sieve scripts from being migrated. --
courtesy of Gary Mills
* Allow utilities to be run as root (acquiring 'cyrus' uid on-the-fly).
* Changed the default value of the allowplaintext option to disabled (0).
* Finally fixed 64-bit alignment problem with HIGHESTMODSEQ.
* Fixed initialization of UUID subsystem for replication. -- courtesy of
Fastmail.fm
* Added -a option to cyr_expire to ignore to skip annotation check. --
courtesy of Fastmail.fm
* Set the mtime of synchronized message files to INTERNALDATE (makes
reconstruction a little friendlier). -- courtesy of Fastmail.fm
* Fixed a bug in sync_client which caused it to bail when a message was
deleted out from under it.
* Allow sync_server to accept unauthenticated connections from sync_client on
a UNIX socket.
* Drastically reduced the amount of time it takes for a mupdate slave to
synchronize with a master.
* Added URI contained in the Content-Location header to the BODYSTRUCTURE
response (per RFC 3501). -- inspired by Fastmail.fm
* Fixed flushseenstate bug which was causing unsolicited EXPUNGE responses
during FETCH/STORE. -- courtesy of David Carter
* Added option to ctl_mboxlist to verify the consistency of the mailbox list
database and the spool partition(s). See ctl_mboxlist.8 for details.
* RENAME now copies cyrus.expunge index file as well as expunged message
files.
* Fixed replication of 64-bit quotas. -- courtesy of David Carter
* Fixed miscellaneous bugs, memory leaks, and build issues.