Cyrus IMAP 3.4.0-rc1 Release Notes

Download from GitHub:

Major changes since the 3.2 series

  • DAV improvements
  • Improved performance for users with large folders
  • LITERAL- maximum size is now honoured (RFC 7888)
  • Support for the ESORT (but not CONTEXT) extension from RFC 5267
  • Experimental JMAP for Sieve Scripts support (requires jmap_nonstandard_extensions: yes in imapd.conf(5)).
  • Experimental Handling Message Disposition Notification with JMAP support (requires jmap_nonstandard_extensions: yes in imapd.conf(5)).
  • Experimental JMAP Backup extension (requires jmap_nonstandard_extensions: yes in imapd.conf(5)).
  • Experimental JMAP Notes extension (requires jmap_nonstandard_extensions: yes in imapd.conf(5)).
  • Experimental JMAP Blob extension (requires jmap_nonstandard_extensions: yes in imapd.conf(5)).
  • Experimental JMAP Mail extension (requires jmap_nonstandard_extensions: yes in imapd.conf(5)).
  • New cyrus.index format v17 adds changes_epoch field, needed by JMAP Backups extension
  • New reverseuniqueids imapd.conf(5) option (default on), which improves performance for users with large mailboxes
  • Further improvements to the reverseacls imapd.conf(5) performance option
  • Improvements to replication reliability and performance
  • Experimental vnd.cyrus.log and vnd.cyrus.jmapquery Sieve extensions
  • Experimental Sieve Snooze extension based on draft-ietf-extra-sieve-snooze
  • Experimental Sieve mailboxid extension based on draft-ietf-extra-sieve-mailboxid
  • Improvements to conversations
  • New mailbox_maxmessages_addressbook, mailbox_maxmessages_calendar, and mailbox_maxmessages_email imapd.conf(5) options for providing server-wide limits on the amount of objects in any one mailbox, independently of quotas. These default to 0 (unlimited) for backward compatibility, but are highly recommended for protecting your server from misbehaving clients.
  • New IMAP create/delete behaviour based on draft-ietf-extra-imap4rev2: mailboxes containing child mailboxes can no longer be deleted; and when creating mailboxes, ancestors will be created as needed.
  • CRC32 optimisations
  • quota(8) and cyr_expire(8) arguments are now in the admin namespace like other tools
  • Support for per-language indexing and searching
  • SNMP support has been removed, as it was broken and unmaintained
  • New sync_rightnow_channel imapd.conf(5) option to enable real-time replication to the specified channel as writes occur.
  • Caching of mailbox state for quicker replication turnaround. Configure sync_cache_db and sync_cache_db_path in imapd.conf(5) to enable.
  • New search-fuzzy-always annotation allows per-user override of the search_fuzzy_always imapd.conf(5) option
  • New lmtp_preparse imapd.conf(5) option for parsing incoming messages before locking the mailbox.
  • New search_index_skip_users and search_index_skip_domains imapd.conf(5) options for skipping indexing of particular users/domains.
  • The HTTP Admin module's Currently Running Services feature now works on the major BSDs (thanks Felix J. Ogris)
  • squatter(8) once again supports the -s option to skip reindexing mailboxes which were not modified since the last index (Squat backend only)
  • squatter(8) now supports long options
  • Improvements to search query normalisation performance

Updates to default configuration

The cyr_info(8) conf, conf-all and conf-default subcommands accept an -s <version> argument to highlight imapd.conf(5) options that are new or whose behaviour has changed since the specified version. We recommend using this when evaluating a new Cyrus version to check which configuration options you will need to examine and maybe set or change during the process.

  • The annotation_definitions file is now loaded case-insensitively
  • Implementations may want to revisit their search_normalisation_max settings, but its default value 1000 is a good conservative choice. Current server-grade hardware may use 20000 or more.

Security fixes

  • None so far

Significant bugfixes

  • Fixed: Sieve Editheader Extension (RFC 5293) now works correctly with respect to section 7, Interaction with Other Sieve Extensions.
  • Fixed Issue #2598: indexed search now works correctly with Squat engine again