Cyrus IMAP 3.8.0 Release Notes

Download from GitHub:

Major changes since the 3.6 series

  • Adds the ability for replication to stage message uploads to the archive partition rather than the spool partition.

  • Adds long-options support to various command line tools

  • Adds a new BYTESIZE smart type for imapoptions that set sizes

  • Removes empty lines from cyr_expire(8) verbose output. If you parse this output with external tools, those may need updating to match.

  • Adds a module to ptloader which speaks HTTP. See the "pts_module" and "httppts_uri" options in imapd.conf(5).

  • Adds support for IMAP Multimailbox Search (RFC 7377).

  • Adds support for IMAP Saved Search Results (RFC 5182).

  • Advertise support for IMAP URL-PARTIAL (RFC 5550).

  • Implements the JMAP calendars specification (draft-ietf-jmap-calendars).

  • Adds support for a new read-only \Scheduled mailbox that contains emails created via JMAP EmailSubmission/set that are to be sent at a later date/time. Also extends the JMAP EmailSubmission object with optional instructions for moving the message into another mailbox after it has been sent.

  • Maps JMAP CalendarEvent privacy to the newly introduced iCalendar X-JMAP-PRIVACY property rather than CLASS. See JMAP/CalDAV changes in the upgrade instructions.

  • Improves error handling and reporting from mbexamine(8). If you have custom tooling that calls mbexamine, it may need updating.

  • Sieve: Remove support for creating scripts with the deprecated imapflags capability and mark / unmark actions. See Sieve changes in the upgrade instructions.

  • Lock ordering fixes should result in fewer "resource deadlock avoided" errors

Storage changes

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.

  • Adds a new BYTESIZE smart type for imapoptions that set sizes. This allows sizes to be specified in "B", "KB", "MB", "GB" for better readability.

    These imapd.conf(5) options are changed in some way:

    • archive_maxsize

    • autocreate_quota

    • autocreatequota

    • backup_compact_minsize

    • backup_compact_maxsize

    • event_content_size

    • icalendar_max_size

    • jmap_preview_length

    • jmap_max_size_upload

    • jmap_max_size_blob_set

    • jmap_max_size_request

    • jmap_mail_max_size_attachments_per_email

    • maxmessagesize

    • maxquoted

    • maxword

    • quotawarn -> quotawarnpercent

    • quotawarnkb -> quotawarnsize

    • search_maxsize

    • sieve_maxscriptsize

    • vcard_max_size

    • webdav_attachments_max_binary_attach_size

    This feature is transparent over upgrade and downgrade, provided the imapd.conf remains unchanged.

    Admins may update their imapd.conf to take advantage of the readability of the new smart type, but after doing so will no longer be able to downgrade to a version without this feature (unless they also revert their imapd.conf).

Security fixes

  • None so far

Significant bugfixes

  • Fixed Issue #4380: XFER to newer backends now assumes at least the current mailbox version, rather than the oldest supported mailbox version.

  • Fixed Issue #3771: Special-Use annotations lost on XFER

  • Fixed Issue #4187: ctl_mboxlist(8) can now detect and report broken UUID mailboxes. Thanks Matthias Hunstock.

  • Fixed Issue #4383: rolling squatter(8) only compacted its index databases at shutdown

  • Fixed Issue #4439: GETMETADATA wasn't proxied correctly to murder backends. Thanks Stéphane GAUBERT.