Dovecot Changelog

What's new in Dovecot 2.3.5.2

Apr 18, 2019
  • CVE-2019-10691: Trying to login with 8bit username containing invalid UTF8 input causes auth process to crash if auth policy is enabled. This could be used rather easily to cause a DoS. Similar crash also happens during mail delivery when using invalid UTF8 in From or Subject header when OX push notification driver is used.

New in Dovecot 2.3.5.1 (Mar 28, 2019)

  • CVE-2019-7524: Missing input buffer size validation leads into arbitrary buffer overflow when reading fts or pop3 uidl header from Dovecot index. Exploiting this requires direct write access to the index files.

New in Dovecot 2.3.5 (Mar 6, 2019)

  • Lua push notification driver: mail keywords and flags are provided in MessageNew and MessageAppend events.
  • submission: Implement support for plugins.
  • auth: When auth_policy_log_only=yes, only log what the policy server response would do without actually doing it.
  • auth: Always log policy server decisions with auth_verbose=yes
  • v2.3.[34]: doveadm log errors: Output was missing user/session
  • lda: Debug log lines could have shown slightly corrupted
  • login proxy: Login processes may have crashed in various ways when login_proxy_max_disconnect_delay was set.
  • imap: Fix crash with Maildir+zlib if client disconnects during APPEND
  • lmtp proxy: Fix potential assert-crash
  • lmtp/submission: Fix crash when SMTP client transaction times out
  • submission: Split large XCLIENT commands to 512 bytes per command, so Postfix accepts them.
  • submission: Fix crash when client sends invalid BURL command
  • submission: relay backend: VRFY command: Avoid forwarding 500 and 502 replies back to client.
  • lib-http: Fix potential assert-crash when DNS lookup fails
  • lib-fts: Fix search query generation when one language ignores a token (e.g. via stopwords).

New in Dovecot 2.3.4 (Nov 23, 2018)

  • Added push notification driver that uses a Lua script
  • Added new SQL, DNS and connection events. See https://wiki2.dovecot.org/Events
  • Added "doveadm mailbox cache purge" command.
  • Added events API support for Lua scripts
  • doveadm force-resync -f parameter performs "index fsck" while opening the index. This may be useful to fix some types of broken index files. This may become the default behavior in a later version.
  • director: Kicking a user crashes if login process is very slow
  • pop3_no_flag_updates=no: Don't expunge DELEted and RETRed messages unless QUIT is sent.
  • auth: Fix crypt() segfault with glibc-2.28+
  • imap: Running UID FILTER script with errors assert-crashes
  • dsync, pop3-migration: POP3 UIDLs weren't added to dovecot.index.cache while mails were saved.
  • dict clients may have been using 100% CPU while waiting for dict server to finish commands.
  • doveadm user: Fixed user listing via HTTP API
  • All levels of Cassandra log messages were logged as Dovecot errors.
  • http/smtp client may have crashed after SSL handshake
  • Lua auth converted strings that looked like numbers into numbers.

New in Dovecot 2.3.3 (Oct 1, 2018)

  • doveconf hides more secrets now in the default output.
  • ssl_dh setting is no longer enforced at startup. If it's not set and non-ECC DH key exchange happens, error is logged and client is disconnected.
  • Added log_debug= setting.
  • Added log_core_filter= setting.
  • quota-clone: Write to dict asynchronously
  • --enable-hardening attempts to use retpoline Spectre 2 mitigations
  • lmtp proxy: Support source_ip passdb extra field.
  • doveadm stats dump: Support more fields and output stddev by default.
  • push-notification: Add SSL support for OX backend.
  • NUL bytes in mail headers can cause truncated replies when fetched.
  • director: Conflicting host up/down state changes may in some rare situations ended up in a loop of two directors constantly overwriting each others' changes.
  • director: Fix hang/crash when multiple doveadm commands are being handled concurrently.
  • director: Fix assert-crash if doveadm disconnects too early
  • virtual plugin: Some searches used 100% CPU for many seconds
  • dsync assert-crashed with acl plugin in some situations.
  • mail_attachment_detection_options=add-flags-on-save assert-crashed with some specific Sieve scripts.
  • Mail snippet generation crashed with mails containing invalid Content-Type:multipart header.
  • Log prefix ordering was different for some log lines.
  • quota: With noenforcing option current quota usage wasn't updated.
  • auth: Kerberos authentication against Samba assert-crashed.
  • stats clients were unnecessarily chatty with the stats server.
  • imapc: Fixed various assert-crashes when reconnecting to server.
  • lmtp, submission: Fix potential crash if client disconnects while handling a command.
  • quota: Fixed compiling with glibc-2.26 / support libtirpc.
  • fts-solr: Empty search values resulted in 400 Bad Request errors
  • fts-solr: default_ns parameter couldn't be used
  • submission server crashed if relay server returned over 7 lines in a reply (e.g. to EHLO)

New in Dovecot 2.3.0 (Dec 27, 2017)

  • Various setting changes, see https://wiki2.dovecot.org/Upgrading/2.3
  • Logging rewrite started: Logging is now based on hierarchical events. This makes it possible to do various things, like: 1) givingnconsistent log prefixes, 2) enabling debug logging with finer granularity, 3) provide logs in more machine readable formats. (e.g. json). Everything isn't finished yet, especially a lot of the old logging code still needs to be translated to the new way.
  • Statistics rewrite started: Stats are now based on (log) events. It's possible to gather statistics about any event that is logged. See http://wiki2.dovecot.org/Statistics for details
  • ssl_dh setting replaces the old generated ssl-parameters.dat
  • IMAP: When BINARY FETCH finds a broken mails, send [PARSE] error instead of [UNKNOWNCTE]
  • Linux: core dumping via PR_SET_DUMPABLE is no longer enabled by default due to potential security reasons (found by cPanel Security Team).
  • Added support for SMTP submission proxy server, which includes support for BURL and CHUNKING extension.
  • LMTP rewrite. Supports now CHUNKING extension and mixing of local/proxy recipients.
  • auth: Support libsodium to add support for ARGON2I and ARGON2ID password schemes.
  • auth: Support BLF-CRYPT password scheme in all platforms
  • auth: Added LUA scripting support for passdb/userdb. See https://wiki2.dovecot.org/AuthDatabase/Lua
  • Input streams are more reliable now when there are errors or when the maximum buffer size is reached. Previously in some situations this could have caused Dovecot to try to read already freed memory.
  • Output streams weren't previously handling failures when writing a trailer at the end of the stream. This mainly affected encrypt and zlib compress ostreams, which could have silently written truncated files if the last write happened to fail (which shouldn't normally have ever happened).
  • virtual plugin: Fixed panic when fetching mails from virtual mailboxes with IMAP BINARY extension.
  • doveadm-server: Fix potential hangs with SSL connections
  • doveadm proxy: Reading commands' output from v2.2.33+ servers could have caused the output to be corrupted or caused a crash.
  • Many other smaller fixes

New in Dovecot 2.3.0 RC1 (Dec 27, 2017)

  • Various setting changes, see https://wiki2.dovecot.org/Upgrading/2.3
  • Logging rewrite started: Logging is now based on hierarchical events. This makes it possible to do various things, like: 1) giving consistent log prefixes, 2) enabling debug logging with finer granularity, 3) provide logs in more machine readable formats (e.g. json). Everything isn't finished yet, especially a lot of the old logging code still needs to be translated to the new way.
  • Statistics rewrite started: Stats are now based on (log) events. It's possible to gather statistics about any event that is logged. See http://wiki2.dovecot.org/Statistics for details
  • ssl_dh setting replaces the old generated ssl-parameters.dat
  • IMAP: When BINARY FETCH finds a broken mails, send [PARSE] error instead of [UNKNOWNCTE]
  • Linux: core dumping via PR_SET_DUMPABLE is no longer enabled by default due to potential security reasons (found by cPanel Security Team).
  • Added support for SMTP submission proxy server, which includes support for BURL and CHUNKING extension.
  • LMTP rewrite. Supports now CHUNKING extension and mixing of local/proxy recipients.
  • auth: Support libsodium to add support for ARGON2I and ARGON2ID password schemes.
  • auth: Support BLF-CRYPT password scheme in all platforms
  • auth: Added LUA scripting support for passdb/userdb. See https://wiki2.dovecot.org/AuthDatabase/Lua
  • Input streams are more reliable now when there are errors or when the maximum buffer size is reached. Previously in some situations this could have caused Dovecot to try to read already freed memory.
  • Output streams weren't previously handling failures when writing a trailer at the end of the stream. This mainly affected encrypt and zlib compress ostreams, which could have silently written truncated files if the last write happened to fail (which shouldn't normally have ever happened).
  • virtual plugin: Fixed panic when fetching mails from virtual mailboxes with IMAP BINARY extension.
  • Many other smaller fixes

New in Dovecot 2.2.29.1 (Apr 12, 2017)

  • imapc reconnection fix was forgotten from 2.2.29 release, which also made "make check" fail in a unit test
  • dict-sql: Merging multiple UPDATEs to a single statement wasn't actually working.
  • Fixed building with vpopmail

New in Dovecot 2.2.29 (Apr 11, 2017)

  • passdb/userdb dict: Don't double-expand %variables in keys. If dict was used as the authentication passdb, using specially crafted %variables in the username could be used to cause DoS (CVE-2017-2669)
  • When Dovecot encounters an internal error, it logs the real error and usually logs another line saying what function failed. Previously the second log line's error message was a rather uninformative "Internal error occurred. Refer to server log for more information." Now the real error message is duplicated in this second log line.
  • lmtp: If a delivery has multiple recipients, run autoexpunging only for the last recipient. This avoids a problem where a long autoexpunge run causes LMTP client to timeout between the DATA replies, resulting in duplicate mail deliveries.
  • config: Don't stop the process due to idling. Otherwise the configuration is reloaded when the process restarts.
  • mail_log plugin: Differentiate autoexpunges from regular expunges
  • imapc: Use LOGOUT to cleanly disconnect from server.
  • lib-http: Internal status codes (>9000) are no longer visible in logs
  • director: Log vhost count changes and HOST-UP/DOWN
  • quota: Add plugin { quota_max_mail_size } setting to limit the maximum individual mail size that can be saved.
  • imapc: Add imapc_features=delay-login. If set, connecting to the remote IMAP server isn't done until it's necessary.
  • imapc: Add imapc_connection_retry_count and imapc_connection_retry_interval settings.
  • imap, pop3, indexer-worker: Add (deinit) to process title before autoexpunging runs.
  • Added %{encrypt} and %{decrypt} variables
  • imap/pop3 proxy: Log proxy state in errors as human-readable string.
  • imap/pop3-login: All forward_ extra fields returned by passdb are sent to the next hop when proxying using ID/XCLIENT commands. On the receiving side these fields are imported and sent to auth process where they're accessible via %{passdb:forward_*}. This is done only if the sending IP address matches login_trusted_networks.
  • imap-login: If imap_id_retain=yes, send the IMAP ID string to auth process. %{client_id} expands to it in auth process. The ID string is also sent to the next hop when proxying.
  • passdb imap: Use ssl_client_ca_ settings for CA validation.
  • fts-tika: Fixed crash when parsing attachment without Content-Disposition header. Broken by 2.2.28.
  • trash plugin was broken in 2.2.28
  • auth: When passdb/userdb lookups were done via auth-workers, too much data was added to auth cache. This could have resulted in wrong replies when using multiple passdbs/userdbs.
  • auth: passdb { skip & mechanisms } were ignored for the first passdb
  • oauth2: Various fixes, including fixes to crashes
  • dsync: Large Sieve scripts (or other large metadata) weren't always synced.
  • Index rebuild (e.g. doveadm force-resync) set all mails as Recent
  • imap-hibernate: %{userdb:*} wasn't expanded in mail_log_prefix
  • doveadm: Exit codes weren't preserved when proxying commands via doveadm-server. Almost all errors used exit code 75 (tempfail).
  • ACLs weren't applied to not-yet-existing autocreated mailboxes.
  • Fixed a potential crash when parsing a broken message header.
  • cassandra: Fallback consistency settings weren't working correctly.
  • doveadm director status : "Initial config" was always empty
  • imapc: Various reconnection fixes.

New in Dovecot 2.2.28 (Feb 25, 2017)

  • director: "doveadm director move" to same host now refreshes user's timeout. This allows keeping user constantly in the same backend by just periodically moving the user there.
  • When new mailbox is created, use initially INBOX's dovecot.index.cache caching decisions.
  • Expunging mails writes GUID to dovecot.index.log now only if the GUID is quickly available from index/cache.
  • pop3c: Increase timeout for PASS command to 5 minutes.
  • Mail access errors are no longer ignored when searching or sorting. With IMAP the untagged SEARCH/SORT reply is still sent the same as before, but NO reply is returned instead of OK.
  • Make dovecot.list.index's filename configurable. This is needed when there are multiple namespaces pointing to the same mail root (e.g. lazy_expunge namespace for mdbox).
  • Add size.virtual to dovecot.index when folder vsizes are accessed (e.g. quota=count). This is mainly a workaround to avoid slow quota recalculation performance when message sizes get lost from dovecot.index.cache due to corruption or some other reason.
  • auth: Support OAUTHBEARER and XOAUTH2 mechanisms. Also support them in lib-dsasl for client side.
  • auth: Support filtering by SASL mechanism: passdb { mechanisms }
  • Shrink the mail processes' memory usage by not storing settings duplicated unnecessarily many times.
  • imap: Add imap_fetch_failure setting to control what happens when FETCH fails for some mails (see example-config).
  • imap: Include info about last command in disconnection log line.
  • imap: Created new SEARCH=X-MIMEPART extension. It's currently not advertised by default, since it's not fully implemented.
  • fts-solr: Add support for basic authentication.
  • Cassandra: Support automatically retrying failed queries if execution_retry_interval and execution_retry_times are set.
  • doveadm: Added "mailbox path" command.
  • mail_log plugin: If plugin { mail_log_cached_only=yes }, log the wanted fields only if it doesn't require opening the email.
  • mail_vsize_bg_after_count setting added (see example-config).
  • mail_sort_max_read_count setting added (see example-config).
  • pop3c: Added pop3c_features=no-pipelining setting to prevent using PIPELINING extension even though it's advertised.
  • Index files: day_first_uid wasn't updated correctly since v2.2.26. This caused dovecot.index.cache to be non-optimal.
  • imap: SEARCH/SORT may have assert-crashed in client_check_command_hangs
  • imap: FETCH X-MAILBOX may have assert-crashed in virtual mailboxes.
  • imap: Running time in tagged command reply was often wrongly 0.
  • search: Using NOT n:* or NOT UID n:* wasn't handled correctly
  • director: doveadm director kick was broken
  • director: Fix crash when using director_flush_socket
  • director: Fix some bugs when moving users between backends
  • imapc: Various error handling fixes and improvements
  • master: doveadm process status output had a lot of duplicates.
  • autoexpunge: If mailbox's rename timestamp is newer than mail's save-timestamp, use it instead. This is useful when autoexpunging e.g. Trash/* and an entire mailbox is deleted by renaming it under Trash to prevent it from being autoexpunged too early.
  • autoexpunge: Multiple processes may have been trying to expunge the same mails simultaneously. This was problematic especially with lazy_expunge plugin.
  • auth: %{passdb:*} was empty in auth-worker processes
  • auth-policy: hashed_password was always sent empty.
  • dict-sql: Merge multiple UPDATEs to a single statement if possible.
  • fts-solr: Escape {} chars when sending queries
  • fts: fts_autoindex_exclude = Special-use caused crashes
  • doveadm-server: Fix leaks and other problems when process is reused for multiple requests (service_count != 1)
  • sdbox: Fix assert-crash on mailbox create race
  • lda/lmtp: deliver_log_format values weren't entirely correct if Sieve was used. especially %{storage_id} was broken.
  • lmtp_user_concurrency_limit didn't work if userdb changed username

New in Dovecot 2.2.27 (Dec 4, 2016)

  • Added mail_crypt plugin that allows encryption of stored emails. See http://wiki2.dovecot.org/Plugins/MailCrypt
  • stats: Global stats can be sent to Carbon server by setting stats_carbon_server=ip:port
  • imap/pop3 proxy: If passdb returns proxy_not_trusted, don't send ID/XCLIENT
  • Added generic hash modifier for %variables: %{;rounds=,truncate=,salt=s>:field} Hash algorithm is any of the supported ones, e.g. md5, sha1, sha256. Also "pkcs5" is supported using SHA256. For example: %{sha256:user} or %{md5;truncate=32:user}.
  • Added support for SHA3-256 and SHA3-512 hashes.
  • config: Support DNS wildcards in local_name, e.g. local_name *.example.com { .. } matches anything.example.com, but not multiple.anything.example.com.
  • config: Support multiple names in local_name, e.g. local_name "1.example.com 2.example.com" { .. }
  • Fixed crash in auth process when auth-policy was configured and authentication was aborted/failed without a username set.
  • director: If two users had different tags but the same hash, the users may have been redirected to the wrong tag's hosts.
  • Index files may have been thought incorrectly lost, causing "Missing middle file seq=.." to be logged and index rebuild. This happened more easily with IMAP hibernation enabled.
  • Various fixes to restoring state correctly in un-hibernation.
  • dovecot.index files were commonly 4 bytes per email too large. This is because 3 bytes per email were being wasted that could have been used for IMAP keywords.
  • Various fixes to handle dovecot.list.index corruption better.
  • lib-fts: Fixed assert-crash in address tokenizer with specific input.
  • Fixed assert-crash in HTML to text parsing with specific input (e.g. for FTS indexing or snippet generation)
  • doveadm sync -1: Fixed handling mailbox GUID conflicts.
  • sdbox, mdbox: Perform full index rebuild if corruption is detected inside lib-index, which runs index fsck.
  • quota: Don't skip quota checks when moving mails between different quota roots.
  • search: Multiple sequence sets or UID sets in search parameters weren't handled correctly. They were incorrectly merged together.

New in Dovecot 2.2.26.0 (Oct 29, 2016)

  • Fixed some compiling issues.
  • auth: Fixed assert-crash when using NTLM or SKEY mechanisms and multiple passdbs.
  • auth: Fixed crash when exporting to auth-worker passdb extra fields that had empty values.
  • dsync: Fixed assert-crash in dsync_brain_sync_mailbox_deinit

New in Dovecot 2.2.23 (Mar 31, 2016)

  • Various fixes to doveadm. Especially running commands via doveadm-server was broken.
  • director: Fixed user weakness getting stuck in some situations
  • director: Fixed a situation where directors keep re-sending different states to each others and never becoming synced.
  • director: Fixed assert-crash related to a slow "user killed" reply
  • Fixed assert-crash related to istream-concat, which could have been triggered at least by a Sieve script.

New in Dovecot 2.2.22 (Mar 16, 2016)

  • Added doveadm HTTP API: See http://wiki2.dovecot.org/Design/DoveadmProtocol/HTTP
  • virtual plugin: Mailbox filtering can now be done based on the mailbox metadata. See http://wiki2.dovecot.org/Plugins/Virtual
  • stats: Added doveadm stats reset to reset global stats.
  • stats: Added authentication statistics if auth_stats=yes.
  • dsync, imapc, pop3c & pop3-migration: Many optimizations, improvements and error handling fixes.
  • doveadm: Most commands now stop soon after SIGINT/SIGTERM.
  • auth: Auth caching was done too aggressively when %variables were used in default_fields, override_fields or LDAP pass/user_attrs. userdb result_* were also ignored when user was found from cache.
  • imap: Fixed various assert-crashes caused v2.2.20+. Some of them caught actual hangs or otherwise unwanted behavior towards IMAP clients.
  • Expunges were forgotten in some situations, for example when pipelining multiple IMAP MOVE commands.
  • quota: Per-namespaces quota were broken for dict and count backends in v2.2.20+
  • fts-solr: Search queries were using OR instead of AND as the separator for multi-token search queries in v2.2.20+.
  • Single instance storage support wasn't really working in v2.2.16+
  • dbox: POP3 message ordering wasn't working correctly.
  • virtual plugin: Fixed crashes related to backend mailbox deletions.

New in Dovecot 2.2.21 (Dec 11, 2015)

  • doveadm mailbox list (and some others) were broken in v2.2.20
  • director: Fixed making backend changes when running with only a single director server.
  • virtual plugin: Fixed crash when trying to open nonexistent autocreated backend mailbox.

New in Dovecot 2.2.20 (Dec 8, 2015)

  • Added mailbox { autoexpunge= } setting. See http://wiki2.dovecot.org/MailboxSettings for details.
  • ssl_options: Added support for no_ticket
  • imap/pop3/managesieve-login: Added postlogin_socket=path passdb extra field. This allows replacing the default service imap/pop3/managesieve {} settings for specific users (e.g. running their imap process via valgrind or strace).
  • doveadm fetch: Added date.sent/received/saved.unixtime
  • fs-posix: Added mode=auto parameter to set the created files' and directories' mode based on the parent dir if it has setgid-bit.
  • director: Support backends having hostnames, which makes it possible to verify their SSL certificates.
  • director: Directors' state became desynchronized if doveadm director commands were used to modify the same backend in multiple directors at the same time with conflicting changes. This fix includes some extra checks, which makes sure that if such a conflict still happens it's automatically fixed. In some situations such an automatic fix may now be unnecessarily triggered and an error logged.
  • director: Backend tags weren't working correctly.
  • ldap: tls_* settings weren't used for ldaps URIs.
  • ldap, mysql: Fixed setting connect timeout.
  • auth: userdb lookups via auth-worker couldn't change username
  • dsync: Fixed handling deleted directories. Make sure we don't go to infinite mailbox renaming loop.
  • imap: Fixed crash in NOTIFY when there were watched namespaces that didn't support NOTIFY.
  • imap: After SETMETADATA was used, various commands (especially FETCH) could have started hanging when their output was large.
  • stats: Idle sessions weren't refreshed often enough, causing stats process to forget them and log errors about unknown sessions when they were updated later.
  • stats: Fixed "Duplicate session ID" errors when LMTP delivered to multiple recipients and fts_autoindex=yes.
  • zlib plugin: Fixed copying causing cache corruption when zlib_save wasn't set, but the source message was compressed.
  • fts-solr: Fixed escaping Solr query parameters.
  • lmtp: quota_full_tempfail=yes was ignored with lmtp_rcpt_check_quota=yes

New in Dovecot 2.2.19 (Oct 5, 2015)

  • pop3_deleted_flag has been broken since v2.2.10. Using it would cause buffer overflows, which could be exploitable. However, this bug would have become visible quite soon after users had deleted some POP3 mails, because the pop3 processes would have started crashing all the time even in normal use.
  • "doveadm director flush" command has a changed meaning now: It safely moves users to their wanted backends, instead of simply forgetting the mapping entirely and leaving the existing connections untouched. Use -F parameter to get the original unsafe behavior.
  • Added imap-hibernate processes (see imap_hibernate_timeout setting). IDLEing IMAP connections can be hibernated, which saves memory.
  • Optimized tracking mailboxes' vsizes (= sum of all messages' sizes). If mailbox_list_index=yes, it's also stored in there. This makes it very efficient to look up vsizes for all mailboxes.
  • Added a quota "count" backend, which uses the mailbox vsizes to get the current quota usage. It requires using the new quota_vsizes=yes setting, which tracks the messages' "virtual sizes" rather than "physical sizes". Their distiction is minor and mostly irrelevant nowadays (if mail sizes should be counted with LF or CRLF newlines).
  • "doveadm director up/down" commands added. The monitoring script should be using these commands instead of changing the vhost count. This allows admin to manually disable a server by changing the vhost count to 0 without the monitoring script changing it back.
  • Added support for HAProxy protocol: http://wiki2.dovecot.org/HAProxy
  • Added push-notification plugin framework, which can be used to easily implement push notifications to various backends. Implemented "ox" backend for notifying Open-Xchange via HTTP/json.
  • imap_logout_format supports more variables now, e.g. number of deleted messages.
  • pop3: Added pop3_delete_type setting (related to pop3_deleted_flag).
  • plugin { fts_enforced=yes } setting now fails body searches unless it can be done via the full text search engine.
  • Added %{passdb:*} and %{userdb:*} variables to various places
  • auth: Added ":protected" suffix for passdb and userdb fields. If used, the field doesn't overwrite an existing field.
  • IMAP/POP3 proxy: If a backend server dies, avoid client reconnection spikes by slowly disconnecting clients over time. This is enabled by setting login_proxy_max_disconnect_delay=secs passdb extra field.
  • imap: Added new read-only METADATA entries: /private/specialuse, /shared/comment, /shared/admin
  • imap: If client disconnects in the middle of a command, log how long the command had been running.
  • mdbox: Rebuilding could have caused message's reference count to overflow the 16bit number in some situations, causing problems when trying to expunge the duplicates.
  • Various search fixes (fts, solr, tika, lib-charset, indexer)
  • Various virtual plugin fixes
  • Various fixes and optimizations to dsync, imapc and pop3-migration
  • imap: Various RFC compliancy and crash fixes to NOTIFY

New in Dovecot 2.2.18 (May 15, 2015)

  • director: Login UNIX sockets were normally detected as doveadm or director ring sockets, causing it to break in existing installations.
  • sdbox: When copying a mail in alt storage, place the destination to alt storage as well.

New in Dovecot 2.2.17 (May 13, 2015)

  • Dovecot no longer checks or warns if a mountpoint is removed. This was causing more trouble than it was worth. Make sure that all the mountpoints that Dovecot accesses aren't writable by mail processes when they're unmounted.
  • dict server wasn't properly escaping/unescaping data. Fixing this broke backwards compatibility with data that contains line feeds. This hopefully affects only very few installations. If you're using dict to save multiline data (Sieve scripts to SQL), you may be affected.
  • imap: SPECIAL-USE capability is no longer advertised if there are no special_use flags specified for any mailboxes.
  • lmtp: Added lmtp_hdr_delivery_address setting to specify whether to include email address in Delivered-To: and Received: headers.
  • Added initial version of full text search library, which includes language-specific text normalization and filtering. This is still in development, but it's already possible to use for testing with fts-lucene and fts-solr.
  • lda, lmtp: deliver_log_format can now include %{delivery_time}, which expands to how many milliseconds it took to deliver the mail. With LMTP %{session_time} also expands to how many milliseconds the LMTP session took, not including the delivery time.
  • lmtp proxy: Mail delivery logging includes timing information.
  • imap: Most IMAP commands now include in the tagged reply how many milliseconds it took to run the command (not counting the time spent on waiting for the IMAP client to read/write data).
  • director: Implemented director_proxy_maybe passdb extra field to be able to run director and backend in the same Dovecot instance. (LMTP doesn't support mixed proxy/non-proxy destinations currently.)
  • doveadm: Added -F parameter to read a list of users from the given file and run the command for all the users. This is similar to -A parameter reading the list of users from userdb lookup.
  • Implemented initial Cassandra CQL support as lib-sql backend. It's only usable as dict backend currently.
  • Added quota-clone plugin to copy current quota usage to a dict.
  • auth: If auth_master_user_separator was set, auth process could be crashed by trying to log in with empty master username.
  • imap-login, pop3-login: Fixed crash on handshake failures with new OpenSSL versions (v1.0.2) when SSLv3 was disabled.
  • auth: If one passdb fails allow_nets check, it shouldn't have failed all the other passdb checks later on.
  • imap: Server METADATA couldn't be accessed
  • imapc: Fixed \Muted label handling in gmail-migration.
  • imapc: Various bugfixes and improvements.
  • Trash plugin fixes by Alexei Gradinari
  • mbox: Fixed crash/corruption in some situations

New in Dovecot 2.2.16 (Mar 13, 2015)

  • dbox: Resyncing (e.g. doveadm force-resync) no longer deletes dovecot.index.cache file. The cache file was rarely the problem so this just caused unnecessary slowness.
  • Mailbox name limits changed during mailbox creation: Each part of a hierarchical name (e.g. "x" or "y" in "x/y") can now be up to 255 chars long (instead of 200). This also reduces the max number of hierarchical levels to 16 (instead of 20) to keep the maximum name length 4096 (a common PATH_MAX limit). The 255 char limit is hopefully large enough for migrations from all existing systems. It's also the limit on many filesystems.
  • director: Added director_consistent_hashing setting to enable consistent hashing (instead of the mostly-random MD5 hashing). This causes fewer user moves between backends when backend counts are changed, which may improve performance (mainly due to caching).
  • director: Added support for "tags", which allows one director ring to serve multiple backend clusters with different sets of users.
  • LMTP server: Added lmtp_user_concurrency_limit setting to limit how many LMTP deliveries can be done concurrently for a single user.
  • LMTP server: Added support for STARTTLS command.
  • If logging data is generated faster than it can be written, log a warning about it and show information about it in log process's process title in ps output. Also don't allow a single service to flood too long at the cost of delaying other services' logging.
  • stats: Added support for getting global statistics.
  • stats: Use the same session IDs as the rest of Dovecot.
  • stats: Plugins can now create their own statistics fields
  • doveadm server: Non-mail related commands can now also be used via doveadm server (TCP socket).
  • doveadm proxying: passdb lookup can now override doveadm_port and change the username.
  • doveadm: Search query supports now "oldestonly" parameter to stop immediately on the first non-match. This can be used to optimize: doveadm expunge mailbox Trash savedbefore 30d oldestonly
  • doveadm: Added "save" command to directly save mails to specified mailbox (bypassing Sieve).
  • doveadm fetch: Added body.snippet field, which returns the first 100 chars of a message without whitespace or HTML tags. The result is stored into dovecot.index.cache, so it can be fetched efficiently.
  • dsync: Added -t parameter to sync only mails newer than the given received-timestamp.
  • dsync: Added -F [-] parameter to sync only mails with[out] the given flag/keyword.
  • dsync: Added -a parameter to specify the virtual mailbox containing user's all mails. If this mailbox is already found to contain the wanted mail (by its GUID), the message is copied from there instead of being re-saved. (This isn't efficient enough yet for incremental replication.)
  • dsync: -m parameter can now specify \Special-use names for mailboxes.
  • imapc: Added imapc_features=gmail-migration to help migrations from GMail. See http://wiki2.dovecot.org/Migration/Gmail
  • imapc: Added imapc_features=search to support IMAP SEARCH command. (Currently requires ESEARCH support from remote server.)
  • expire plugin: Added expire_cache=yes setting to cache most of the database lookups in dovecot index files.
  • quota: If overquota-flag in userdb doesn't match the current quota usage, execute a configured script.
  • redis dict: Added support for expiring keys (:expire_secs=n) and specifying the database number (:db=n)
  • auth: Don't crash if master user login is attempted without any configured master=yes passdbs
  • Parsing UTF-8 text for mails could have caused broken results sometimes if buffering was split in the middle of a UTF-8 character. This affected at least searching messages.
  • String sanitization for some logged output wasn't done properly: UTF-8 text could have been truncated wrongly or the truncation may not have happened at all.
  • fts-lucene: Lookups from virtual mailbox consisting of over 32 physical mailboxes could have caused crashes.

New in Dovecot 2.2.15 (Oct 25, 2014)

  • Plugins can now print a banner comment in doveconf output (typically the plugin version)
  • Replication plugin now triggers low (instead of high) priority for mail copying operations.
  • IMAP/POP3/ManageSieve proxy: If destination server can't be connected to, retry connecting once per second up to the value of proxy_timeout. This allows quick restarts/upgrades on the backend server without returning login failures.
  • Internal passdb lookups (e.g. done by lmtp/doveadm proxy) wasn't returning failure in some situations where it should have (e.g. allow_nets mismatch)
  • LMTP uses mail_log_prefix now for logging mail deliveries instead of a hardcoded prefix. The non-delivery log prefix is still hardcoded though.
  • passdb allow_nets=local matches lookups that don't contain an IP address (internally done by Dovecot services)
  • Various debug logging and error logging improvements
  • Various race condition fixes to LAYOUT=index
  • v2.2.14 virtual plugin crashed in some situations

New in Dovecot 2.2.14 (Oct 15, 2014)

  • Some of the more important fixes since RC1:
  • Fixed several race conditions with dovecot.index.cache handling that may have caused unnecessary "cache is corrupted" errors.
  • auth: If auth client listed userdb and disconnected before finishing, the auth worker process got stuck (and eventually all workers could get used up and requests would start failing).
  • Some of the larger changes since v2.2.13:
  • lmtp: Delivered-To: header no longer contains around the email address. Other MDAs don't have it either.
  • "Out of disk space" errors are now treated as temporary errors (not the same as "Out of disk quota").
  • replication plugin: Use replication only for users who have a non-empty mail_replica setting.
  • lmtp proxy: Log a line about each mail delivery.Added login_source_ips setting. This can be used to set the source IP address round-robin from a pool of IPs (in case you run out of TCP ports).Rawlog settings can use tcp:: as the path.virtual plugin: Don't keep more than virtual_max_open_mailboxes (default 64) number of backend mailboxes open.SSL/TLS compression can be disabled with ssl_options=no_compressionacl: Global ACL file now supports "quotes" around patterns.Added last-login plugin to set user's last-login timestamp on login.LDAP auth: Allow passdb credentials lookup also with auth_bind=yes
  • IMAP: MODSEQ was sent in FETCH reply even if CONDSTORE/QRESYNC wasn't enabled. This broke at least old Outlooks.
  • passdb static treated missing password field the same as an empty password field.
  • mdbox: Fixed potential infinite looping when scanning a broken mdbox file.
  • imap-login, pop3-login: Fixed potential crashes when client disconnected unexpectedly.
  • imap proxy: The connection was hanging in some usage patterns. This mainly affected older Outlooks.
  • lmtp proxy: The proxy sometimes delivered empty mails in error situations or potentially delivered truncated mails.
  • fts-lucene: If whitespace_chars was set, we may have ended up indexing some garbage words, growing the index size unnecessarily.
  • -c and -i parameters for dovecot/doveadm commands were ignored if the config socket was readable.
  • quota: Quota recalculation didn't include INBOX in some setups.
  • Mail headers were sometimes added to dovecot.index.cache in wrong order. The main problem this caused was with dsync+imapc incremental syncing when the second sync thought the local mailbox had changed.
  • doveadm backup didn't notice if emails were missing from the middle of the destination mailbox. Now it deletes and resyncs the mailbox.

New in Dovecot 2.2.11 (Feb 12, 2014)

  • acl plugin: Added an alternative global ACL file that can contain mailbox patterns. See http://wiki2.dovecot.org/ACL for details.
  • imap proxy: Added proxy_nopipelining passdb setting to work around other IMAP servers' bugs (MS Exchange 2013 especially).
  • Added %{auth_user}, %{auth_username} and %{auth_domain} variables. See http://wiki2.dovecot.org/Variables for details.
  • Added support for LZ4 compression.
  • stats: Track also wall clock time for commands.
  • pop3_migration plugin improvements to try harder to match the UIDLs correctly.
  • imap: SEARCH/SORT PARTIAL reponses may have been too large.
  • doveadm backup: Fixed assert-crash when syncing mailbox deletion.

New in Dovecot 2.2.10 (Dec 20, 2013)

  • auth: passdb/userdb dict rewrite to support much more complex setups. See doc/example-config/dovecot-dict-auth.conf.ext. The old settings will continue to work.
  • auth: Added userdb result_success/failure/tempfail and skip settings, similar to passdb's. See http://wiki2.dovecot.org/UserDatabase
  • imap: Implemented SETQUOTA command for admin user when quota_set is configured. See http://master.wiki2.dovecot.org/Quota/Configuration
  • quota: Support "*" and "?" wildcards in mailbox names in quota_rules
  • mysql: Added ssl_verify_server_cert=no|yes parameter. This currently defaults to "no" to make sure nothing breaks, but likely will become "yes" in Dovecot v2.3.
  • ldap: Added blocking=yes setting to use auth worker processes for ldap lookups. This is a workaround for now to be able to use multiple simultaneous LDAP connections.
  • pop3c+dsync performance improvements
  • quota-status: quota_grace was ignored
  • ldap: Fixed memory leak with auth_bind=yes and without auth_bind_userdn.
  • imap: Don't send HIGHESTMODSEQ anymore on SELECT/EXAMINE when CONDSTORE/QRESYNC has never before been enabled for the mailbox.
  • imap: Fixes to handling mailboxes without permanent modseqs. (When [NOMODSEQ] is returned by SELECT, mainly with in-memory indexes.)
  • imap: Various fixes to METADATA support.
  • stats plugin: Processes that only temporarily dropped privileges (e.g. indexer-worker) may have been logging errors about not being able to open /proc/self/io.

New in Dovecot 2.2.9 (Nov 26, 2013)

  • Full text search indexing can now be done automatically after saving/copying mails by setting plugin { fts_autoindex=yes }
  • replicator: Added replication_dsync_parameters setting to pass "doveadm sync" parameters (for controlling what to replicate).
  • Added mail-filter plugin
  • Added liblzma/xz support (zlib_save=xz)
  • v2.2.8's improved cache file handling exposed several old bugs related to fetching mail headers.
  • v2.2.7's iostream handling changes were causing some connections to be disconnected before flushing their output (e.g. POP3 logout message wasn't being sent)

New in Dovecot 2.2.8 (Nov 20, 2013)

  • Some usage of passdb checkpassword could have been exploitable by local users. You may need to modify your setup to keep it working. See http://wiki2.dovecot.org/AuthDatabase/CheckPassword#Security

New in Dovecot 2.2.7 (Nov 4, 2013)

  • Some usage of passdb checkpassword could have been exploitable by local users. You may need to modify your setup to keep it working. See http://wiki2.dovecot.org/AuthDatabase/CheckPassword#Security
  • auth: Added ability to truncate values logged by auth_verbose_passwords (see 10-logging.conf comment)
  • mdbox: Added "mdbox_deleted" storage, which can be used to access messages with refcount=0. For example: doveadm import mdbox_deleted:~/mdbox "" mailbox inbox subject oops
  • ssl-params: Added ssl_dh_parameters_length setting.
  • master process was doing a hostname.domain lookup for each created process, which may have caused a lot of unnecessary DNS lookups.
  • dsync: Syncing over 100 messages at once caused problems in some situations, causing messages to get new UIDs.
  • fts-solr: Different Solr hosts for different users didn't work.

New in Dovecot 2.2.6 (Sep 26, 2013)

  • acl: If public/shared namespace has a shared subscriptions file for all users, don't list subscription entries that are not visible to the user accessing it.
  • doveadm: Added "auth lookup" command for doing passdb lookup.
  • login_log_format_elements: Added %{orig_user}, %{orig_username} and %{orig_domain} expanding to the username exactly as sent by the client (before any changes auth process made).
  • Added ssl_prefer_server_ciphers setting.
  • auth_verbose_passwords: Log the password also for unknown users.
  • Linux: Added optional support for SO_REUSEPORT with inet_listener { reuse_port=yes }
  • director: v2.2.5 changes caused "SYNC lost" errors
  • dsync: Many fixes and error handling improvements
  • doveadm -A: Don't waste CPU by doing a separate config lookup for each user
  • Long-running ssl-params process no longer prevents Dovecot restart
  • mbox: Fixed mailbox_list_index=yes to work correctly

New in Dovecot 2.2.5 (Aug 6, 2013)

  • SSL: Added support for ECDH/ECDHE cipher suites (by David Hicks)
  • Added some missing man pages (by Pascal Volk)
  • quota-status: Added quota_status_toolarge setting (by Ulrich Zehl)
  • director: Users near expiration could have been redirected to different servers at the same time.
  • pop3: Avoid assert-crash if client disconnects during LIST.
  • mdbox: Corrupted index header still wasn't automatically fixed.
  • dsync: Various fixes to work better with imapc and pop3c storages.
  • ldap: sasl_bind=yes caused crashes, because Dovecot's lib-sasl symbols conflicted with Cyrus SASL library.
  • imap: Various error handling fixes to CATENATE. (Found using Apple's stress test script.)

New in Dovecot 2.2.3 (Jun 17, 2013)

  • LDA/LMTP: If new mail delivery first fails with "temporary failure", tempfail the whole delivery instead of falling back to delivering the mail to INBOX. (Requires new Pigeonhole as well.) * doc/solr-schema.xml was updated to Solr v4.x format. Also the default analyzers were changed, hopefully for the better. Note that the schema can't be changed for existing Solr indexes without rebuilding everything. * Solr plugin does only soft commits from now on. You'll need a cronjob to send a hard commit command to it every few minutes.
  • Added %N modifier for variables as %H-like "new hash"
  • sdbox, mdbox: Support POP3 message order field (for migrations)
  • Added mailbox { driver } to specify a different mail storage format for the mailbox than generally used within the namespace.
  • Added initial lib-sasl library for client side SASL support. Currently supports only PLAIN, LOGIN and plugins. Used currently by IMAP and POP3 proxying when authenticating to the remote server.
  • IMAP: If subject contained only whitespace, Dovecot returned an ENVELOPE reply with a huge literal value, effectively causing the IMAP client to wait for more data forever.
  • IMAP: Various URLAUTH fixes.
  • imapc: Various bugfixes and improvements
  • pop3c: Various fixes to make it work in dsync (without imapc)
  • dsync: Fixes to syncing subscriptions. Fixes to syncing mailbox renames.

New in Dovecot 2.2.2 (May 20, 2013)

  • zlib: Keep the last mail cached uncompressed in a temp file. This fixes performance when doing small partial fetches from a large mail.
  • acl: If plugin { acl_defaults_from_inbox = yes } is set, get the default ACLs for private and shared namespaces from the user's INBOX. (This probably will become default in v2.3.)
  • pop3: Added pop3_deleted_flag setting to switch POP3 deletions to only hide the messages from POP3, but still be visible via IMAP.
  • ACL plugin: Mailbox creation wasn't actually checking any ACLs and always succeeded (due to some v2.2 API changes). The created mailbox couldn't have been accessed though, so this couldn't have caused any data leak.
  • IMAP: Various URLAUTH fixes.
  • IMAP: Fixed a hang with invalid APPEND parameters.
  • IMAP LIST-EXTENDED: INBOX was never listed with \Subscribed flag.
  • mailbox_list_index=yes still caused crashes.
  • maildir: Fixed a crash after dovecot-keywords file was re-read.
  • maildir: If files had reappeared unexpectedly to a Maildir, they were ignored until index files were deleted.
  • Maildir: Fixed handling over 26 keywords in a mailbox.
  • Maildir++: Fixed mail_shared_explicit_inbox=no
  • namespace { prefix="" list=no } was listing mailboxes.
  • imap/pop3-login proxying: Fixed a crash if TCP connection succeeded, but the remote login timed out.
  • Case-insensitive search/sort didn't work correctly for all unicode characters, as specified by i;unicode-casemap comparator. If full text search indexes were used, they need to be rebuilt for old mails to be handled correctly. (This bug has existed always in Dovecot.)

New in Dovecot 2.1.15 (Feb 9, 2013)

  • v2.1.14's dovecot.index.cache fixes caused Dovecot to use more disk I/O and memory than was necessary.

New in Dovecot 2.1.14 (Jan 31, 2013)

  • doveadm acl recalc command added
  • v2.1.11+ had a race condition where it sometimes overwrote data in dovecot.index.cache file. This could have caused Dovecot to return the same cached data to two different messages.
  • mdbox: Fixes to handling duplicate GUIDs during index rebuild

New in Dovecot 2.2 Beta 1 (Jan 7, 2013)

  • When creating home directories, the permissions are copied from the parent directory if it has setgid-bit set. For full details, see http://wiki2.dovecot.org/SharedMailboxes/Permissions
  • "doveadm auth" command was renamed to "doveadm auth test"
  • IMAP: ID command now advertises server name as Dovecot by default. It was already trivial to guess this from command replies.
  • dovecot.index.cache files can be safely accessed only by v2.1.11+. Older versions may think they're corrupted and delete them.
  • Implemented IMAP MOVE and BINARY extensions
  • Implemented IMAP CATENATE, URLAUTH and URLAUTH=BINARY extensions (by Stephan Bosch).
  • Implemented IMAP NOTIFY extension. Requires mailbox_list_index=yes to be enabled.
  • Redesigned and rewritten dsync. The new design makes the syncing faster, more reliable and more featureful. The new dsync protocol isn't backwards compatible with old dsync versions (but is designed to be forwards compatible with future versions).
  • All mailbox formats now support per-user message flags for shared mailboxes by using a private index. It can be enabled by adding :INDEXPVT= to mail location. This should be used instead of :INDEX also for Maildir/mbox to improve performance.
  • Improved mailbox list indexes. They should be usable now, although still disabled by default.
  • Added LAYOUT=index. The mailbox directories are created using their GUIDs in the filesystem, while the actual GUID name mapping exists only in the index.
  • LMTP proxy: Implemented XCLIENT extension for passing remote IP address through proxy.

New in Dovecot 2.1.13 (Jan 7, 2013)

  • Some fixes to cache file changes in v2.1.11.
  • fts-solr: Overlong UTF8 sequences in mails were rejected by Solr and caused the mails to not be indexed.
  • virtual storage: Sorting mailbox by from/to/cc/bcc didn't work.

New in Dovecot 2.1.12 (Dec 3, 2012)

  • The dovecot-config file installed by v2.1.11 was missing quotes, which broke building
  • Pigeonhole. v2.1.12 release fixes that.

New in Dovecot 2.1.11 (Nov 29, 2012)

  • lmtp/lda: dovecot.index.cache file is no longer fully mapped to memory, allowing mail deliveries to work even if the file is huge.
  • auth: userdb passwd lookups are now done by auth worker processes instead of auth master process (as it was documented, but accidentally didn't work that way).
  • lmtp: lmtp_rcpt_check_quota=yes setting checks quota on RCPT TO.
  • lmtp: After successful proxying RCPT TO, the next one to a nonexistent user gave tempfail error instead of "user not found".
  • lmtp proxy: Fixed hanging if remote server was down.
  • imap: Fixed crash when SEARCH contained multiple KEYWORD parameters.
  • doveadm: Various fixes to handling doveadm-server connections.
  • -i parameter for Dovecot tools didn't work correctly.
  • director was somewhat broken in v2.1.10. This version also includes various reliability enhancements.
  • auth: passdb imap was broken in v2.1.10.

New in Dovecot 2.1.10 (Sep 26, 2012)

  • imap: Implemented THREAD=ORDEREDSUBJECT extension.
  • Added "doveadm exec" command to easily execute commands from libexec_dir, e.g. "doveadm exec imap -u user at domain"
  • Added "doveadm copy" command.
  • doveadm copy/move: Added optional user parameter to specify the source username. This allows easily copying mails between different users.
  • Added namespace { disabled } setting to quickly enable/disable namespaces. This is especially useful when its value is returned by userdb.
  • Added mailbox_alias plugin. It allows creating mailbox aliases using symlinks.
  • imapc storage: Added imapc_max_idle_time setting to force activity on connection.
  • fts-solr: Expunging multiple messages is now faster.
  • director: In some conditions director may have disconnected from another director (without logging about it), thinking it was sending invalid data.
  • imap: Various fixes to listing mailboxes.
  • pop3-migration plugin: Avoid disconnection from POP3 server due to idling.
  • login processes crashed if there were a lot of local {} or remote {} settings blocks.

New in Dovecot 2.1.4 (Apr 10, 2012)

  • Added mail_temp_scan_interval setting and changed its default value from 8 hours to 1 week.
  • Added pop3-migration plugin for easily doing a transparent IMAP+POP3 migration to Dovecot: http://wiki2.dovecot.org/Migration/Dsync
  • doveadm user: Added -m parameter to show some of the mail settings.
  • Proxying SSL connections crashed in v2.1.[23]
  • fts-solr: Indexing mail bodies was broken.
  • director: Several changes to significantly improve error handling
  • doveadm import didn't import messages' flags
  • mail_full_filesystem_access=yes was broken
  • Make sure IMAP clients can't create directories when accessing nonexistent users' mailboxes via shared namespace.
  • Dovecot auth clients authenticating via TCP socket could have failed with bogus "PID already in use" errors.

New in Dovecot 2.1.0 (Feb 18, 2012)

  • Plugins now use UTF-8 mailbox names rather than mUTF-7: acl, autocreate, expire, trash, virtual
  • auth_username_format default changed to %Lu. If you really want case sensitive usernames, set it back to empty.
  • Solr full text search backend changed to use mailbox GUIDs instead of mailbox names, requiring reindexing everything. solr_old backend can be used with old indexes to avoid reindexing, but it doesn't support some newer features.
  • Expire plugin: Only go through users listed by userdb iteration. Delete dict rows for nonexistent users, unless expire_keep_nonexistent_users=yes.
  • Temporary authentication failures sent to IMAP/POP3 clients now includes the server's hostname and timestamp. This makes it easier to find the error message from logs.
  • dsync was merged into doveadm. There is still "dsync" symlink pointing to "doveadm", which you can use the old way for now. The preferred ways to run dsync are "doveadm sync" (for old "dsync mirror") and "doveadm backup". + imapc (= IMAP client) storage allows using a remote IMAP server to be used as storage. This allows using Dovecot as a smart (caching) proxy or using dsync to do migration from remote IMAP server. + Mailbox indexing via queuing indexer service (required for Lucene) + Lucene full text search (FTS) backend rewritten with support for different languages + FTS finally supports "OR" search operation + FTS supports indexing attachments via external programs + IMAP FUZZY extension, supported by Lucene and Solr FTS backends + IMAP SPECIAL-USE extension to describe mailboxes + Mailbox list indexes + Statistics tracking via stats service. Exported via doveadm stats. + Autocreate plugin creates/subscribes mailboxes physically only when the mailbox is opened for the first time. Mailbox listing shows the autocreated mailboxes even if they don't physically exist. + Password and user databases now support default_fields and override_fields settings to specify template defaults/overrides. + SCRAM-SHA-1 authentication mechanism by Florian Zeitz + LDAP: Allow building passdb/userdb extra fields from multiple LDAP attributes by using %{ldap:attributeName} variables in the template. + Improved multi-instance support: Track automatically which instances are started up and manage the list with doveadm instance commands. All Dovecot commands now support -i parameter to select the instance (instead of having to use -c ). See instance_name setting. + auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups. - listescape plugin works perfectly now

New in Dovecot 2.0.8 (Dec 4, 2010)

  • Services' default vsz_limits weren't being enforced correctly in earlier v2.0 releases. Now that they are enforced, you might notice that the default limits are too low and you need to increase them. This problem will show up in logs as "out of memory" errors. See default_vsz_limit and service { vsz_limit } settings.
  • LMTP: In earlier versions if mail was delivered to user+detail at domain
  • address, LMTP server always attempted to deliver the mail to mailbox named "detail". This was rather unintentional and shouldn't have been the default. lmtp_save_to_detail_mailbox=yes setting now preserves this behavior (default is no).
  • Added systemd support (configure --with-systemdsystemunitdir). Based on patch by Christophe Fergeau.
  • Replaced broken mbox-snarf plugin with a new more generic snarf plugin.
  • dbox: Fixes to handling external mail attachments
  • verbose_proctitle=yes didn't work for all processes in v2.0.7
  • imap, pop3: When service { client_count } was larger than 1, the log messages didn't use the correct prefix. Last logged in user's prefix was always used, regardless of what user's session actually logged it. Now the proper log prefix is always used.
  • MySQL: Only the first specified host was ever used

New in Dovecot 2.0.1 (Aug 25, 2010)

  • When dsync is started as root, remote dsync command is now also executed as root instead of with dropped privileges.
  • IMAP: QRESYNC parameters for SELECT weren't handled correctly.
  • UTF-8 string validity checking wasn't done correctly (e.g. mailbox names in Sieve fileinto)
  • dsync: Fixed a random assert-crash with remote dsyncing

New in Dovecot 1.2.13 (Jul 24, 2010)

  • Fixed iconv() crash when it was processing several kilobytes of broken continuous input. This mainly could have caused a problem with IMAP SEARCH. Possibly also with some Sieve checks.
  • If MIME encoded-words contained line feeds, Dovecot logged cache corruption errors.
  • mbox: Renaming mailbox under newly created dir didn't move index directory.
  • mbox: When generating envelope to From_-line, don't append a second @owndomain if username already has one.

New in Dovecot 2.0 Beta 4 (Mar 24, 2010)

  • Global ACLs are now looked up using namespace prefixes. For example if you previously had INBOX. namespace prefix and a global ACL for"INBOX.Sent", it's now looked up from "INBOX.Sent" file instead of "Sent" as before.
  • Maildir: File permissions are no longer based on dovecot-shared file, but the mailbox directory.
  • Redesigned master process. It's now more modular and there is less code running as root.
  • Configuration supports now per-local/remote ip/network settings.
  • dsync utility does a two-way mailbox synchronization.
  • LMTP server and proxying.
  • Added mdbox (multi-dbox) mail storage backend.
  • doveadm utility can be used to do all kinds of administration functions. Old dovecotpw and *view utilities now exist in its subcommands.
  • imap and pop3 processes can now handle multiple connections.
  • IMAP: COMPRESS=DEFLATE is supported by imap_zlib plugin

New in Dovecot 1.2.6 (Oct 6, 2009)

  • Upgraded to Unicode 5.2.0
  • Added authtest utility for doing passdb and userdb lookups.
  • login: ssl_security string now also shows the used compression.
  • quota: Don't crash with non-Maildir++ quota backend.
  • imap proxy: Fixed crashing with some specific password characters.
  • dovecot --exec-mail was broken.
  • Avoid assert-crashing when two processes try to create index at the same time.

New in Dovecot 1.2.5 (Sep 14, 2009)

  • Authentication: DIGEST-MD5 and RPA mechanisms no longer require user's login realm to be listed in auth_realms. It only made configuration more difficult without really providing extra security.
  • zlib plugin: Don't allow clients to save compressed data directly. This prevents users from exploiting (most of the) potential security holes in zlib/bzlib.
  • Added pop3_save_uidl setting.
  • dict quota: When updating quota and user isn't already in dict, recalculate and save the quota.
  • file_set_size() was broken with OSes that didn't support posix_fallocate() (almost everyone except Linux), causing all kinds of index file errors.
  • v1.2.4 index file handling could have caused an assert-crash
  • IMAP: Fixes to QRESYNC extension.
  • virtual plugin: Crashfix
  • deliver: Don't send rejects to any messages that have Auto-Submitted header. This avoids emails loops.
  • Maildir: Performance fixes, especially with maildir_very_dirty_syncs.
  • Maildir++ quota: Limits weren't read early enough from maildirsize file (when quota limits not enforced by Dovecot)
  • Message decoding fixes (mainly for IMAP SEARCH, Sieve).

New in Dovecot 1.1.15 (May 18, 2009)

  • IMAP: When multiple commands are pipelined, try harder to combine their mailbox syncing together. For example with Maildir pipelining
  • STORE 1:* +FLAGS Deleted and EXPUNGE commands the files won't be unnecessarily rename()d before being unlink()ed.
  • IMAP: SEARCH command was slower than necessary in a large mailbox.
  • deliver: When forwarding messages, if -f parameter was given, it should have been used as the Return-Path.
  • Maildir saving: Fixed race condition bugs in uidlist handling, causing files to be given new UIDs sometimes.
  • mbox: Don't crash when expunging all messages and file doesn't end with [CR]LF.
  • expire-tool: Use mail_uid and mail_gid settings if userdb doesn't return uid/gid.
  • Berkeley DB dict: Transaction rollbacking was implemented wrong.
  • zlib plugin: Some email / FETCH command combinations could have disconnected the client or sent compressed garbage.