v0.16.21
opencode-ai/opencodev0.16.21Sep 6, 2026by github-actions[bot]
Upgrading?
AI Summary
Update to Stalwart Mail Server focusing on improvements to JMAP, IMAP, Sieve, and LDAP security.
Key Highlights
- Sieve DKIM signing updates for user scripts
- JMAP fixes for Calendar, AddressBook, and EventSource
- IMAP pipelined command fixes
- LDAP security fix for unauthenticated bind
New Features
- Sieve DKIM signing via `SieveUserInterpreter.dkimSignDomain`
- JMAP property fixes for Calendar and AddressBook
- IMAP pipelined STATUS and FETCH completion fixes
- LDAP unauthenticated bind security patch
- IPv6 fallback to IPv4 on EPROTONOSUPPORT
Full Release Notes
## [0.16.21] - 2026-09-06 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](https://github.com/stalwartlabs/stalwart/blob/main/UPGRADING/v0_16.md) for more information on how to upgrade from previous versions. ## Added ## Changed - Sieve: Messages generated by user scripts are DKIM signed through the new `SieveUserInterpreter.dkimSignDomain` setting, which defaults to the account's own domain. ## Fixed - JMAP: - `CalendarEvent/set` requests that ask for scheduling messages are rejected with a `forbidden` error when the account cannot send them. - `Calendar/get` and `AddressBook/get` return every property when the `properties` argument is omitted or `null`. - EventSource `ping` events advertise the interval in seconds rather than milliseconds. - Calendar synthetic ids returned when expanding recurrences identify an occurrence by its recurrence id. - IMAP: Every command in a pipelined `STATUS` or `FETCH` batch receives its tagged completion, instead of the first failing command dropping the responses for all commands queued behind it. - WebDAV: Accounts without a storage quota no longer advertise a 4 GiB limit in `DAV:quota-available-bytes`. - MTA: Inbound DMARC and TLS aggregate reports that a reporter sends more than once are imported again as a duplicate entry. - Spam filter: Domain and URL blocklists are queried only for text written as a link. - iTIP: Detaching an occurrence that the recurrence rule already generates is sent as a `METHOD:REQUEST` carrying the `RECURRENCE-ID` instead of a `METHOD:ADD`. - Sieve: `fileinto :specialuse` and `specialuse_exists` accept special-use attributes in the `\Trash` form. - LDAP: Active Directory servers that answer an unauthenticated bind (a non-empty DN with a zero-length password) with success no longer authenticate accounts without a password. - Network: Listeners bound to the unspecified IPv6 address (`[::]`) fall back to IPv4 when socket creation fails with `EPROTONOSUPPORT`. - OpenTelemetry: log exporter does not include the parent span's attributes. <hr /> ### Check binary attestation [here](https://github.com/stalwartlabs/stalwart/attestations/45587073)
Related Repositories
ollama/ollama★ 184,224
Get up and running with Kimi, GLM, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other models.
fatedier/frp★ 110,061
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
infiniflow/ragflow★ 92,626
RAGFlow is a leading open-source Retrieval-Augmented Generation (RAG) engine that fuses cutting-edge RAG with Agent capabilities to create a superior context layer for LLMs
gohugoio/hugo★ 90,199
The world’s fastest framework for building websites.
junegunn/fzf★ 83,715
:cherry_blossom: A command-line fuzzy finder