v0.16.1

stalwartlabs/stalwartv0.16.1Apr 25, 2026by github-actions[bot]

AI Summary

Bug fixes for JMAP, IMAP, WebDAV, and ACME, plus new system expression variables.

Key Highlights

  • Added `system('node_hostname')` and `system('node_role')` expression variables.
  • Fixed JMAP `receivedAt` headers and sorting order issues.
  • Fixed IMAP `BINARY` fetch responses.
  • Fixed ACME to allow requesting apex domain certificates.

New Features

  • `system('node_hostname')` expression variable
  • `system('node_role')` expression variable

Full Release Notes

## [0.16.1] - 2026-04-25

This version includes **multiple breaking changes**. 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
- OIDC: Extract username from JWT token.
- `system('node_hostname')` and `system('node_role')` expression variables to retrieve the local node hostname and cluster role respectively.

## Changed

## Fixed
- JMAP:
  - Invalid `receivedAt` headers after importing (#2939).
  - Sorting order issues when emails lack `receivedAt` headers.
- IMAP: Fix `BINARY` fetch responses (#2940).
- WebDAV: Fix ACL validation for target folders.
- ACME: Allow requesting apex domain certificates.
- Hostname issues: 
  - Accept RFC 6761 reserved TLDs during bootstrap.
  - Allow hostnames without TLDs in remote server settings.
- Reverse proxy issues.
- OSS builds.
- DNS Updater:
  - RFC2136: TSIG secret not base64 decoded.
  - Google DNS: Chunk TXT records when they exceed 255 characters.
  - Cloudflare: 
    - Fix `CAA` record updates.
    - Check zone subdomains when finding zones



<hr />

### Check binary attestation [here](https://github.com/stalwartlabs/stalwart/attestations/25562510)