Stalwart Mail Server 0.16.12 → 0.16.18
6 releases · 0 breaking changes · 0 security fixes · 0 advisories fixed
0security0breaking0deprecated12feature106fix
Breaking changes
None in the release notes.
Security changes
None in the release notes.
Every release in between
featureReporting: inboundReportMaxSize setting, which bounds the size of a decompressed inbound DMARC or TLS report (default 25MB).
featureRocksDB: cacheSize setting, which bounds the total memory shared by the block caches of every column family (default 128MB).
otherASN & GeoIP: Default data source URLs now point at the ip-location-db GitHub releases, as the previously used npm packages are no longer updated. Existing installations keep their configured URLs and should update them following the ASN and GeoIP documentation.
otherJMAP: Identity/get keeps identities in sync with the account's e-mail addresses.
otherMTA: Queue scheduler no longer rescans the queue from the earliest pending event and coalesces bursts of delivery completions into a single scan.
otherRocksDB:
otherColumn families are tuned for the access pattern of the data they hold.
otherRange iteration uses bounded iterators and no longer reads values when only keys were requested.
fixJMAP:
fixSetting uploadTtl to 1ms triggers panic.
fixCalendarEvent/set does not assign organizerCalendarAddress nor send scheduling messages when an event is created with participants.
fixCalendarEvent/get omits isOrigin when it is listed explicitly in properties.
fixCalendarEventNotification/changes and FileNode/changes reject with cannotCalculateChanges the state that /get returned for an account with no change history.
fixCalendarEvent/set and ContactCard/set do not write a vanished tombstone for the previous CalDAV/CardDAV href when calendarIds or addressBookIds moves an item between collections.
fixCalDAV: Attendee addresses that percent-encode a display name into the mailto: URI are queued verbatim.
fixCalendar: Recurring events disappear from CalDAV time-range REPORTs and JMAP CalendarEvent/query results a few years after their first occurrence.
fixWebDAV:
fixWhen a file node references a parent folder that no longer exists, any request on a file collection panics.
fixMOVE on a folder honors a Depth header of 0 or 1 instead of always moving the whole subtree.
fixMTA:
fixDSN bounces are emitted with a malformed Message-ID wrapped in doubled angle brackets.
fixDelivery to any MX host whose name is an IDN A-label fails permanently.
fixQueue strategy and quota expressions that branch on source never match at enqueue.
fixMTA-STS:
fixPolicies in testing mode are enforced, turning any TLS error into a permanent failure.
fixmx patterns published as U-labels never authorize the MX host they name.
fixDMARC:
fixAlignment compares identifiers in their A-label form.
fixExternal reporting addresses published as U-labels are rejected as unauthorized.
fixSpam filter:
fixSome rules misfire on internationalized addresses when the envelope and the headers spell the same domain in different label forms.
fixPunycode labels that do not re-encode to the label they came from are no longer decoded.
fixWebPush: Validate push URL and use application/octet-stream as Content-Type for encrypted payloads.
fixDirectory:
fixLocal group membership is cleared when the external directory is configured with a group claim or attribute that it does not return.
fixLDAP: Directories that store aliases as additional values of the primary address attribute provision no aliases.
fixMail addressed to a domain alias is rejected with 550 Relay not allowed, unless the domain's primary name happened to be resolved earlier and is still cached.
fixRocksDB: bufferSize setting was applied to the unused default column family and had no effect.
fixSieve: include statements fail to find system and user global scripts whose name contains uppercase characters.
fixTask manager: totalDeadline is measured from the time a task was created instead of its first failed attempt.
featureIMAP:
featureUIDBATCHES extension (RFC 10022).
featureUIDONLY extension (RFC 9586).
featureMESSAGELIMIT and SAVELIMIT extensions (RFC 9738).
featureWebDAV: Range and If-Range header support on file downloads (RFC 7233) (#2377).
featureSpam filter: url_original expression variable for Url rules.
otherMemory allocator: Replaced the unmaintained jemallocator crate with tikv-jemallocator (contributed by @checkraisefold).
otherACME registry: Use description as label property.
fixMTA:
fixCertificates for domains publishing an enforcing MTA-STS policy are always validated, even in the fallback TLS strategy.
fixDSN delivery date uses wrong timestamp.
fixFUTURERELEASE HOLDUNTIL uses Unix timestamps instead of RFC 3339 date-times.
fixJMAP:
fixEmailSubmission/query filtering on undoStatus contradicts EmailSubmission/get, reporting held FUTURERELEASE submissions as final instead of pending.
fixEmailSubmission/get requests without an ids argument iterates the wrong index.
fixCardDAV: Accept: text/vcard version negotiation is ignored whenever another parameter such as q or charset follows version=.
fixCalendar: Server-side scheduling messages place the text/calendar part outside the multipart/alternative and disposed as an attachment.
fixSharing: Accounts holding the impersonate permission never have their ACL grants collected, so shared items are never listed in JMAP sessions, CalDAV/CardDAV discovery or IMAP.
fixCOPY/MOVE into a shared folder fails with NO [ALREADYEXISTS] when the destination account already holds the message, leaving the message in the source mailbox and clients in a retry loop.
fixBODYSTRUCTURE and ENVELOPE return MIME parameters, Content-Description, subjects and display names as raw UTF-8 even to sessions that never enabled UTF8=ACCEPT.
featureJMAP Email Delivery Push Notifications (draft-ietf-jmap-emailpush-03)
featureMTA: Allow System Sieve scripts to access orcpt during the DATA stage.
otherS3: accessKey can now be read from an environment variable or file.
fixMeilisearch: Verify index existence using GET instead of creating a new task which times out on busy servers.
fixBranding: Stalwart logo flashes before the per-tenant logo is loaded on the login page.
fixCalendar: iMIP and alarm notification messages embed the default logo using bare LF line endings, producing a single 4247 octet line that strict SMTP relays reject with line too long.
fixDMARC: Failure reports state Identity-Alignment: none when a mechanism authenticated successfully but against an identity that is not aligned with the From domain.
fixRedis: Task and queue locks are never released after a worker dies, because failed lock attempts refresh the lock expiry.
fixRecovery mode: Download WebUI if missing.
fixLogging: The systemd journal tracer omits the parent span's fields.
fixMTA:
fixBDAT chunks sent without a valid MAIL FROM are answered with 552 5.3.4 Message too big for system instead of 503 5.5.1.
fixA maxMessageSize of 0 rejects every message with 552 5.3.4 Message too big for system instead of disabling the size limit.
fixWindows: Listeners bound to the unspecified IPv6 address ([::]), including all defaults, refuse IPv4 connections such as 127.0.0.1, since IPV6_V6ONLY is enabled by default on Windows.
fixJMAP:
fixEmail/copy should return alreadyExists when copying a message to a mailbox that already contains it.
fixEmail/copy with onSuccessDestroyOriginal destroys the copy's creation id instead of the source Email id.
fixCalendarEvent/set does not generate a uid on create when the client omits it.
fixCalendarEvent/set does not refresh the updated property (iCalendar DTSTAMP) on create or update.
fixEmailSubmission/set rejects valid recipients whose domain is itself a public suffix (e.g. gov.in, co.uk).
fixRequests are rejected with notRequest when a method name contains a JSON-escaped solidus (e.g. Core\/echo).
fixMTA: Panic when MTA-STS is disabled and a remote MTA fetched /.well-known/mta-sts.txt.
fixAuth: Scoped credentials with SysApiKeyCreate or SysApiKeyUpdate permissions can regain its own account's full rights.
fixWeb Push: Valid VAPID keys are rejected when PEM-encoded with explicit EC parameters, in SEC1 (EC PRIVATE KEY) format, or with a leading byte-order mark.
fixEncryption at rest: Appended messages are encrypted for accounts that did not opt in to encryptOnAppend.
fixCache: Account caches silently discard entries larger than a single quick-cache shard, causing constant database rebuilds.
fixRegistry: Id references (e.g. #certificate-...) fail to resolve on defaultCertificateId, defaultAdminRoleIds, listenerIds and publicKey.
fixSearch: reindex drops calendar and contact index tasks for accounts with fewer than a full batch of items.
fixMigration: Abort --import when the target already contains data in the key range being imported.
fixCluster: Broadcast subscriber re-subscribes after every message, losing bursts of cluster broadcasts during the reconnect window.
fixEnterprise: Per-tenant logo is not shown on the OAuth login password and OTP screens, which are served from the server's canonical host rather than the tenant domain.
featureUse of Voluntary Application Server Identification (VAPID) in JMAP Web Push (RFC 9749).
fixIMAP:
fixMailbox object-quota only enforced in JMAP.
fixPipelined STORE and EXPUNGE can execute out of order.
fixJMAP:
fixRead-only sharee cannot set isSubscribed on a shared mailbox.
fixWeb Push payloads with Content-Encoding: aes128gcm should not be base64-encoded but sent as raw bytes.
fixStale push subscription can block verification of a new one.
fixPushSubscription/set rejects the unpadded base64url keys the W3C Push API produces.
fixEmail/import does not send push notifications for imported messages.
fixCalendarEvent/set silently ignores ifInState.
fixCalDAV: calendar-query REPORT returns empty calendar-data for JMAP-created events.
fixMTA:
fixDMARC is skipped when MAIL FROM SPF is unavailable.
fixqueue_name variable not available in rate limiter expressions.
fixCalendar:
fixNo expanded occurrences are returned for a daily recurrences crossing DST.
fixUppercase MAILTO calendar addresses become invalid SMTP recipients.
fixScheduling invitations on a shared, non-owned calendar fail with MAIL FROM unauthorized.
fixHTTP: Disable allowedEndpoints expression in recovery mode.
fixTelemetry: Tasks are serialized to the wrong store when using separate stores for telemetry and data.
featureFreeBSD support.
fixOAuth resource indicators: Accept imap, smtp, pop3 and sieve as valid resource indicators for OAuth access tokens.
fixPostgreSQL: Incomplete channel binding implementation.
fixJMAP:
fixVacationResponse: isEnabled reset to false whenever properties are changed.
fixCapabilities: Return RFC-3339-conformant UTCDate literals in capabilities: min 0001-01-01T00:00:00Z, max 9999-12-31T23:59:59Z.
fixDirectory: Update local groups only when the external directory includes a group attribute.
fixDNS Management:
fixCAA management deletes too third-party CAA entries.
fixMultiple provider fixes (see dns-update crate changelog).
fixReject invalid duration values (e.g. 1h30m).
fixBranding: Custom logos for domains do not work.
fixSieve: add Received headers to auto-generated messages and detect loops.
fixMTA: Resume queue processing does not work.
fixMisconfigured in-memory store cannot be recovered in recovery mode.