diff --git a/CHANGELOG.md b/CHANGELOG.md index 89713dbf0..61362e9ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,24 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## [0.5.3] - 2024-01-14 + +Please read the [UPGRADING.md](UPGRADING.md) file for more information on how to upgrade from previous versions. + +## Added +- Built-in [fail2ban](https://stalw.art/docs/server/fail2ban) and IP address/mask blocking (#164). +- CLI: Read URL and credentials from environment variables (#88). +- mySQL driver: Add `max-allowed-packet` setting (#201). + +### Changed +- Unified storage settings for all services (read the [UPGRADING.md](UPGRADING.md) for details) + +### Fixed +- IMAP retrieval of auto-encrypted emails (#203). +- mySQL driver: Parse `timeout.wait` property as duration (#202). +- `X-Forwarded-For` header on JMAP Rate-Limit does not work (#208). +- Use timeouts in install script (#138). + ## [0.5.2] - 2024-01-07 Please read the [UPGRADING.md](UPGRADING.md) file for more information on how to upgrade from previous versions. diff --git a/Cargo.lock b/Cargo.lock index 9871da994..c8ee27941 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2551,7 +2551,7 @@ checksum = "029d73f573d8e8d63e6d5020011d3255b28c3ba85d6cf870a07184ed23de9284" [[package]] name = "imap" -version = "0.5.2" +version = "0.5.3" dependencies = [ "ahash 0.8.7", "dashmap", @@ -2728,7 +2728,7 @@ dependencies = [ [[package]] name = "jmap" -version = "0.5.2" +version = "0.5.3" dependencies = [ "aes", "aes-gcm", @@ -3138,7 +3138,7 @@ dependencies = [ [[package]] name = "mail-server" -version = "0.5.2" +version = "0.5.3" dependencies = [ "directory", "imap", @@ -3155,7 +3155,7 @@ dependencies = [ [[package]] name = "managesieve" -version = "0.5.2" +version = "0.5.3" dependencies = [ "ahash 0.8.7", "bincode", @@ -3422,7 +3422,7 @@ dependencies = [ [[package]] name = "nlp" -version = "0.5.2" +version = "0.5.3" dependencies = [ "ahash 0.8.7", "bincode", @@ -5385,7 +5385,7 @@ checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "smtp" -version = "0.5.2" +version = "0.5.3" dependencies = [ "ahash 0.8.7", "bincode", @@ -5507,7 +5507,7 @@ dependencies = [ [[package]] name = "stalwart-cli" -version = "0.5.2" +version = "0.5.3" dependencies = [ "clap", "console", @@ -5531,7 +5531,7 @@ dependencies = [ [[package]] name = "stalwart-install" -version = "0.5.2" +version = "0.5.3" dependencies = [ "base64 0.21.5", "clap", @@ -6414,7 +6414,7 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "utils" -version = "0.5.2" +version = "0.5.3" dependencies = [ "ahash 0.8.7", "arc-swap", diff --git a/README.md b/README.md index 838b3d2a0..207957f51 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,7 @@ Key features: - Encryption at rest with **S/MIME** or **OpenPGP**. - Automatic TLS certificate provisioning with [ACME](https://datatracker.ietf.org/doc/html/rfc8555). - OAuth 2.0 [authorization code](https://www.rfc-editor.org/rfc/rfc8628) and [device authorization](https://www.rfc-editor.org/rfc/rfc8628) flows. + - Automated blocking of hosts that cause multiple authentication errors (aka **fail2ban**). - Access Control Lists (ACLs). - Rate limiting. - Security audited (read the [report](https://stalw.art/blog/security-audit)). diff --git a/UPGRADING.md b/UPGRADING.md index 1deecdc3d..270d50c61 100644 --- a/UPGRADING.md +++ b/UPGRADING.md @@ -1,3 +1,19 @@ +Upgrading from `v0.5.2` to `v0.5.3` +----------------------------------- + +- The following configuration attributes have been renamed, see [store.toml](https://github.com/stalwartlabs/mail-server/blob/main/resources/config/common/store.toml) for an example: + - `jmap.store.data` -> `storage.data` + - `jmap.store.fts` -> `storage.fts` + - `jmap.store.blob` -> `storage.blob` + - `jmap.encryption.*` -> `storage.encryption.*` + - `jmap.spam.header` -> `storage.spam.header` + - `jmap.fts.default-language` -> `storage.fts.default-language` + - `jmap.cluster.node-id` -> `storage.cluster.node-id` + - `management.directory` and `sieve.trusted.default.directory` -> `storage.directory` + - `sieve.trusted.default.store` -> `storage.lookup` +- Proxy networks are now configured under `server.proxy.trusted-networks` rather than `server.proxy-trusted-networks`. IP addresses/masks have to be defined within a set (`{}`) rather than a list (`[]`), see [server.toml](https://github.com/stalwartlabs/mail-server/blob/main/resources/config/common/server.toml) for an example. + + Upgrading from `v0.5.1` to `v0.5.2` ----------------------------------- diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 581ad8ad9..eb56d6c33 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Stalwart Labs Ltd. "] license = "AGPL-3.0-only" repository = "https://github.com/stalwartlabs/cli" homepage = "https://github.com/stalwartlabs/cli" -version = "0.5.2" +version = "0.5.3" edition = "2021" readme = "README.md" resolver = "2" diff --git a/crates/imap/Cargo.toml b/crates/imap/Cargo.toml index 93c81abe3..09126e087 100644 --- a/crates/imap/Cargo.toml +++ b/crates/imap/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "imap" -version = "0.5.2" +version = "0.5.3" edition = "2021" resolver = "2" diff --git a/crates/install/Cargo.toml b/crates/install/Cargo.toml index 3de253bb3..6462149f5 100644 --- a/crates/install/Cargo.toml +++ b/crates/install/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Stalwart Labs Ltd. "] license = "AGPL-3.0-only" repository = "https://github.com/stalwartlabs/mail-server" homepage = "https://github.com/stalwartlabs/mail-server" -version = "0.5.2" +version = "0.5.3" edition = "2021" readme = "README.md" resolver = "2" diff --git a/crates/jmap/Cargo.toml b/crates/jmap/Cargo.toml index f545dd5aa..27f6766a6 100644 --- a/crates/jmap/Cargo.toml +++ b/crates/jmap/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "jmap" -version = "0.5.2" +version = "0.5.3" edition = "2021" resolver = "2" diff --git a/crates/main/Cargo.toml b/crates/main/Cargo.toml index ed369e3db..9d67d5ed3 100644 --- a/crates/main/Cargo.toml +++ b/crates/main/Cargo.toml @@ -7,7 +7,7 @@ homepage = "https://stalw.art" keywords = ["imap", "jmap", "smtp", "email", "mail", "server"] categories = ["email"] license = "AGPL-3.0-only" -version = "0.5.2" +version = "0.5.3" edition = "2021" resolver = "2" diff --git a/crates/main/src/main.rs b/crates/main/src/main.rs index 7e0ccebda..b69834b61 100644 --- a/crates/main/src/main.rs +++ b/crates/main/src/main.rs @@ -73,8 +73,6 @@ async fn main() -> std::io::Result<()> { .reload(&config) .failed("Invalid configuration"); - let todo = "Update config.zip"; - // Parse directories let directory = config .parse_directory(&stores, &servers, data_store) diff --git a/crates/managesieve/Cargo.toml b/crates/managesieve/Cargo.toml index cbdaf1caa..eae37824c 100644 --- a/crates/managesieve/Cargo.toml +++ b/crates/managesieve/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "managesieve" -version = "0.5.2" +version = "0.5.3" edition = "2021" resolver = "2" diff --git a/crates/nlp/Cargo.toml b/crates/nlp/Cargo.toml index c1250a8ec..530a919f4 100644 --- a/crates/nlp/Cargo.toml +++ b/crates/nlp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nlp" -version = "0.5.2" +version = "0.5.3" edition = "2021" resolver = "2" diff --git a/crates/smtp/Cargo.toml b/crates/smtp/Cargo.toml index 668c78170..2e689b8cb 100644 --- a/crates/smtp/Cargo.toml +++ b/crates/smtp/Cargo.toml @@ -7,7 +7,7 @@ homepage = "https://stalw.art/smtp" keywords = ["smtp", "email", "mail", "server"] categories = ["email"] license = "AGPL-3.0-only" -version = "0.5.2" +version = "0.5.3" edition = "2021" resolver = "2" diff --git a/crates/utils/Cargo.toml b/crates/utils/Cargo.toml index b83fee199..e8e6f0e99 100644 --- a/crates/utils/Cargo.toml +++ b/crates/utils/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "utils" -version = "0.5.2" +version = "0.5.3" edition = "2021" resolver = "2" diff --git a/resources/config.zip b/resources/config.zip index a53e77eac..a79ac6fbe 100644 Binary files a/resources/config.zip and b/resources/config.zip differ