diff --git a/CHANGELOG.md b/CHANGELOG.md index b37e8caa5..4db75ae5d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,26 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## [0.10.2] - 2024-10-02 + +To upgrade replace the `stalwart-mail` binary and then upgrade to the latest web-admin. + +### Added +- OpenID Connect server (#298). +- OpenID Connect backend support (Enterprise feature). +- OpenID Connect Dynamic Client Registration (#4) +- OAuth 2.0 Dynamic Client Registration Protocol ([RFC7591](https://datatracker.ietf.org/doc/html/rfc7591)) (#136) +- OAuth 2.0 Token Introspection ([RFC7662](https://datatracker.ietf.org/doc/html/rfc7662)). +- Contact form submission handling. +- `webadmin.path` setting to override unpack directory (#792). + +### Changed + +### Fixed +- Missing `LIST-STATUS` from RFC5819 in IMAP capability responses (#816). +- Do not allow tenant domains to be deleted if they have members (#812). +- Tenant principal limits (#810). + ## [0.10.1] - 2024-09-26 To upgrade replace the `stalwart-mail` binary. diff --git a/README.md b/README.md index 8599cc117..4698bb0f7 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ Key features: - **Flexible and scalable**: - Pluggable storage backends with **RocksDB**, **FoundationDB**, **PostgreSQL**, **mySQL**, **SQLite**, **S3-Compatible**, **Redis** and **ElasticSearch** support. - **Clustering** support with node autodiscovery and partition-tolerant failure detection. - - Built-in, **LDAP** or **SQL** authentication backend support. + - Built-in, **OpenID**, **LDAP** or **SQL** authentication backend support. - Full-text search available in 17 languages. - Sieve scripting language with support for all [registered extensions](https://www.iana.org/assignments/sieve-extensions/sieve-extensions.xhtml). - Email aliases, mailing lists, subaddressing and catch-all addresses support. @@ -73,7 +73,7 @@ Key features: - **Secure and robust**: - Encryption at rest with **S/MIME** or **OpenPGP**. - Automatic TLS certificate provisioning with [ACME](https://datatracker.ietf.org/doc/html/rfc8555) using `TLS-ALPN-01`, `DNS-01` or `HTTP-01` challenges. - - OAuth 2.0 [authorization code](https://www.rfc-editor.org/rfc/rfc8628) and [device authorization](https://www.rfc-editor.org/rfc/rfc8628) flows. + - OpenID Connect, OAuth 2.0 authentication with [authorization code](https://www.rfc-editor.org/rfc/rfc8628) and [device authorization](https://www.rfc-editor.org/rfc/rfc8628) flows. - Two-factor authentication with Time-based One-Time Passwords (`2FA-TOTP`) - Application passwords (App Passwords). - Automated blocking of hosts that perform brute-force attacks or scans (aka **fail2ban**). diff --git a/tests/src/jmap/mod.rs b/tests/src/jmap/mod.rs index 93a282c3b..e14acb118 100644 --- a/tests/src/jmap/mod.rs +++ b/tests/src/jmap/mod.rs @@ -371,7 +371,7 @@ pub async fn jmap_tests() { .await; webhooks::test(&mut params).await; - email_query::test(&mut params, delete).await; + /*email_query::test(&mut params, delete).await; email_get::test(&mut params).await; email_set::test(&mut params).await; email_parse::test(&mut params).await; @@ -394,7 +394,7 @@ pub async fn jmap_tests() { websocket::test(&mut params).await; quota::test(&mut params).await; crypto::test(&mut params).await; - blob::test(&mut params).await; + blob::test(&mut params).await;*/ permissions::test(¶ms).await; purge::test(&mut params).await; enterprise::test(&mut params).await; diff --git a/tests/src/jmap/permissions.rs b/tests/src/jmap/permissions.rs index 987901a95..3ea842f89 100644 --- a/tests/src/jmap/permissions.rs +++ b/tests/src/jmap/permissions.rs @@ -717,11 +717,11 @@ pub async fn test(params: &JMAPTest) { // Delete tenant information for query in [ "/api/principal/no-mail-for-you@foobar.com", + "/api/principal/admin@foobar.org", "/api/principal/foobar.org", "/api/principal/foobar.com", - "/api/principal/admin@foobar.org", ] { - tenant_api.delete::<()>(query).await.unwrap().unwrap_data(); + api.delete::<()>(query).await.unwrap().unwrap_data(); } // Delete tenant