This commit is contained in:
mdecimus 2024-02-14 17:44:00 +01:00
parent 10cfd9b07b
commit d9fde297f7
5 changed files with 530 additions and 496 deletions

View file

@ -2,6 +2,21 @@
All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/).
## [0.6.0] - 2024-02-14
This version introduces breaking changes in the configuration file. Please read the [UPGRADING.md](UPGRADING.md) file for more information on how to upgrade from previous versions.
## Added
- Distributed and fault-tolerant SMTP message queues.
- Distributed rate-limiting and fail2ban.
- Expressions in configuration files.
### Changed
### Fixed
- Do not include `STATUS` in IMAP `NOOP` responses (#234).
- Allow multiple SMTP `HELO` commands.
## [0.5.0] - 2023-12-27
This version introduces some breaking changes in the configuration file. Please read the [UPGRADING.md](UPGRADING.md) file for more information.

987
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -7,7 +7,7 @@ homepage = "https://stalw.art/smtp"
keywords = ["smtp", "email", "mail", "server"]
categories = ["email"]
license = "AGPL-3.0-only"
version = "0.5.0"
version = "0.6.0"
edition = "2021"
resolver = "2"

2
main

@ -1 +1 @@
Subproject commit ec077d8796970d2535a08768a431d7cacf21fc39
Subproject commit 53f0222f308b3e844c158fc0e603d10361da3c63

View file

@ -42,7 +42,7 @@ pub const IPC_CHANNEL_BUFFER: usize = 1024;
#[tokio::main]
async fn main() -> std::io::Result<()> {
let config = Config::init();
let mut config = Config::init();
// Enable tracing
let _tracer = enable_tracing(
&config,
@ -57,17 +57,25 @@ async fn main() -> std::io::Result<()> {
// Bind ports and drop privileges
servers.bind(&config);
// Parse stores and directories
// Parse stores
let stores = config.parse_stores().await.failed("Invalid configuration");
let data_store = stores
.get_store(&config, "storage.data")
.failed("Invalid configuration");
// Update configuration
config.update(data_store.config_list("").await.failed("Storage error"));
// Parse directories
let directory = config
.parse_directory(&stores, config.value("jmap.store.data"))
.parse_directory(&stores, data_store)
.await
.failed("Invalid configuration");
let schedulers = config
.parse_purge_schedules(
&stores,
config.value("jmap.store.data"),
config.value("jmap.store.blob"),
config.value("storage.data"),
config.value("storage.blob"),
)
.await
.failed("Invalid configuration");
@ -98,7 +106,7 @@ async fn main() -> std::io::Result<()> {
}
ServerProtocol::ManageSieve => {
tracing::debug!(
"Ignoring ManageSieve server listener, not supported by JMAP-only release."
"Ignoring ManageSieve server listener, not supported by SMTP-only release."
);
}
};