Cyrus IMAP 3.8.0 Release Notes
******************************

Download from GitHub:

   * https://github.com/cyrusimap/cyrus-imapd/releases/download/cyrus-
     imapd-3.8.0/cyrus-imapd-3.8.0.tar.gz

   * https://github.com/cyrusimap/cyrus-imapd/releases/download/cyrus-
     imapd-3.8.0/cyrus-imapd-3.8.0.tar.gz.sig


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
===============

* None in 3.8.  But if your upgrade is skipping over 3.6, please do
  not miss 3.6.0 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.
