Stalwart Mail Server 0.16.27 → 1.0.1
2 releases · 0 breaking changes · 1 security fix · 0 advisories fixed
1security0breaking0deprecated40feature20fix
Breaking changes
None in the release notes.
Security changes
- security OAuth: The OAuth Profile for Open Public Clients is now fully enforced. If you use an external OIDC provider, make sure it conforms to the draft; otherwise mail clients such as Apple Mail will stop working with it as they adopt the profile. Ask your provider to add support, or, at your own risk,… in 1.0.0
Every release in between
featureTelemetry
featureNew OpenTelemetry (OTLP over HTTP and gRPC) and Prometheus exporters replace the opentelemetry and prometheus crates, with 4x to 14x faster encoding.
featureMetric names follow the OpenTelemetry and Prometheus conventions (stalwart. in OTLP, stalwart* with unit and _total suffixes in Prometheus); dashboards and alerts must be updated.
featureOpenMetrics output, plus serviceName, serviceNamespace and resourceAttributes settings replacing the OTEL_* environment variables.
featuregRPC exporters support TLS options, authentication and custom headers; histogram buckets and counters are fixed (cumulative, inclusive, 64-bit).
otherEncryption at rest: JMAP messages stored with the $draft keyword are no longer encrypted on append, so they are submitted as written by the client. The Sent copy of messages submitted over JMAP is stored unencrypted.
featureOAuth: The consent screen is shown after sign-in and is skipped while the client is listed under the account's connected applications with the requested scopes. prompt=consent always shows it. All cluster nodes must be upgraded before relying on the new sign-in flow.
otherRegistry: Listing connected applications, public keys, masked addresses and archived items returns only the requested account's objects, also for administrators. Administrators reach other accounts through the account id or an explicit accountId filter.
fixACME: DNS-01 challenges for a subdomain are written to the registrable domain's zone instead of the domain's own zone when no zone origin is configured.
fixiTIP
fixInvitation emails for all-day events show the start as 00:00 with a time zone instead of the date only.
fixAttendee replies are rejected when the client drops or changes the organizer's PRIORITY, for example when accepting an invitation from BusyCal.
fixJMAP
fixMailbox/set returns only the id of created mailboxes instead of also the server-set and defaulted properties (RFC 8620, section 5.3).
fixAddressBook/set, ContactCard/set and Identity/set return only the id of created objects, and Calendar/set and CalendarEvent/set omit some defaulted properties (RFC 8620, section 5.3).
fixRegistry
fixconfig.json is created with the process umask (usually 0644), so the data store credentials are readable by other local users.
fixListing archived items with an accountId filter fails with unsupportedFilter for users without the impersonate permission instead of ignoring the filter like the other account-owned objects.
fixRocksDB:
fixUpdated to 11.8.1 with the upstream fix for spurious compare-and-swap failures in the write group leader (facebook/rocksdb#15415).
fixaarch64 release builds crash with SIGSEGV under concurrent writes (C and C++ dependencies are now compiled with outline atomics).
fixSpam filter: FORGED_RCVD_TRAIL is added for every Received header whose reverse DNS name ends with a dot, such as those written by Gmail.
fixWebUI
fixSaving objects that use schema defaults fails with "Invalid value for object property", for example when enabling the AI classifier.
fixObject pickers on tenant-scoped objects (for example the ACME provider of a tenant domain) list objects from other tenants, and saving one fails with a generic "references another item that does not exist" error instead of saying the object belongs to another tenant.
fixMulti-tenancy: Tenant administrators given the impersonate permission can reach accounts of other tenants. The permission is now never granted to tenant members and cannot be added to a tenant's permissions.
fixInstaller: The systemd unit written by install.sh uses Type=simple instead of Type=notify.
featureFull-text search:
featureText extraction and indexing of PDF, Microsoft Office (docx, xlsx, pptx), OpenDocument (odt, ods, odp), EPUB and RTF documents found in attachments and files.
featureFull-text search of file storage contents.
featureIndex queue with per-partition status, concurrency control, retries and index rebuilds.
featureMetadata:
featureJMAP Object Metadata (draft-ietf-jmap-metadata-04) for e-mails, mailboxes, Sieve scripts, calendars, events, address books, contacts and files.
featureIMAP METADATA extension (RFC 5464).
featureDKIM2:
featurePost-quantum composite signatures using ML-DSA-44 and Ed25519 with SHA-512.
featureConfigurable Message-Instance hash algorithms (SHA-256 and SHA-512).
featureOAuth and OIDC:
featureOAuth Client ID Metadata Documents (draft-ietf-oauth-client-id-metadata-document-02).
featureOAuth scopes (mail, contacts, calendars and files) per client and grant.
featureConnected applications: users can list and revoke the applications authorized to access their account.
featureFirst-party clients, post-logout redirect URIs and per-client grant types.
featureExternal OIDC directories: audience matching, opaque token validation via UserInfo or token introspection and a policy for unscoped tokens.
featureCaching:
featureRedesigned cache subsystem with a dedicated tier for large accounts.
featureCache snapshots can be swapped to local disk, Redis or the blob store.
featureBuilt-in local in-memory store for single-node deployments.
featureAzure Blob Storage authentication using shared keys, SAS tokens, client secrets, managed identities or workload identities.
featureSecondary LDAP servers for failover.
featureSSRF protection for outbound HTTP requests (webhooks, OIDC discovery, AI and DNS providers).
featureConfigurable client IP source (X-Forwarded-For or Forwarded) and number of trusted proxy hops.
featureMemory budget for buffered data.
featureConfigurable limits for e-mail headers, keywords and mailboxes per message, calendars, address books and spam filter text processing.
featureTLS options for Kafka and NATS cluster coordinators.
featureAutomatic cleanup of per-user data after a share is revoked.
featureAI (Enterprise):
featureAI models from multiple providers: OpenAI-compatible endpoints (OpenAI, Azure, vLLM, llama.cpp), Anthropic, Google Gemini and Ollama, with per-model rate limits, concurrency caps, timeouts and reasoning levels.
featureAI spam classifier with structured verdicts, model tiers with escalation, training from AI verdicts and optional web search.
featureNew database layout: the key layout was redesigned and the database schema version is now tied to the edition (AGPL-only or AGPL/SEL). Data must be migrated from v0.16.x using the migration tool.
otherSettings schema: multiple objects, fields and enumeration values were renamed, restructured (AI models, OIDC directories, Azure Blob Storage, HTTP forwarded headers) or removed, and internal identifiers were renumbered. See SCHEMA_CHANGES.md for the full list.
featureTelemetry: New events and metrics were added and event identifiers were renumbered. See SCHEMA_CHANGES.md.
securityOAuth: The OAuth Profile for Open Public Clients is now fully enforced. If you use an external OIDC provider, make sure it conforms to the draft; otherwise mail clients such as Apple Mail will stop working with it as they adopt the profile. Ask your provider to add support, or, at your own risk,…
otherUpdated IETF drafts:
otherDKIM2 to draft-ietf-dkim-dkim2-spec-07.
otherJMAP for Calendars to draft-ietf-jmap-calendars-33.
featureDevelopment: Test suites (unit, integration, conformance and stress) are now kept in a private repository, and new features are developed privately before release. The source code of every release remains public under the AGPL-3.0. Learn why
fixMultiple bug and security fixes.
+5 more items in the release notes