[0.16.22] - 2026-09-13
If you are upgrading from v0.16.x, replace the binary (or run docker pull). If you are upgrading from v0.15.x and below, please read the upgrading documentation for more information on how to upgrade from previous versions.
Added
Changed
Fixed
- WebDAV:
PROPFINDresponses do not declare the namespace of every requested property on theDAV:multistatuselement. - MTA:
- SMTP session state obtained before
STARTTLSis discarded once the TLS handshake completes, as required by RFC 3207. - Inbound throttle, outbound throttle and queue quota
matchexpressions evaluate theirif/thenconditions. - DMARC: Messages without an aligned SPF or DKIM pass from a domain that publishes a DMARC policy are reported as
failinstead ofnonein logs. - DMARC: A temporary DNS error on an SPF or DKIM check whose identifier aligns with the author domain produces
temperrorinstead offail. - DMARC: A policy record without a
ptag is only applied, asp=none, when it contains aruatag, even if it declaresspornp.
- SMTP session state obtained before
- iMIP: Notification subjects and bodies omit the event start date, time and timezone for recurring events.
- OIDC: Discovery is retried for 30 seconds before the directory is marked as unavailable, so a provider that is still starting up no longer requires a restart.
- WebUI: The cached bundle of an
Applicationis discarded when itsresourceUrlchanges or the record is deleted, so the next unpack fetches the new resource. - DNS: Append
.to MX record hostnames. - Recovery mode: Automatic IP banning is disabled during recovery and initial setup.
- FoundationDB: The cached read version is invalidated when a queue refresh or registry change broadcast is received.
- Sieve: Messages filed with
fileintoby a user script are treated as ham and are no longer moved to Junk when classified as spam. - IMAP:
SELECT,EXAMINEandSTATUSon a shared mailbox require ther(read) right.AUTHENTICATEis refused on clear-text connections unlessallowPlainTextAuthis enabled, and the greeting andCAPABILITYresponse advertiseLOGINDISABLEDinstead of theAUTH=mechanisms in that case.
- IMAP, POP3, ManageSieve: Partial commands received before
STARTTLSorSTLSare discarded once the TLS handshake completes. - Network: Inbound TLS handshakes, both implicit and
STARTTLS, are aborted after the listener'stlsTimeout, releasing the connection slot. - OAuth: A random key is used when the OIDC provider's
encryptionKeyor HMACsignatureKeycannot be read, instead of an empty key. - LDAP: The
{local}and{domain}filter placeholders are escaped. - JMAP:
CalendarEvent/setstoresuseDefaultAlertsper user, andCalendarEvent/getreturnsfalsewhen it was never set.CalendarEvent/getreturnsnullforbaseEventIdunless the id is a synthetic recurrence instance.CalendarEvent/getreturnsnullfor requestedrecurrenceRuleandrecurrenceOverridesproperties on synthetic recurrence instances.CalendarEvent/getandContactCard/getreturn onlyidwhen thepropertiesargument is an empty list, instead of every property.