mirror of
https://github.com/stalwartlabs/proxy.git
synced 2026-10-30 08:13:47 +00:00
3.7 KiB
3.7 KiB
Change Log
All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
[1.0.5] - 2026-10-25
Added
Changed
- Replaced
base64withencodify. - An HTTP route's
fallbackis now honoured: unmatched or unmapped requests on that route go to the fallback destination instead ofrouting.default_destination. Afallbacknaming an undeclared destination, or one that does not declare thehttpprotocol, is rejected at startup. - A login held by
POST /connections/delaynow resolves its destination when the hold ends instead of before it. PUT /mappings,DELETE /mappingsandPOST /cache/invalidate?identifier=end the login delay of that identifier;POST /mappings/reloadandPOST /cache/invalidatewithout an identifier end every login delay. Held logins proceed at once to the newly mapped destination.- Calling
POST /connections/delayagain for an identifier also moves the hold deadline of logins already waiting (still capped at 120 seconds per login).
Fixed
- The sample configuration written by
install.shandresources/config.sample.tomlnamed an undeclared HTTP route fallback (default) and failed startup validation. resources/config.stalwart-upgrade.tomlnow documents the WebUI OAuth client identifiers (https://<host>/admin/oauth-client.json,https://<host>/account/oauth-client.json) and pins/admin,/account,/api/auth/**to the new deployment.- The
POST /config/reloadresponse no longer claims that cache capacity and TTLs require a restart; a reload rebuilds the router and its cache. POST /connections/delaywith asecondsvalue too large to represent now returns400instead of panicking.
[1.0.4] - 2026-09-10
Added
Changed
- HTTP and JMAP connections are pinned to the account that authenticated them.
- HTTP and JMAP routing identifiers are split on
routing.master_user_separators. - A backend authentication failure now counts towards
listener.max_auth_attempts.
Fixed
- A backend authentication failure no longer leaves the client bridged to the backend unparsed.
POST /connections/kicknow covers HTTP and JMAP sessions, including upgraded WebSocket bridges.POST /connections/delaynow covers HTTP and JMAP logins.- A rejected SASL response is no longer re-parsed as a command, which charged two authentication failures for one client mistake and could drop a command pipelined behind it.
- An empty routing identifier is no longer treated as an account, so it is neither registered nor used to pin an HTTP connection.
- A backend leg rejected at authentication is now closed with the protocol's logout command instead of having its socket dropped.
[1.0.3] - 2026-08-30
Added
Changed
Fixed
- IMAP authentication is no longer replayed with an inline initial response to backends that do not advertise
SASL-IR(#4).
[1.0.2] - 2026-07-31
Added
AUTH LOGINsupport on IMAP, POP3, ManageSieve and SMTP submission (#3).
Changed
LOGINis now part of the defaultcapabilities.<protocol>.saslset.
Fixed
[1.0.1] - 2026-07-30
Added
server.host_down_min_clients: number of distinct client addresses a failure streak must span before client-attributable failures can mark a destination down.GET /destinationsnow also reportsfailure_sourcesandhost_level_failure.
Changed
Fixed
- The circuit breaker no longer marks a destination down because a backend rejects the connections of a single banned client (#2).
[1.0.0] - 2026-06-08
Added
- Initial release of the migration proxy: pre-auth routing and socket bridging for SMTP, submission, LMTP, IMAP, POP3, ManageSieve and HTTP/HTTPS.