fixes CVE-2019-11500: IMAP protocol parser does not properly handle NUL byte
when scanning data in quoted strings, leading to out of bounds heap
memory writes
doveconf hides more secrets now in the default output
NUL bytes in mail headers can cause truncated replies when fetched.
virtual plugin: Some searches used 100% CPU for many seconds
dsync assert-crashed with acl plugin in some situations.
imapc: Fixed various assert-crashes when reconnecting to server.
doveadm: Fix crash in proxying (or dsync replication) if remote is
running older than v2.2.33
auth: Fix memory leak in %{ldap_dn}
dict-sql: Fix data types to work correctly with Cassandra
Added %{if}, see https://wiki2.dovecot.org/Variables#Conditionals
sdbox: Mails were always opened when expunging, unless
mail_attachment_fs was explicitly set to empty.
lmtp/doveadm proxy: hostip passdb field was ignored, which caused
unnecessary DNS lookups if host field wasn't an IP
lmtp proxy: Fix crash when receiving unexpected reply in RCPT TO
quota_clone: Update also when quota is unlimited (broken in v2.2.31)
mbox, zlib: Fix assert-crash when accessing compressed mbox
doveadm director kick -f parameter didn't work
doveadm director flush <host> resulted flushing all hosts, if <host>
wasn't an IP address.
director: Various fixes to handling backend/director changes at
abnormal times, especially while ring was unsynced.
director: Use less CPU in imap-login processes when moving/kicking
many users.
lmtp: Session IDs were duplicated/confusing with multiple RCPT TOs
when lmtp_rcpt_check_quota=yes
LDA Sieve plugin: Fixed sequential execution of LDAP-based scripts. A
missing LDAP-based script could cause the script sequence to exit earlier.
sieve-filter: Removed the (now) duplicate utf8 to mutf7 mailbox name
conversion. This caused problems with mailbox names containing UTF-8
characters.
Made the retention period for redirect duplicate identifiers
configurable. Changed the default retention period from 24 to 12 hours.
sieve-filter: Fixed memory leak: forgot to clean up script binary at
end of execution
managesieve-login: Fixed handling of AUTHENTICATE command. A second
authenticate command would be parsed wrong.
Modseq tracking didn't always work correctly. This could have caused
imap unhibernation to fail or IMAP QRESYNC/CONDSTORE extensions to
not work perfectly.
mdbox: "Inconsistency in map index" wasn't fixed automatically
dict-ldap: %variable values used in the LDAP filter weren't escaped.
quota=count: quota_warning = -storage=.. was never executed (try #2).
imapc: >= 32 kB mail bodies were supposed to be cached for subsequent
FETCHes, but weren't.
quota-status service didn't support recipient_delimiter
acl: Don't access dovecot-acl-list files with acl_globals_only=yes
mail_location: If INDEX dir is set, mailbox deletion deletes its
childrens' indexes.
director: v2.2.31 caused rapid reconnection loops to directors
that were down.
Various fixes to handling mailbox listing. Especially related to
handling nonexistent autocreated/autosubscribed mailboxes and ACLs.
Global ACL file was parsed as if it was local ACL file. This caused
some of the ACL rule interactions to not work exactly as intended.
Using mail_sort_max_read_count may have caused very high CPU usage.
Message address parsing could have crashed on invalid input.
imapc_features=fetch-headers wasn't always working correctly and
caused the full header to be fetched.
imapc: Various bugfixes related to connection failure handling.
quota=count: quota_warning = -storage=.. was never executed
quota=count: Add support for "ns" parameter
dsync: Fix incremental syncing for mails that don't have Date or
Message-ID headers.
imap: Fix hang when client sends pipelined SEARCH +
EXPUNGE/CLOSE/LOGOUT.
oauth2: Token validation didn't accept empty server responses.
imap: NOTIFY command has been almost completely broken since the
beginning.
pigeonhole updated to 0.4.19
Fixed bug in handling of implicit keep in some cases.
include extension: Fixed segfault that (sometimes) occurred when the
global script location was left unconfigured.
More fixes to automatically fix corruption in dovecot.list.index
dsync-server: Fix support for dsync_features=empty-header-workaround
imapc: Various bugfixes, including infinite loops on some errors
IMAP NOTIFY wasn't working for non-INBOX if IMAP client hadn't
enabled modseq tracking via CONDSTORE/QRESYNC.
fts-lucene: Fix it to work again with mbox format
Some internal error messages may have contained garbage in v2.2.29
mail-crypt: Re-encrypt when copying/moving mails and per-mailbox keys
are used. Otherwise the copied mails can't be opened.
dict-sql: Merging multiple UPDATEs to a single statement wasn't
actually working.
pigeonhole updated to 0.4.18
imapsieve plugin: Implemented the copy_source_after rule action. When this
is enabled for a mailbox rule, the specified Sieve script is executed for
the message in the source mailbox during a "COPY" event. This happens only
after the Sieve script that is executed for the corresponding message in the
destination mailbox finishes running successfully.
imapsieve plugin: Added non-standard Sieve environment items for the source
and destination mailbox.
multiscript: The execution of the discard script had an implicit "keep",
rather than an implicit "discard".
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 <user>: "Initial config" was always empty
imapc: Various reconnection fixes.
auth: Support OAUTHBEARER and XOAUTH2 mechanisms. Also support them
in lib-dsasl for client side.
imap: SEARCH/SORT may have assert-crashed in
client_check_command_hangs
imap: FETCH X-MAILBOX may have assert-crashed in virtual mailboxes.
search: Using NOT n:* or NOT UID n:* wasn't handled correctly
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.
imapsieve plugin: Fixed assert failure occurring when used with virtual
mailboxes.
doveadm sieve plugin: Fixed crash when setting Sieve script via attribute's
string value.
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.