This commit is contained in:
Maurus Decimus
2026-05-11 17:14:26 +02:00
parent 4469fb3a54
commit bdba3f20e1
31 changed files with 224 additions and 326 deletions

View File

@@ -1,6 +1,6 @@
[package]
name = "common"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
build = "build.rs"
@@ -20,7 +20,7 @@ mail-parser = { version = "0.11", features = ["full_encoding"] }
mail-builder = { version = "0.4" }
mail-auth = { version = "0.9", features = ["generate"] }
smtp-proto = { version = "0.2", features = ["rkyv"] }
dns-update = { version = "0.2.1" }
dns-update = { version = "0.3" }
calcard = { version = "0.3", features = ["rkyv"] }
ahash = { version = "0.8.2", features = ["serde"] }
parking_lot = "0.12.1"

View File

@@ -274,7 +274,7 @@ impl Server {
self.get_directory_for_cached_domain(&impersonated_domain_cache)
&& let Recipient::Account(account) = directory.recipient(address).await?
{
account_id = Some(self.synchronize_account(account).await?.id);
account_id = Some(Box::pin(self.synchronize_account(account)).await?.id);
}
if let Some(account_id) = account_id {
trc::event!(

View File

@@ -7,18 +7,13 @@
use crate::{Core, Server};
use base64::{Engine, engine::general_purpose};
use dns_update::{
Algorithm, DnsRecord, DnsRecordType, TsigAlgorithm,
dnssec::{
self, SigningKey,
crypto::{EcdsaSigningKey, Ed25519SigningKey},
},
DnsRecord, DnsRecordType, TsigAlgorithm,
providers::{ovh::OvhEndpoint, rfc2136::DnsAddress},
};
use registry::schema::{
enums,
structs::{DnsManagement, DnsServer, Domain},
};
use rustls_pki_types::PrivatePkcs8KeyDer;
use std::{
net::SocketAddr,
sync::Arc,
@@ -80,60 +75,8 @@ impl DnsUpdater {
)
.map_err(|err| format!("Failed to build DNS updater: {}", err))?,
}),
DnsServer::Sig0(server) => {
let key_bytes = server.key.secret().await?;
let pem_parsed = pem::parse(key_bytes.as_bytes())
.map_err(|err| format!("Failed to parse PEM key: {}", err))?;
let pkcs8_der = PrivatePkcs8KeyDer::from(pem_parsed.contents());
let signing_key: Box<dyn SigningKey> = match server.sig0_algorithm {
enums::Sig0Algorithm::EcdsaP256Sha256 => Box::new(
EcdsaSigningKey::from_pkcs8(&pkcs8_der, dnssec::Algorithm::ECDSAP256SHA256)
.map_err(|err| {
format!("Failed to build ECDSA P-256 signing key: {}", err)
})?,
),
enums::Sig0Algorithm::EcdsaP384Sha384 => Box::new(
EcdsaSigningKey::from_pkcs8(&pkcs8_der, dnssec::Algorithm::ECDSAP384SHA384)
.map_err(|err| {
format!("Failed to build ECDSA P-384 signing key: {}", err)
})?,
),
enums::Sig0Algorithm::Ed25519 => {
Box::new(Ed25519SigningKey::from_pkcs8(&pkcs8_der).map_err(|err| {
format!("Failed to build Ed25519 signing key: {}", err)
})?)
}
};
#[allow(deprecated)]
Ok(DnsUpdater {
polling_interval: server.polling_interval.into_inner(),
propagation_timeout: server.propagation_timeout.into_inner(),
propagation_delay: server.propagation_delay.map(|d| d.into_inner()),
ttl: server.ttl.into_inner(),
core,
updater: dns_update::DnsUpdater::new_rfc2136_sig0(
match server.protocol {
enums::IpProtocol::Udp => DnsAddress::Tcp(SocketAddr::new(
server.host.into_inner(),
server.port as u16,
)),
enums::IpProtocol::Tcp => DnsAddress::Udp(SocketAddr::new(
server.host.into_inner(),
server.port as u16,
)),
},
server.signer_name,
signing_key,
server.public_key,
match server.sig0_algorithm {
enums::Sig0Algorithm::EcdsaP256Sha256 => Algorithm::ECDSAP256SHA256,
enums::Sig0Algorithm::EcdsaP384Sha384 => Algorithm::ECDSAP384SHA384,
enums::Sig0Algorithm::Ed25519 => Algorithm::ED25519,
},
)
.map_err(|err| format!("Failed to build DNS updater: {}", err))?,
})
DnsServer::Sig0(_) => {
Err("RFC 2136 with SIG(0) authentication is no longer supported".into())
}
DnsServer::Cloudflare(server) => {
let updater = {

View File

@@ -1,6 +1,6 @@
[package]
name = "dav-proto"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "dav"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "directory"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "email"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "groupware"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "http_proto"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "http"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "imap_proto"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "imap"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "jmap_proto"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "jmap"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -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.16.4"
version = "0.16.5"
edition = "2024"
[[bin]]

View File

@@ -1,6 +1,6 @@
[package]
name = "managesieve"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "migration"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "nlp"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "pop3"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "services"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]
@@ -34,7 +34,7 @@ sha2 = "0.11"
reqwest = { version = "0.13", default-features = false, features = ["rustls", "http2"]}
base64 = "0.22"
compact_str = "0.9.0"
dns-update = { version = "0.2.1" }
dns-update = { version = "0.3" }
[dev-dependencies]

View File

@@ -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.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "spam-filter"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "store"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "trc"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "event_macro"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[lib]

View File

@@ -1,6 +1,6 @@
[package]
name = "types"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "utils"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "proc_macros"
version = "0.16.4"
version = "0.16.5"
edition = "2024"
[lib]