mirror of
https://github.com/stalwartlabs/mail-server.git
synced 2025-09-04 02:54:11 +08:00
v0.13.2
This commit is contained in:
parent
d254d209af
commit
285d1cc90e
31 changed files with 117 additions and 62 deletions
23
CHANGELOG.md
23
CHANGELOG.md
|
@ -2,6 +2,29 @@
|
|||
|
||||
All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
## [0.13.2] - 2025-07-27
|
||||
|
||||
If you are upgrading from v0.11.x or v0.12.x, this version includes **breaking changes** to the message queue and MTA configuration. Please read the [UPGRADING.md](https://github.com/stalwartlabs/stalwart/blob/main/UPGRADING.md) file for more information on how to upgrade from previous versions.
|
||||
|
||||
## Added
|
||||
- ACME: DeSEC cloud DNS provider support (contributed by @Tyr3al).
|
||||
- CalDAV Scheduling: Catalan language support (contributed by @jolupa) (#1873).
|
||||
- MTA: Allow to send e-mails as group, while member of that group (#485).
|
||||
- OIDC: Allow local access tokens to be used with third-party OIDC backends (#1311 stalwartlabs/webadmin#52).
|
||||
|
||||
## Changed
|
||||
- IMAP: Return `OK` when moving/copying non-existent messages (#670).
|
||||
- IMAP: Copy flags when copying/moving messages between accounts.
|
||||
|
||||
## Fixed
|
||||
- MTA: Do not convert e-mail local parts to lowercase (#1916).
|
||||
- Sieve: `fileinto` should override spam filter (#1917).
|
||||
- JMAP: Incorrect `accountId` used in email set and import methods (#1777).
|
||||
- WebDAV: Always return `MULTISTATUS` when calendar-query yields no results.
|
||||
- LDAP: Only set account name if not returned in LDAP query (#1471).
|
||||
- Enterprise: Invalidate logo cache when changes are made (#1856).
|
||||
- Enterprise: Fix tenant quota update API.
|
||||
|
||||
## [0.13.1] - 2025-07-16
|
||||
|
||||
If you are upgrading from v0.11.x or v0.12.x, this version includes **breaking changes** to the message queue and MTA configuration. Please read the [UPGRADING.md](https://github.com/stalwartlabs/stalwart/blob/main/UPGRADING.md) file for more information on how to upgrade from previous versions.
|
||||
|
|
62
Cargo.lock
generated
62
Cargo.lock
generated
|
@ -1263,7 +1263,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "common"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"aes-gcm-siv",
|
||||
"ahash",
|
||||
|
@ -1733,7 +1733,7 @@ checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476"
|
|||
|
||||
[[package]]
|
||||
name = "dav"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"calcard",
|
||||
"chrono",
|
||||
|
@ -1755,7 +1755,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "dav-proto"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"calcard",
|
||||
"chrono",
|
||||
|
@ -1948,7 +1948,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "directory"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"argon2",
|
||||
|
@ -2051,9 +2051,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "dns-update"
|
||||
version = "0.1.3"
|
||||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "12c278a5523000f9ccab46e4ef779a4354129f762884b36fb1b1b5ed58830d20"
|
||||
checksum = "41dbb7b41e755c6d9f9a62d3861e84fd33860b796d93aea6cfc8ef1068f4bff6"
|
||||
dependencies = [
|
||||
"hickory-client",
|
||||
"reqwest 0.12.15",
|
||||
|
@ -2226,7 +2226,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "email"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"aes",
|
||||
"aes-gcm",
|
||||
|
@ -2356,7 +2356,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "event_macro"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -2842,7 +2842,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "groupware"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"calcard",
|
||||
|
@ -3142,7 +3142,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "http"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"async-stream",
|
||||
"base64 0.22.1",
|
||||
|
@ -3252,7 +3252,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "http_proto"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"common",
|
||||
"compact_str",
|
||||
|
@ -3554,7 +3554,7 @@ checksum = "09e54e57b4c48b40f7aec75635392b12b3421fa26fe8b4332e63138ed278459c"
|
|||
|
||||
[[package]]
|
||||
name = "imap"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"common",
|
||||
|
@ -3581,7 +3581,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "imap_proto"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"chrono",
|
||||
|
@ -3827,7 +3827,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "jmap"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"aes-gcm",
|
||||
"aes-gcm-siv",
|
||||
|
@ -3898,7 +3898,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "jmap_proto"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"compact_str",
|
||||
|
@ -4372,7 +4372,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "managesieve"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"common",
|
||||
|
@ -4474,7 +4474,7 @@ checksum = "c797b9d6bb23aab2fc369c65f871be49214f5c759af65bde26ffaaa2b646b492"
|
|||
|
||||
[[package]]
|
||||
name = "migration"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"bincode 1.3.3",
|
||||
|
@ -4712,7 +4712,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "nlp"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"bincode 1.3.3",
|
||||
|
@ -5440,7 +5440,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "pop3"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"common",
|
||||
"directory",
|
||||
|
@ -5607,7 +5607,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "proc_macros"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -7271,7 +7271,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "services"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"aes-gcm",
|
||||
"aes-gcm-siv",
|
||||
|
@ -7483,7 +7483,7 @@ checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9"
|
|||
|
||||
[[package]]
|
||||
name = "smtp"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"blake3",
|
||||
|
@ -7574,7 +7574,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "spam-filter"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"common",
|
||||
"compact_str",
|
||||
|
@ -7638,14 +7638,14 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
|
|||
|
||||
[[package]]
|
||||
name = "stalwart"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"common",
|
||||
"dav",
|
||||
"directory",
|
||||
"email",
|
||||
"groupware",
|
||||
"http 0.13.1",
|
||||
"http 0.13.2",
|
||||
"imap",
|
||||
"jemallocator",
|
||||
"jmap",
|
||||
|
@ -7664,7 +7664,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "stalwart-cli"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"console",
|
||||
|
@ -7695,7 +7695,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
|||
|
||||
[[package]]
|
||||
name = "store"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"arc-swap",
|
||||
|
@ -7904,7 +7904,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "tests"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"async-trait",
|
||||
|
@ -7925,7 +7925,7 @@ dependencies = [
|
|||
"form_urlencoded",
|
||||
"futures",
|
||||
"groupware",
|
||||
"http 0.13.1",
|
||||
"http 0.13.2",
|
||||
"http-body-util",
|
||||
"http_proto",
|
||||
"hyper 1.6.0",
|
||||
|
@ -8451,7 +8451,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "trc"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"base64 0.22.1",
|
||||
|
@ -8757,7 +8757,7 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
|
|||
|
||||
[[package]]
|
||||
name = "utils"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"base64 0.22.1",
|
||||
|
|
|
@ -5,7 +5,7 @@ authors = ["Stalwart Labs LLC <hello@stalw.art>"]
|
|||
license = "AGPL-3.0-only OR LicenseRef-SEL"
|
||||
repository = "https://github.com/stalwartlabs/cli"
|
||||
homepage = "https://github.com/stalwartlabs/cli"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
readme = "README.md"
|
||||
resolver = "2"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "common"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
build = "build.rs"
|
||||
|
@ -19,7 +19,7 @@ mail-builder = { version = "0.4" }
|
|||
mail-auth = { version = "0.7.1" }
|
||||
mail-send = { version = "0.5", default-features = false, features = ["cram-md5", "ring", "tls12"] }
|
||||
smtp-proto = { version = "0.1", features = ["rkyv"] }
|
||||
dns-update = { version = "0.1.3" }
|
||||
dns-update = { version = "0.1.4" }
|
||||
calcard = { version = "0.1.3", features = ["rkyv"] }
|
||||
ahash = { version = "0.8.2", features = ["serde"] }
|
||||
parking_lot = "0.12.1"
|
||||
|
|
|
@ -272,6 +272,26 @@ fn build_dns_updater(config: &mut Config, acme_id: &str) -> Option<DnsUpdater> {
|
|||
})
|
||||
.ok()
|
||||
}
|
||||
"desec" => {
|
||||
let timeout = config
|
||||
.property_or_default(("acme", acme_id, "timeout"), "30s")
|
||||
.unwrap_or_else(|| Duration::from_secs(30));
|
||||
|
||||
DnsUpdater::new_desec(
|
||||
config
|
||||
.value_require(("acme", acme_id, "secret"))?
|
||||
.trim()
|
||||
.to_string(),
|
||||
timeout.into(),
|
||||
)
|
||||
.map_err(|err| {
|
||||
config.new_build_error(
|
||||
("acme", acme_id, "provider"),
|
||||
format!("Failed to create Desec DNS updater: {err}"),
|
||||
)
|
||||
})
|
||||
.ok()
|
||||
}
|
||||
_ => {
|
||||
config.new_parse_error(("acme", acme_id, "provider"), "Unsupported provider");
|
||||
None
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "dav-proto"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "dav"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "directory"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -9,9 +9,9 @@ use super::{
|
|||
SpecialSecrets, lookup::DirectoryStore,
|
||||
};
|
||||
use crate::{
|
||||
MemberOf, Permission, PermissionGrant, Permissions, Principal, PrincipalData, PrincipalQuota,
|
||||
QueryBy, QueryParams, ROLE_ADMIN, ROLE_TENANT_ADMIN, ROLE_USER, Type, backend::RcptType,
|
||||
core::principal::build_search_index,
|
||||
FALLBACK_ADMIN_ID, MemberOf, Permission, PermissionGrant, Permissions, Principal,
|
||||
PrincipalData, PrincipalQuota, QueryBy, QueryParams, ROLE_ADMIN, ROLE_TENANT_ADMIN, ROLE_USER,
|
||||
Type, backend::RcptType, core::principal::build_search_index,
|
||||
};
|
||||
use ahash::{AHashMap, AHashSet};
|
||||
use compact_str::CompactString;
|
||||
|
@ -182,6 +182,12 @@ impl ManageDirectory for Store {
|
|||
.assign_document_ids(u32::MAX, Collection::Principal, 1)
|
||||
.await
|
||||
.caused_by(trc::location!())?;
|
||||
if principal_id_ == FALLBACK_ADMIN_ID {
|
||||
return Err(trc::StoreEvent::UnexpectedError
|
||||
.into_err()
|
||||
.details("ID assignment failed")
|
||||
.caused_by(trc::location!()));
|
||||
}
|
||||
principal_id = Some(principal_id_);
|
||||
principal_id_
|
||||
};
|
||||
|
@ -536,6 +542,12 @@ impl ManageDirectory for Store {
|
|||
.assign_document_ids(u32::MAX, Collection::Principal, 1)
|
||||
.await
|
||||
.caused_by(trc::location!())?;
|
||||
if principal_id == FALLBACK_ADMIN_ID {
|
||||
return Err(trc::StoreEvent::UnexpectedError
|
||||
.into_err()
|
||||
.details("ID assignment failed")
|
||||
.caused_by(trc::location!()));
|
||||
}
|
||||
principal_create.id = principal_id;
|
||||
let mut batch = BatchBuilder::new();
|
||||
let pinfo_name = PrincipalInfo::new(principal_id, principal_create.typ, tenant_id);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "email"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "groupware"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "http_proto"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "http"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "imap_proto"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "imap"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "jmap_proto"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "jmap"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ homepage = "https://stalw.art"
|
|||
keywords = ["imap", "jmap", "smtp", "email", "mail", "webdav", "server"]
|
||||
categories = ["email"]
|
||||
license = "AGPL-3.0-only OR LicenseRef-SEL"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "managesieve"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "migration"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "nlp"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "pop3"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "services"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ homepage = "https://stalw.art/smtp"
|
|||
keywords = ["smtp", "email", "mail", "server"]
|
||||
categories = ["email"]
|
||||
license = "AGPL-3.0-only OR LicenseRef-SEL"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "spam-filter"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "store"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "trc"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "event_macro"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
|
||||
[lib]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "utils"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "proc_macros"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
|
||||
[lib]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "tests"
|
||||
version = "0.13.1"
|
||||
version = "0.13.2"
|
||||
edition = "2024"
|
||||
resolver = "2"
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue