v0.8.3
This commit is contained in:
16
CHANGELOG.md
16
CHANGELOG.md
@@ -2,6 +2,22 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/).
|
All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
|
|
||||||
|
## [0.8.3] - 2024-07-01
|
||||||
|
|
||||||
|
To upgrade replace the `stalwart-mail` binary and then upgrade to the latest web-admin.
|
||||||
|
|
||||||
|
## Added
|
||||||
|
- Two-factor authentication with Time-based One-Time Passwords (#436)
|
||||||
|
- Application passwords (#479).
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- DANE success on EndEntity match regardless of TrustAnchor validation.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fix ManageSieve GETSCRIPT response: Add missing CRLF (#563)
|
||||||
|
- Do not return CAPABILITIES after ManageSieve AUTH=PLAIN SASL exchange (#548)
|
||||||
|
- POP3 QUIT must write a response (#568)
|
||||||
|
|
||||||
## [0.8.2] - 2024-06-22
|
## [0.8.2] - 2024-06-22
|
||||||
|
|
||||||
To upgrade replace the `stalwart-mail` binary and then upgrade to the latest web-admin and spam filter versions.
|
To upgrade replace the `stalwart-mail` binary and then upgrade to the latest web-admin and spam filter versions.
|
||||||
|
|||||||
28
Cargo.lock
generated
28
Cargo.lock
generated
@@ -1016,7 +1016,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "common"
|
name = "common"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ahash 0.8.11",
|
"ahash 0.8.11",
|
||||||
"arc-swap",
|
"arc-swap",
|
||||||
@@ -1614,7 +1614,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "directory"
|
name = "directory"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ahash 0.8.11",
|
"ahash 0.8.11",
|
||||||
"argon2",
|
"argon2",
|
||||||
@@ -2926,7 +2926,7 @@ checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "imap"
|
name = "imap"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ahash 0.8.11",
|
"ahash 0.8.11",
|
||||||
"common",
|
"common",
|
||||||
@@ -3128,7 +3128,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "jmap"
|
name = "jmap"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes",
|
"aes",
|
||||||
"aes-gcm",
|
"aes-gcm",
|
||||||
@@ -3565,7 +3565,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mail-server"
|
name = "mail-server"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"common",
|
"common",
|
||||||
"directory",
|
"directory",
|
||||||
@@ -3585,7 +3585,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "managesieve"
|
name = "managesieve"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ahash 0.8.11",
|
"ahash 0.8.11",
|
||||||
"bincode",
|
"bincode",
|
||||||
@@ -3862,7 +3862,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nlp"
|
name = "nlp"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ahash 0.8.11",
|
"ahash 0.8.11",
|
||||||
"bincode",
|
"bincode",
|
||||||
@@ -4418,7 +4418,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pop3"
|
name = "pop3"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"common",
|
"common",
|
||||||
"imap",
|
"imap",
|
||||||
@@ -5589,7 +5589,7 @@ checksum = "b84345e4c9bd703274a082fb80caaa99b7612be48dfaa1dd9266577ec412309d"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "se_common"
|
name = "se_common"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"common",
|
"common",
|
||||||
"tracing",
|
"tracing",
|
||||||
@@ -5597,7 +5597,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "se_licensing"
|
name = "se_licensing"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64 0.22.1",
|
"base64 0.22.1",
|
||||||
"ring 0.17.8",
|
"ring 0.17.8",
|
||||||
@@ -5975,7 +5975,7 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "smtp"
|
name = "smtp"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ahash 0.8.11",
|
"ahash 0.8.11",
|
||||||
"bincode",
|
"bincode",
|
||||||
@@ -6092,7 +6092,7 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "stalwart-cli"
|
name = "stalwart-cli"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap",
|
"clap",
|
||||||
"console",
|
"console",
|
||||||
@@ -6123,7 +6123,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "store"
|
name = "store"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ahash 0.8.11",
|
"ahash 0.8.11",
|
||||||
"arc-swap",
|
"arc-swap",
|
||||||
@@ -7063,7 +7063,7 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "utils"
|
name = "utils"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ahash 0.8.11",
|
"ahash 0.8.11",
|
||||||
"base64 0.22.1",
|
"base64 0.22.1",
|
||||||
|
|||||||
@@ -94,6 +94,7 @@ Key features:
|
|||||||
- Encryption at rest with **S/MIME** or **OpenPGP**.
|
- 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.
|
- 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.
|
- OAuth 2.0 [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) and Application passwords (App Passwords).
|
||||||
- Automated blocking of hosts that cause multiple authentication errors (aka **fail2ban**).
|
- Automated blocking of hosts that cause multiple authentication errors (aka **fail2ban**).
|
||||||
- Access Control Lists (ACLs).
|
- Access Control Lists (ACLs).
|
||||||
- Rate limiting.
|
- Rate limiting.
|
||||||
@@ -135,6 +136,12 @@ Part of the development of this project was funded through the [NGI0 Entrust Fun
|
|||||||
|
|
||||||
If you find the project useful you can help by [becoming a sponsor](https://liberapay.com/stalwartlabs). Thank you!
|
If you find the project useful you can help by [becoming a sponsor](https://liberapay.com/stalwartlabs). Thank you!
|
||||||
|
|
||||||
|
## Sponsors
|
||||||
|
|
||||||
|
These are our open-source sponsors. If you would like to support our work, please consider [becoming a sponsor](https://github.com/sponsors/stalwartlabs).
|
||||||
|
|
||||||
|
<!-- sponsors --><!-- sponsors -->
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
This project is dual-licensed under the **GNU Affero General Public License v3.0** (AGPL-3.0; as published by the Free Software Foundation) and the **Stalwart Enterprise License v1 (SELv1)**:
|
This project is dual-licensed under the **GNU Affero General Public License v3.0** (AGPL-3.0; as published by the Free Software Foundation) and the **Stalwart Enterprise License v1 (SELv1)**:
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ authors = ["Stalwart Labs Ltd. <hello@stalw.art>"]
|
|||||||
license = "AGPL-3.0-only OR LicenseRef-SEL"
|
license = "AGPL-3.0-only OR LicenseRef-SEL"
|
||||||
repository = "https://github.com/stalwartlabs/cli"
|
repository = "https://github.com/stalwartlabs/cli"
|
||||||
homepage = "https://github.com/stalwartlabs/cli"
|
homepage = "https://github.com/stalwartlabs/cli"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "common"
|
name = "common"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "directory"
|
name = "directory"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "imap"
|
name = "imap"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "jmap"
|
name = "jmap"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ pub enum AccountAuthRequest {
|
|||||||
SetPassword { password: String },
|
SetPassword { password: String },
|
||||||
EnableOtpAuth { url: String },
|
EnableOtpAuth { url: String },
|
||||||
DisableOtpAuth { url: Option<String> },
|
DisableOtpAuth { url: Option<String> },
|
||||||
AddAppPassword { name: String },
|
AddAppPassword { name: String, password: String },
|
||||||
RemoveAppPassword { name: String },
|
RemoveAppPassword { name: String },
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -443,9 +443,11 @@ impl JMAP {
|
|||||||
PrincipalAction::RemoveItem,
|
PrincipalAction::RemoveItem,
|
||||||
url.unwrap_or_else(|| "otpauth://".to_string()),
|
url.unwrap_or_else(|| "otpauth://".to_string()),
|
||||||
),
|
),
|
||||||
AccountAuthRequest::AddAppPassword { name } => (PrincipalAction::AddItem, name),
|
AccountAuthRequest::AddAppPassword { name, password } => {
|
||||||
|
(PrincipalAction::AddItem, format!("$app${name}${password}"))
|
||||||
|
}
|
||||||
AccountAuthRequest::RemoveAppPassword { name } => {
|
AccountAuthRequest::RemoveAppPassword { name } => {
|
||||||
(PrincipalAction::RemoveItem, name)
|
(PrincipalAction::RemoveItem, format!("$app${name}"))
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ homepage = "https://stalw.art"
|
|||||||
keywords = ["imap", "jmap", "smtp", "email", "mail", "server"]
|
keywords = ["imap", "jmap", "smtp", "email", "mail", "server"]
|
||||||
categories = ["email"]
|
categories = ["email"]
|
||||||
license = "AGPL-3.0-only OR LicenseRef-SEL"
|
license = "AGPL-3.0-only OR LicenseRef-SEL"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "managesieve"
|
name = "managesieve"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "nlp"
|
name = "nlp"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "pop3"
|
name = "pop3"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "se_common"
|
name = "se_common"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "LicenseRef-SEL"
|
license = "LicenseRef-SEL"
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "se_licensing"
|
name = "se_licensing"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "LicenseRef-SEL"
|
license = "LicenseRef-SEL"
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ homepage = "https://stalw.art/smtp"
|
|||||||
keywords = ["smtp", "email", "mail", "server"]
|
keywords = ["smtp", "email", "mail", "server"]
|
||||||
categories = ["email"]
|
categories = ["email"]
|
||||||
license = "AGPL-3.0-only OR LicenseRef-SEL"
|
license = "AGPL-3.0-only OR LicenseRef-SEL"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "store"
|
name = "store"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "utils"
|
name = "utils"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user