v0.16.13

diffusionstudio/corev0.16.13Jul 12, 2026by github-actions[bot]

AI Summary

Adds FreeBSD support and fixes numerous bugs across OAuth, PostgreSQL, JMAP, Directory, DNS, Sieve, and MTA components. Includes fixes for duration validation and branding issues.

Key Highlights

  • Added FreeBSD support
  • Fixed OAuth resource indicators (imap, smtp, pop3, sieve)
  • Fixed JMAP VacationResponse and Capabilities (RFC-3339 dates)
  • Fixed DNS CAA management and multiple provider issues
  • Fixed Sieve loop detection and MTA queue processing

New Features

  • FreeBSD support

Full Release Notes

## [0.16.13] - 2026-07-12

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
- FreeBSD support.

## Changed

## Fixed
- OAuth resource indicators: Accept `imap`, `smtp`, `pop3` and `sieve` as valid resource indicators for OAuth access tokens.
- PostgreSQL: Incomplete channel binding implementation.
- JMAP:
  - VacationResponse: `isEnabled` reset to false whenever properties are changed.
  - Capabilities: Return RFC-3339-conformant UTCDate literals in capabilities: min `0001-01-01T00:00:00Z`, max `9999-12-31T23:59:59Z`.
- Directory: Update local groups only when the external directory includes a group attribute.
- DNS Management: 
  - CAA management deletes too third-party CAA entries.
  - Multiple provider fixes (see `dns-update` crate changelog).
- Reject invalid duration values (e.g. `1h30m`).
- Branding: Custom logos for domains do not work.
- Sieve: add `Received` headers to auto-generated messages and detect loops.
- MTA: Resume queue processing does not work.
- Misconfigured in-memory store cannot be recovered in recovery mode.


<hr />

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