v0.16.21
aandrew-me/ytDownloaderv0.16.21Sep 6, 2026by github-actions[bot]
Upgrading?
AI Summary
This release focuses on correcting bugs in JMAP scheduling, IMAP pipelining, and Sieve special-use attribute handling.
Key Highlights
- Fixed JMAP scheduling forbidden errors
- Corrected IMAP pipelined STATUS/FETCH responses
- Sieve support for '\Trash' special-use attributes
- Fixed Active Directory unauthenticated bind authentication
- Fixed Sieve DKIM signing domain setting
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
affaan-m/ECC★ 285,923
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
react/react★ 251,630
The library for web and native user interfaces.
nodejs/node★ 122,528
Node.js JavaScript runtime ✨🐢🚀✨
Leonxlnx/taste-skill★ 100,733
Agent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
louislam/uptime-kuma★ 92,731
A fancy self-hosted monitoring tool