Upgrading Dovecot v2.3 to v2.3.x

Upgrading Dovecot v2.3.x to v2.3.7

  • fts-solr: The obsolete break-imap-search parameter is no longer recognized

Upgrading Dovecot v2.3.x to v2.3.12

Upgrading Dovecot v2.3.x to v2.3.14

  • Removed cydir storage format. It was never intended for production use.

  • Removed snarf plugin. It was for UW-IMAP’s mbox compatibility, which is unlikely to be needed anymore.

  • Removed mail_filter plugin. It was mainly intended as an example plugin.

  • Removed autocreate plugin. Use mailbox { auto } Mailbox Settings instead.

  • Removed expire plugin. Use mailbox { autoexpunge } Mailbox Settings instead.

  • Removed xz write support from zlib plugin. (Reading xz compressed mails is still supported.) Use another compression algorithm.

  • obox (fs-dictmap): Update configuration to support Cassandra max bucket ID safe shrinking behavior

Max Bucket ID Safe Shrinking


Only needed for obox + fs-dictmap installations.

To support Cassandra max bucket ID safe shrinking behavior, dovecot-dict-cql.conf.ext must get updated. The map for shared/dictmap/$user/mailboxes/$mailbox_guid/max_bucket must include the writetime of the last max_bucket update. See: fs-dictmap/Cassandra mappings for Object ID based storages.

This mapping update is downwards compatible and can be done independently of upgrading OX Dovecot Pro. It is not a schema update but rather fetching additional, already available, information from Cassandra using the built-in writetime functionality.

The issue solved by this change is that in a fs-dictmap installation (e.g., Cassandra+Scality), the max_bucket ID never shrinks. Buckets are used to prevent partitions in Cassandra becoming too big (each bucket is sized to keep 10,000 mails).

If a user receives a huge amount of mails and fills multiple buckets, the max_bucket id is incremented. If most of these mails are deleted again, this now larger max_bucket ID stays.

A big max_bucket id means one Cassandra SELECT per bucket < max_bucket. This happens whenever a folder is accessed for the first time in the metacache (after cleanup or backend change) and all the mails of this folder are listed.

Thus, this change means there could be less Cassandra SELECTs overall. This fix is automatically applied per user after a user’s folder has been accessed for the first time.

In order to prevent race conditions, the writetime of the last max_bucket ID is taken into account. This is why the change to the Dovecot Cassandra mapping configuration is necessary. The change of the mapping is downwards compatible so rollbacks to earlier versions are not complicated by this change.

Before 2.3.14, the max_bucket ID never shrunk, which means that there could be inefficient mailboxes with a higher max_bucket ID than actual filled buckets.

To be informed about shrinking, the fs_dictmap_max_bucket_changed event can be monitored.

Upgrading Dovecot v2.3.x to v2.3.15

  • ssl_min_protocol default changed to TLSv1.2, as older TLS versions are deprecated (see RFC 8996). Change it to TLSv1 or TLSv1.1 if you need to support older, deprecated protocols.

  • The ‘SNIPPET’ and ‘PREVIEW (w/explicit algorithm selection)’ IMAP commands have been deprecated. The new RFC 8970 compliant PREVIEW command should be exclusively used in the future.

  • fs-compress plugin now accept per-algorithm value.

  • zlib plugin now accepts per-algorithm value.

  • imap-zlib plugin now uses per-algorithm compression level settings. The old setting is ignored.

Upgrading Dovecot v2.3.x to v2.3.16

Upgrading Dovecot v2.3.x to v2.3.20

  • fts_stopwords_workaround has been introduced. The default for the setting, auto, activates some mitigations for the problem of some searches failing to retrieve the expected result when stopwords and multiple languages are used together. To revert to the pre 2.3.20 behavior, set fts_stopwords_workaround = no. See the setting description for more details.