summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormdecimus <mauro@stalw.art>2024-08-01 17:09:39 +0200
committermdecimus <mauro@stalw.art>2024-08-01 17:09:39 +0200
commit3cb8918d2e7f83fca4973ce194fdb02477f18853 (patch)
treece6923ed7e68cd55bb85e5496aa88a564b31ffc4
parented214fd087f4cd67cc39298e2dab1c619c73c779 (diff)
v0.9.0
-rw-r--r--CHANGELOG.md14
-rw-r--r--Cargo.lock607
-rw-r--r--UPGRADING.md11
-rw-r--r--crates/cli/src/main.rs5
-rw-r--r--crates/common/src/config/tracers.rs40
-rw-r--r--crates/common/src/listener/tls.rs4
-rw-r--r--crates/common/src/tracing/journald.rs6
-rw-r--r--crates/jmap-proto/src/error/method.rs2
-rw-r--r--crates/jmap-proto/src/parser/json.rs6
-rw-r--r--crates/jmap/src/api/http.rs2
-rw-r--r--crates/jmap/src/api/management/principal.rs6
-rw-r--r--crates/jmap/src/auth/authenticate.rs22
-rw-r--r--crates/smtp/src/inbound/rcpt.rs2
-rw-r--r--crates/smtp/src/outbound/delivery.rs2
-rw-r--r--crates/store/src/backend/elastic/mod.rs6
-rw-r--r--crates/store/src/backend/elastic/query.rs6
-rw-r--r--crates/store/src/backend/foundationdb/mod.rs2
-rw-r--r--crates/store/src/backend/foundationdb/write.rs2
-rw-r--r--crates/store/src/backend/mysql/mod.rs2
-rw-r--r--crates/store/src/backend/postgres/mod.rs2
-rw-r--r--crates/store/src/backend/rocksdb/mod.rs2
-rw-r--r--crates/store/src/backend/sqlite/mod.rs2
-rw-r--r--crates/trc/src/conv.rs2
-rw-r--r--crates/trc/src/fmt.rs11
-rw-r--r--crates/trc/src/imple.rs81
-rw-r--r--crates/trc/src/lib.rs22
-rw-r--r--crates/trc/src/subscriber.rs5
-rw-r--r--crates/utils/src/config/utils.rs7
-rw-r--r--tests/resources/ldap/ldap.cfg (renamed from tests/resources/ldap.cfg)0
-rw-r--r--tests/resources/ldap/run_glauth.sh3
-rw-r--r--tests/resources/smtp/dsn/delay.eml1
-rw-r--r--tests/resources/smtp/dsn/failure.eml1
-rw-r--r--tests/resources/smtp/dsn/mixed.eml1
-rw-r--r--tests/resources/smtp/dsn/success.eml1
34 files changed, 500 insertions, 388 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 749b967e..16197448 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,20 @@
All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/).
+## [0.9.0] - 2024-08-01
+
+To upgrade replace the `stalwart-mail` binary and then upgrade to the latest web-admin. This version includes breaking changes to the Webhooks configuration and produces a slightly different log output, read [UPGRADING.md](UPGRADING.md) for details.
+
+## Added
+- Improved and faster tracing and logging.
+- Customizable event logging levels.
+
+### Changed
+
+### Fixed
+- ManageSieve: Return capabilities after successful `STARTTLS`
+- Do not provide `{auth_authen}` Milter macro unless the user is authenticated
+
## [0.8.5] - 2024-07-07
To upgrade replace the `stalwart-mail` binary.
diff --git a/Cargo.lock b/Cargo.lock
index b2a9e299..694e5330 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -90,7 +90,7 @@ dependencies = [
"once_cell",
"serde",
"version_check",
- "zerocopy",
+ "zerocopy 0.7.35",
]
[[package]]
@@ -125,9 +125,9 @@ dependencies = [
[[package]]
name = "anstream"
-version = "0.6.14"
+version = "0.6.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b"
+checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526"
dependencies = [
"anstyle",
"anstyle-parse",
@@ -140,33 +140,33 @@ dependencies = [
[[package]]
name = "anstyle"
-version = "1.0.7"
+version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b"
+checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1"
[[package]]
name = "anstyle-parse"
-version = "0.2.4"
+version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4"
+checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb"
dependencies = [
"utf8parse",
]
[[package]]
name = "anstyle-query"
-version = "1.1.0"
+version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391"
+checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a"
dependencies = [
"windows-sys 0.52.0",
]
[[package]]
name = "anstyle-wincon"
-version = "3.0.3"
+version = "3.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19"
+checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8"
dependencies = [
"anstyle",
"windows-sys 0.52.0",
@@ -207,9 +207,9 @@ dependencies = [
[[package]]
name = "arrayref"
-version = "0.3.7"
+version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545"
+checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a"
[[package]]
name = "arrayvec"
@@ -244,11 +244,11 @@ dependencies = [
[[package]]
name = "asn1-rs"
-version = "0.6.1"
+version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22ad1373757efa0f70ec53939aabc7152e1591cb485208052993070ac8d2429d"
+checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048"
dependencies = [
- "asn1-rs-derive 0.5.0",
+ "asn1-rs-derive 0.5.1",
"asn1-rs-impl 0.2.0",
"displaydoc",
"nom",
@@ -272,13 +272,13 @@ dependencies = [
[[package]]
name = "asn1-rs-derive"
-version = "0.5.0"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7378575ff571966e99a744addeff0bff98b8ada0dedf1956d59e634db95eaac1"
+checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
"synstructure 0.13.1",
]
@@ -301,14 +301,14 @@ checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
name = "async-compression"
-version = "0.4.11"
+version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5"
+checksum = "fec134f64e2bc57411226dfc4e52dec859ddfc7e711fc5e07b612584f000e4aa"
dependencies = [
"flate2",
"futures-core",
@@ -325,7 +325,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -347,18 +347,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
name = "async-trait"
-version = "0.1.80"
+version = "0.1.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
+checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -425,7 +425,7 @@ dependencies = [
"bytes",
"futures-util",
"http 1.1.0",
- "http-body 1.0.0",
+ "http-body 1.0.1",
"http-body-util",
"itoa",
"matchit",
@@ -451,7 +451,7 @@ dependencies = [
"bytes",
"futures-util",
"http 1.1.0",
- "http-body 1.0.0",
+ "http-body 1.0.1",
"http-body-util",
"mime",
"pin-project-lite",
@@ -559,7 +559,7 @@ dependencies = [
"regex",
"rustc-hash",
"shlex",
- "syn 2.0.68",
+ "syn 2.0.72",
"which",
]
@@ -632,9 +632,9 @@ dependencies = [
[[package]]
name = "blake3"
-version = "1.5.1"
+version = "1.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52"
+checksum = "e9ec96fe9a81b5e365f9db71fe00edc4fe4ca2cc7dcb7861f0603012a7caa210"
dependencies = [
"arrayref",
"arrayvec",
@@ -711,7 +711,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
"syn_derive",
]
@@ -764,9 +764,9 @@ dependencies = [
[[package]]
name = "bytemuck"
-version = "1.16.1"
+version = "1.16.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e"
+checksum = "102087e286b4677862ea56cf8fc58bb2cdfa8725c40ffb80fe3a008eb7f2fc83"
[[package]]
name = "byteorder"
@@ -776,9 +776,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "bytes"
-version = "1.6.0"
+version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"
+checksum = "fca2be1d5c43812bae364ee3f30b3afcb7877cf59f4aeb94c66f313a41d2fac9"
[[package]]
name = "bzip2"
@@ -831,13 +831,12 @@ dependencies = [
[[package]]
name = "cc"
-version = "1.0.104"
+version = "1.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74b6a57f98764a267ff415d50a25e6e166f3831a5071af4995296ea97d210490"
+checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc"
dependencies = [
"jobserver",
"libc",
- "once_cell",
]
[[package]]
@@ -902,7 +901,7 @@ dependencies = [
"num-traits",
"serde",
"wasm-bindgen",
- "windows-targets 0.52.5",
+ "windows-targets 0.52.6",
]
[[package]]
@@ -938,9 +937,9 @@ dependencies = [
[[package]]
name = "clap"
-version = "4.5.8"
+version = "4.5.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84b3edb18336f4df585bc9aa31dd99c036dfa5dc5e9a2939a722a188f3a8970d"
+checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc"
dependencies = [
"clap_builder",
"clap_derive",
@@ -948,9 +947,9 @@ dependencies = [
[[package]]
name = "clap_builder"
-version = "4.5.8"
+version = "4.5.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1c09dd5ada6c6c78075d6fd0da3f90d8080651e2d6cc8eb2f1aaa4034ced708"
+checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99"
dependencies = [
"anstream",
"anstyle",
@@ -960,21 +959,21 @@ dependencies = [
[[package]]
name = "clap_derive"
-version = "4.5.8"
+version = "4.5.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085"
+checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0"
dependencies = [
"heck 0.5.0",
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
name = "clap_lex"
-version = "0.7.1"
+version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70"
+checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97"
[[package]]
name = "cmac"
@@ -998,9 +997,9 @@ dependencies = [
[[package]]
name = "colorchoice"
-version = "1.0.1"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422"
+checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0"
[[package]]
name = "combine"
@@ -1030,7 +1029,7 @@ dependencies = [
"dns-update",
"futures",
"hostname 0.4.0",
- "hyper 1.4.0",
+ "hyper 1.4.1",
"idna 1.0.2",
"imagesize",
"infer",
@@ -1054,7 +1053,7 @@ dependencies = [
"regex",
"reqwest 0.12.5",
"ring 0.17.8",
- "rustls 0.23.10",
+ "rustls 0.23.12",
"rustls-pemfile 2.1.2",
"rustls-pki-types",
"serde",
@@ -1336,7 +1335,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -1351,12 +1350,12 @@ dependencies = [
[[package]]
name = "darling"
-version = "0.20.9"
+version = "0.20.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1"
+checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
dependencies = [
- "darling_core 0.20.9",
- "darling_macro 0.20.9",
+ "darling_core 0.20.10",
+ "darling_macro 0.20.10",
]
[[package]]
@@ -1375,16 +1374,16 @@ dependencies = [
[[package]]
name = "darling_core"
-version = "0.20.9"
+version = "0.20.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120"
+checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5"
dependencies = [
"fnv",
"ident_case",
"proc-macro2",
"quote",
"strsim 0.11.1",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -1400,13 +1399,13 @@ dependencies = [
[[package]]
name = "darling_macro"
-version = "0.20.9"
+version = "0.20.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178"
+checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
dependencies = [
- "darling_core 0.20.9",
+ "darling_core 0.20.10",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -1497,9 +1496,9 @@ dependencies = [
[[package]]
name = "deflate64"
-version = "0.1.8"
+version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83ace6c86376be0b6cdcf3fb41882e81d94b31587573d1cfa9d01cd06bba210d"
+checksum = "da692b8d1080ea3045efaab14434d40468c3d8657e42abddfffca87b428f4c1b"
[[package]]
name = "der"
@@ -1532,7 +1531,7 @@ version = "9.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553"
dependencies = [
- "asn1-rs 0.6.1",
+ "asn1-rs 0.6.2",
"displaydoc",
"nom",
"num-bigint",
@@ -1558,7 +1557,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -1576,10 +1575,10 @@ version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d48cda787f839151732d396ac69e3473923d54312c070ee21e9effcaa8ca0b1d"
dependencies = [
- "darling 0.20.9",
+ "darling 0.20.10",
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -1589,7 +1588,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "206868b8242f27cecce124c19fd88157fbd0dd334df2587f36417bafbc85097b"
dependencies = [
"derive_builder_core",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -1643,7 +1642,7 @@ dependencies = [
"pbkdf2",
"pwhash",
"regex",
- "rustls 0.23.10",
+ "rustls 0.23.12",
"rustls-pki-types",
"scrypt",
"serde",
@@ -1687,7 +1686,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -1912,7 +1911,7 @@ dependencies = [
"heck 0.4.1",
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -2098,7 +2097,7 @@ checksum = "f8db6653cbc621a3810d95d55bd342be3e71181d6df21a4eb29ef986202d3f9c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
"try_map",
]
@@ -2137,7 +2136,7 @@ checksum = "b0fa992f1656e1707946bbba340ad244f0814009ef8c0118eb7b658395f19a2e"
dependencies = [
"frunk_proc_macro_helpers",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -2149,7 +2148,7 @@ dependencies = [
"frunk_core",
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -2161,7 +2160,7 @@ dependencies = [
"frunk_core",
"frunk_proc_macro_helpers",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -2226,7 +2225,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -2281,9 +2280,9 @@ dependencies = [
[[package]]
name = "generic-array"
-version = "1.0.0"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe739944a5406424e080edccb6add95685130b9f160d5407c639c7df0c5836b0"
+checksum = "96512db27971c2c3eece70a1e106fbe6c87760234e31e8f7e5634912fe52794a"
dependencies = [
"typenum",
]
@@ -2356,7 +2355,7 @@ dependencies = [
"futures-sink",
"futures-util",
"http 0.2.12",
- "indexmap 2.2.6",
+ "indexmap 2.3.0",
"slab",
"tokio",
"tokio-util",
@@ -2375,7 +2374,7 @@ dependencies = [
"futures-core",
"futures-sink",
"http 1.1.0",
- "indexmap 2.2.6",
+ "indexmap 2.3.0",
"slab",
"tokio",
"tokio-util",
@@ -2602,9 +2601,9 @@ dependencies = [
[[package]]
name = "http-body"
-version = "1.0.0"
+version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643"
+checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
dependencies = [
"bytes",
"http 1.1.0",
@@ -2619,7 +2618,7 @@ dependencies = [
"bytes",
"futures-util",
"http 1.1.0",
- "http-body 1.0.0",
+ "http-body 1.0.1",
"pin-project-lite",
]
@@ -2643,9 +2642,9 @@ checksum = "9994b79e8c1a39b3166c63ae7823bb2b00831e2a96a31399c50fe69df408eaeb"
[[package]]
name = "hyper"
-version = "0.14.29"
+version = "0.14.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33"
+checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9"
dependencies = [
"bytes",
"futures-channel",
@@ -2667,16 +2666,16 @@ dependencies = [
[[package]]
name = "hyper"
-version = "1.4.0"
+version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4fe55fb7a772d59a5ff1dfbff4fe0258d19b89fec4b233e75d35d5d2316badc"
+checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05"
dependencies = [
"bytes",
"futures-channel",
"futures-util",
"h2 0.4.5",
"http 1.1.0",
- "http-body 1.0.0",
+ "http-body 1.0.1",
"httparse",
"httpdate",
"itoa",
@@ -2694,7 +2693,7 @@ checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
dependencies = [
"futures-util",
"http 0.2.12",
- "hyper 0.14.29",
+ "hyper 0.14.30",
"rustls 0.21.12",
"tokio",
"tokio-rustls 0.24.1",
@@ -2708,9 +2707,9 @@ checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155"
dependencies = [
"futures-util",
"http 1.1.0",
- "hyper 1.4.0",
+ "hyper 1.4.1",
"hyper-util",
- "rustls 0.23.10",
+ "rustls 0.23.12",
"rustls-pki-types",
"tokio",
"tokio-rustls 0.26.0",
@@ -2724,7 +2723,7 @@ version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793"
dependencies = [
- "hyper 1.4.0",
+ "hyper 1.4.1",
"hyper-util",
"pin-project-lite",
"tokio",
@@ -2741,8 +2740,8 @@ dependencies = [
"futures-channel",
"futures-util",
"http 1.1.0",
- "http-body 1.0.0",
- "hyper 1.4.0",
+ "http-body 1.0.1",
+ "hyper 1.4.1",
"pin-project-lite",
"socket2",
"tokio",
@@ -2889,7 +2888,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -2962,7 +2961,7 @@ dependencies = [
"nlp",
"parking_lot",
"rand",
- "rustls 0.23.10",
+ "rustls 0.23.12",
"rustls-pemfile 2.1.2",
"store",
"tokio",
@@ -2996,9 +2995,9 @@ dependencies = [
[[package]]
name = "indexmap"
-version = "2.2.6"
+version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
+checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0"
dependencies = [
"equivalent",
"hashbrown 0.14.5",
@@ -3076,9 +3075,9 @@ dependencies = [
[[package]]
name = "is_terminal_polyfill"
-version = "1.70.0"
+version = "1.70.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800"
+checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
[[package]]
name = "itertools"
@@ -3108,6 +3107,15 @@ dependencies = [
]
[[package]]
+name = "itertools"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
+dependencies = [
+ "either",
+]
+
+[[package]]
name = "itoa"
version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3169,7 +3177,7 @@ dependencies = [
"futures-util",
"hkdf",
"http-body-util",
- "hyper 1.4.0",
+ "hyper 1.4.1",
"hyper-util",
"jmap_proto",
"lz4_flex",
@@ -3245,9 +3253,9 @@ dependencies = [
[[package]]
name = "jobserver"
-version = "0.1.31"
+version = "0.1.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e"
+checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
dependencies = [
"libc",
]
@@ -3267,7 +3275,7 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ee7893dab2e44ae5f9d0173f26ff4aa327c10b01b06a72b52dd9405b628640d"
dependencies = [
- "indexmap 2.2.6",
+ "indexmap 2.3.0",
]
[[package]]
@@ -3380,12 +3388,12 @@ checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
[[package]]
name = "libloading"
-version = "0.8.4"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d"
+checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
dependencies = [
"cfg-if",
- "windows-targets 0.52.5",
+ "windows-targets 0.52.6",
]
[[package]]
@@ -3484,9 +3492,9 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
[[package]]
name = "lru"
-version = "0.12.3"
+version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc"
+checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904"
dependencies = [
"hashbrown 0.14.5",
]
@@ -3502,9 +3510,9 @@ dependencies = [
[[package]]
name = "lz4-sys"
-version = "1.9.5"
+version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9764018d143cc854c9f17f0b907de70f14393b1f502da6375dce70f00514eb3"
+checksum = "109de74d5d2353660401699a4174a4ff23fcc649caf553df71933c7fb45ad868"
dependencies = [
"cc",
"libc",
@@ -3551,9 +3559,9 @@ dependencies = [
[[package]]
name = "mail-builder"
-version = "0.3.1"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef70f53409852d2612f2249810cbbe0c9931ca25b739b734bafc7f61d88051d4"
+checksum = "25f5871d5270ed80f2ee750b95600c8d69b05f8653ad3be913b2ad2e924fefcb"
dependencies = [
"gethostname",
]
@@ -3577,7 +3585,7 @@ dependencies = [
"base64 0.22.1",
"gethostname",
"md5",
- "rustls 0.23.10",
+ "rustls 0.23.12",
"rustls-pki-types",
"smtp-proto",
"tokio",
@@ -3620,7 +3628,7 @@ dependencies = [
"mail-send",
"md5",
"parking_lot",
- "rustls 0.23.10",
+ "rustls 0.23.12",
"rustls-pemfile 2.1.2",
"sieve-rs",
"store",
@@ -3665,7 +3673,7 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -3760,19 +3768,31 @@ dependencies = [
]
[[package]]
+name = "mio"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "wasi",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
name = "mysql-common-derive"
version = "0.31.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "afe0450cc9344afff34915f8328600ab5ae19260802a334d0f72d2d5bdda3bfe"
dependencies = [
- "darling 0.20.9",
+ "darling 0.20.10",
"heck 0.4.1",
"num-bigint",
"proc-macro-crate",
"proc-macro-error",
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
"termcolor",
"thiserror",
]
@@ -3792,7 +3812,7 @@ dependencies = [
"keyed_priority_queue",
"lazy_static",
"lru",
- "mio",
+ "mio 0.8.11",
"mysql_common",
"once_cell",
"pem",
@@ -4011,9 +4031,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
[[package]]
name = "object"
-version = "0.36.1"
+version = "0.36.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce"
+checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e"
dependencies = [
"memchr",
]
@@ -4033,7 +4053,7 @@ version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c958dd45046245b9c3c2547369bb634eb461670b2e7e0de552905801a648d1d"
dependencies = [
- "asn1-rs 0.6.1",
+ "asn1-rs 0.6.2",
]
[[package]]
@@ -4050,9 +4070,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"
[[package]]
name = "openssl"
-version = "0.10.64"
+version = "0.10.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f"
+checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1"
dependencies = [
"bitflags 2.6.0",
"cfg-if",
@@ -4071,7 +4091,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -4082,9 +4102,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "openssl-sys"
-version = "0.9.102"
+version = "0.9.103"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2"
+checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6"
dependencies = [
"cc",
"libc",
@@ -4248,9 +4268,9 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
dependencies = [
"cfg-if",
"libc",
- "redox_syscall 0.5.2",
+ "redox_syscall 0.5.3",
"smallvec",
- "windows-targets 0.52.5",
+ "windows-targets 0.52.6",
]
[[package]]
@@ -4314,7 +4334,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
dependencies = [
"fixedbitset",
- "indexmap 2.2.6",
+ "indexmap 2.3.0",
]
[[package]]
@@ -4357,7 +4377,7 @@ dependencies = [
"phf_shared 0.11.2",
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -4395,7 +4415,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -4459,7 +4479,7 @@ dependencies = [
"jmap_proto",
"mail-parser",
"mail-send",
- "rustls 0.23.10",
+ "rustls 0.23.12",
"store",
"tokio",
"tokio-rustls 0.26.0",
@@ -4469,17 +4489,17 @@ dependencies = [
[[package]]
name = "portable-atomic"
-version = "1.6.0"
+version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
+checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265"
[[package]]
name = "postgres-protocol"
-version = "0.6.6"
+version = "0.6.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49b6c5ef183cd3ab4ba005f1ca64c21e8bd97ce4699cfea9e8d9a2c4958ca520"
+checksum = "acda0ebdebc28befa84bee35e651e4c5f09073d668c7aed4cf7e23c3cda84b23"
dependencies = [
- "base64 0.21.7",
+ "base64 0.22.1",
"byteorder",
"bytes",
"fallible-iterator 0.2.0",
@@ -4493,9 +4513,9 @@ dependencies = [
[[package]]
name = "postgres-types"
-version = "0.2.6"
+version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d2234cdee9408b523530a9b6d2d6b373d1db34f6a8e51dc03ded1828d7fb67c"
+checksum = "02048d9e032fb3cc3413bbf7b83a15d84a5d419778e2628751896d856498eee9"
dependencies = [
"bytes",
"fallible-iterator 0.2.0",
@@ -4510,9 +4530,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
[[package]]
name = "ppv-lite86"
-version = "0.2.17"
+version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+checksum = "dee4364d9f3b902ef14fab8a1ddffb783a1cb6b4bba3bfc1fa3922732c7de97f"
+dependencies = [
+ "zerocopy 0.6.6",
+]
[[package]]
name = "precomputed-hash"
@@ -4527,7 +4550,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e"
dependencies = [
"proc-macro2",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -4622,17 +4645,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "18bec9b0adc4eba778b33684b7ba3e7137789434769ee3ce3930463ef904cfca"
dependencies = [
"anyhow",
- "itertools 0.12.1",
+ "itertools 0.13.0",
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
name = "proxy-header"
-version = "0.1.0"
+version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8e220ac9305411757d06712209b7c2d1d35c3a1a577301e87855f6219585ecb"
+checksum = "dc1493f63ddddfba840c3169e997c2905d09538ace72d64e84af6324c6e0e065"
dependencies = [
"pin-project-lite",
"tokio",
@@ -4709,7 +4732,7 @@ dependencies = [
"quinn-proto",
"quinn-udp",
"rustc-hash",
- "rustls 0.23.10",
+ "rustls 0.23.12",
"thiserror",
"tokio",
"tracing",
@@ -4725,7 +4748,7 @@ dependencies = [
"rand",
"ring 0.17.8",
"rustc-hash",
- "rustls 0.23.10",
+ "rustls 0.23.12",
"slab",
"thiserror",
"tinyvec",
@@ -4734,14 +4757,13 @@ dependencies = [
[[package]]
name = "quinn-udp"
-version = "0.5.2"
+version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9096629c45860fc7fb143e125eb826b5e721e10be3263160c7d60ca832cf8c46"
+checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285"
dependencies = [
"libc",
"once_cell",
"socket2",
- "tracing",
"windows-sys 0.52.0",
]
@@ -4930,7 +4952,7 @@ dependencies = [
"pin-project-lite",
"rand",
"rustls 0.22.4",
- "rustls-native-certs 0.7.0",
+ "rustls-native-certs 0.7.1",
"rustls-pemfile 2.1.2",
"rustls-pki-types",
"ryu",
@@ -4954,9 +4976,9 @@ dependencies = [
[[package]]
name = "redox_syscall"
-version = "0.5.2"
+version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd"
+checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4"
dependencies = [
"bitflags 2.6.0",
]
@@ -5040,7 +5062,7 @@ dependencies = [
"h2 0.3.26",
"http 0.2.12",
"http-body 0.4.6",
- "hyper 0.14.29",
+ "hyper 0.14.30",
"hyper-rustls 0.24.2",
"ipnet",
"js-sys",
@@ -5082,9 +5104,9 @@ dependencies = [
"futures-util",
"h2 0.4.5",
"http 1.1.0",
- "http-body 1.0.0",
+ "http-body 1.0.1",
"http-body-util",
- "hyper 1.4.0",
+ "hyper 1.4.1",
"hyper-rustls 0.27.2",
"hyper-util",
"ipnet",
@@ -5096,7 +5118,7 @@ dependencies = [
"percent-encoding",
"pin-project-lite",
"quinn",
- "rustls 0.23.10",
+ "rustls 0.23.12",
"rustls-pemfile 2.1.2",
"rustls-pki-types",
"serde",
@@ -5319,7 +5341,7 @@ dependencies = [
"hex",
"hmac 0.12.1",
"http 0.2.12",
- "hyper 0.14.29",
+ "hyper 0.14.30",
"hyper-rustls 0.24.2",
"log",
"maybe-async",
@@ -5439,21 +5461,21 @@ dependencies = [
"log",
"ring 0.17.8",
"rustls-pki-types",
- "rustls-webpki 0.102.4",
+ "rustls-webpki 0.102.6",
"subtle",
"zeroize",
]
[[package]]
name = "rustls"
-version = "0.23.10"
+version = "0.23.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402"
+checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044"
dependencies = [
"once_cell",
"ring 0.17.8",
"rustls-pki-types",
- "rustls-webpki 0.102.4",
+ "rustls-webpki 0.102.6",
"subtle",
"zeroize",
]
@@ -5472,9 +5494,9 @@ dependencies = [
[[package]]
name = "rustls-native-certs"
-version = "0.7.0"
+version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792"
+checksum = "a88d6d420651b496bdd98684116959239430022a115c1240e6c3993be0b15fba"
dependencies = [
"openssl-probe",
"rustls-pemfile 2.1.2",
@@ -5520,9 +5542,9 @@ dependencies = [
[[package]]
name = "rustls-webpki"
-version = "0.102.4"
+version = "0.102.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e"
+checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e"
dependencies = [
"ring 0.17.8",
"rustls-pki-types",
@@ -5567,9 +5589,9 @@ checksum = "ece8e78b2f38ec51c51f5d475df0a7187ba5111b2a28bdc761ee05b075d40a71"
[[package]]
name = "scc"
-version = "2.1.4"
+version = "2.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4465c22496331e20eb047ff46e7366455bc01c0c02015c4a376de0b2cd3a1af"
+checksum = "05ccfb12511cdb770157ace92d7dda771e498445b78f9886e8cdbc5140a4eced"
dependencies = [
"sdd",
]
@@ -5622,9 +5644,9 @@ dependencies = [
[[package]]
name = "sdd"
-version = "1.5.0"
+version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e806d6633ef141556fef75e345275e35652e9c045bbbc21e6ecfce3e9aa2638"
+checksum = "177258b64c0faaa9ffd3c65cd3262c2bc7e2588dbbd9c1641d0346145c1bbda8"
[[package]]
name = "seahash"
@@ -5648,9 +5670,9 @@ dependencies = [
[[package]]
name = "security-framework"
-version = "2.11.0"
+version = "2.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0"
+checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
dependencies = [
"bitflags 2.6.0",
"core-foundation",
@@ -5661,9 +5683,9 @@ dependencies = [
[[package]]
name = "security-framework-sys"
-version = "2.11.0"
+version = "2.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7"
+checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf"
dependencies = [
"core-foundation-sys",
"libc",
@@ -5692,9 +5714,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
[[package]]
name = "sequoia-openpgp"
-version = "1.21.1"
+version = "1.21.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b870b0275eeae174058fcf0ce5affccaaafeb7eceeabce8d6c7f51fbe6a41e2a"
+checksum = "13261ee216b44d932ef93b2d4a75d45199bef77864bcc5b77ecfc7bc0ecb02d6"
dependencies = [
"aes",
"aes-gcm",
@@ -5748,9 +5770,9 @@ dependencies = [
[[package]]
name = "serde"
-version = "1.0.203"
+version = "1.0.204"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094"
+checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12"
dependencies = [
"serde_derive",
]
@@ -5766,22 +5788,23 @@ dependencies = [
[[package]]
name = "serde_derive"
-version = "1.0.203"
+version = "1.0.204"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba"
+checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
name = "serde_json"
-version = "1.0.120"
+version = "1.0.121"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5"
+checksum = "4ab380d7d9f22ef3f21ad3e6c1ebe8e4fc7a2000ccba2e4d71fc96f15b2cb609"
dependencies = [
"itoa",
+ "memchr",
"ryu",
"serde",
]
@@ -5842,7 +5865,7 @@ checksum = "82fe9db325bcef1fbcde82e078a5cc4efdf787e96b3b9cf45b50b529f2083d67"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -5871,9 +5894,9 @@ dependencies = [
[[package]]
name = "sha1_smol"
-version = "1.0.0"
+version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012"
+checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d"
[[package]]
name = "sha1collisiondetection"
@@ -5883,7 +5906,7 @@ checksum = "1f606421e4a6012877e893c399822a4ed4b089164c5969424e1b9d1e66e6964b"
dependencies = [
"const-oid",
"digest 0.10.7",
- "generic-array 1.0.0",
+ "generic-array 1.1.0",
]
[[package]]
@@ -6011,7 +6034,7 @@ dependencies = [
"directory",
"form_urlencoded",
"http-body-util",
- "hyper 1.4.0",
+ "hyper 1.4.1",
"hyper-util",
"lazy_static",
"lru-cache",
@@ -6027,7 +6050,7 @@ dependencies = [
"rayon",
"regex",
"reqwest 0.12.5",
- "rustls 0.23.10",
+ "rustls 0.23.12",
"rustls-pemfile 2.1.2",
"rustls-pki-types",
"serde",
@@ -6181,7 +6204,7 @@ dependencies = [
"rocksdb",
"rusqlite",
"rust-s3",
- "rustls 0.23.10",
+ "rustls 0.23.12",
"rustls-pki-types",
"serde",
"serde_json",
@@ -6258,9 +6281,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.68"
+version = "2.0.72"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9"
+checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af"
dependencies = [
"proc-macro2",
"quote",
@@ -6276,7 +6299,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -6311,7 +6334,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -6378,7 +6401,7 @@ dependencies = [
"flate2",
"futures",
"http-body-util",
- "hyper 1.4.0",
+ "hyper 1.4.1",
"hyper-util",
"imap",
"imap_proto",
@@ -6396,7 +6419,7 @@ dependencies = [
"rayon",
"reqwest 0.12.5",
"ring 0.17.8",
- "rustls 0.23.10",
+ "rustls 0.23.12",
"rustls-pemfile 2.1.2",
"rustls-pki-types",
"serde",
@@ -6415,22 +6438,22 @@ dependencies = [
[[package]]
name = "thiserror"
-version = "1.0.61"
+version = "1.0.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709"
+checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.61"
+version = "1.0.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533"
+checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -6505,9 +6528,9 @@ dependencies = [
[[package]]
name = "tinyvec"
-version = "1.6.1"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c55115c6fbe2d2bef26eb09ad74bde02d8255476fc0c7b515ef09fbb35742d82"
+checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"
dependencies = [
"tinyvec_macros",
]
@@ -6520,39 +6543,38 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
-version = "1.38.0"
+version = "1.39.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a"
+checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1"
dependencies = [
"backtrace",
"bytes",
"libc",
- "mio",
- "num_cpus",
+ "mio 1.0.1",
"parking_lot",
"pin-project-lite",
"signal-hook-registry",
"socket2",
"tokio-macros",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
]
[[package]]
name = "tokio-macros"
-version = "2.3.0"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a"
+checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
name = "tokio-postgres"
-version = "0.7.10"
+version = "0.7.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d340244b32d920260ae7448cb72b6e238bddc3d4f7603394e7dd46ed8e48f5b8"
+checksum = "03adcf0147e203b6032c0b2d30be1415ba03bc348901f3ff1cc0df6a733e60c3"
dependencies = [
"async-trait",
"byteorder",
@@ -6601,7 +6623,7 @@ version = "0.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
dependencies = [
- "rustls 0.23.10",
+ "rustls 0.23.12",
"rustls-pki-types",
"tokio",
]
@@ -6660,9 +6682,9 @@ dependencies = [
[[package]]
name = "toml_datetime"
-version = "0.6.6"
+version = "0.6.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf"
+checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
[[package]]
name = "toml_edit"
@@ -6670,7 +6692,7 @@ version = "0.21.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
dependencies = [
- "indexmap 2.2.6",
+ "indexmap 2.3.0",
"toml_datetime",
"winnow",
]
@@ -6688,9 +6710,9 @@ dependencies = [
"bytes",
"h2 0.4.5",
"http 1.1.0",
- "http-body 1.0.0",
+ "http-body 1.0.1",
"http-body-util",
- "hyper 1.4.0",
+ "hyper 1.4.1",
"hyper-timeout",
"hyper-util",
"percent-encoding",
@@ -6707,9 +6729,9 @@ dependencies = [
[[package]]
name = "totp-rs"
-version = "5.5.1"
+version = "5.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c4ae9724c5888c0417d2396037ed3b60665925624766416e3e342b6ba5dbd3f"
+checksum = "17b2f27dad992486c26b4e7455f38aa487e838d6d61b57e72906ee2b8c287a90"
dependencies = [
"base32",
"constant_time_eq 0.2.6",
@@ -6771,7 +6793,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -7090,7 +7112,7 @@ dependencies = [
"regex",
"reqwest 0.12.5",
"ring 0.17.8",
- "rustls 0.23.10",
+ "rustls 0.23.12",
"rustls-pemfile 2.1.2",
"rustls-pki-types",
"serde",
@@ -7106,9 +7128,9 @@ dependencies = [
[[package]]
name = "uuid"
-version = "1.9.1"
+version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5de17fd2f7da591098415cff336e12965a28061ddace43b59cb3c430179c9439"
+checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314"
dependencies = [
"getrandom",
]
@@ -7127,9 +7149,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
name = "version_check"
-version = "0.9.4"
+version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "void"
@@ -7189,7 +7211,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
"wasm-bindgen-shared",
]
@@ -7223,7 +7245,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -7359,7 +7381,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
dependencies = [
"windows-core",
- "windows-targets 0.52.5",
+ "windows-targets 0.52.6",
]
[[package]]
@@ -7368,7 +7390,7 @@ version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
dependencies = [
- "windows-targets 0.52.5",
+ "windows-targets 0.52.6",
]
[[package]]
@@ -7386,7 +7408,7 @@ version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
dependencies = [
- "windows-targets 0.52.5",
+ "windows-targets 0.52.6",
]
[[package]]
@@ -7406,18 +7428,18 @@ dependencies = [
[[package]]
name = "windows-targets"
-version = "0.52.5"
+version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [
- "windows_aarch64_gnullvm 0.52.5",
- "windows_aarch64_msvc 0.52.5",
- "windows_i686_gnu 0.52.5",
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
"windows_i686_gnullvm",
- "windows_i686_msvc 0.52.5",
- "windows_x86_64_gnu 0.52.5",
- "windows_x86_64_gnullvm 0.52.5",
- "windows_x86_64_msvc 0.52.5",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
]
[[package]]
@@ -7428,9 +7450,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
[[package]]
name = "windows_aarch64_gnullvm"
-version = "0.52.5"
+version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
name = "windows_aarch64_msvc"
@@ -7440,9 +7462,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
[[package]]
name = "windows_aarch64_msvc"
-version = "0.52.5"
+version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
name = "windows_i686_gnu"
@@ -7452,15 +7474,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
[[package]]
name = "windows_i686_gnu"
-version = "0.52.5"
+version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
[[package]]
name = "windows_i686_gnullvm"
-version = "0.52.5"
+version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
[[package]]
name = "windows_i686_msvc"
@@ -7470,9 +7492,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
[[package]]
name = "windows_i686_msvc"
-version = "0.52.5"
+version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
name = "windows_x86_64_gnu"
@@ -7482,9 +7504,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
[[package]]
name = "windows_x86_64_gnu"
-version = "0.52.5"
+version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
name = "windows_x86_64_gnullvm"
@@ -7494,9 +7516,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
[[package]]
name = "windows_x86_64_gnullvm"
-version = "0.52.5"
+version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
name = "windows_x86_64_msvc"
@@ -7506,9 +7528,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]]
name = "windows_x86_64_msvc"
-version = "0.52.5"
+version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "winnow"
@@ -7594,7 +7616,7 @@ version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcbc162f30700d6f3f82a24bf7cc62ffe7caea42c0b2cba8bf7f3ae50cf51f69"
dependencies = [
- "asn1-rs 0.6.1",
+ "asn1-rs 0.6.2",
"data-encoding",
"der-parser 9.0.0",
"lazy_static",
@@ -7613,9 +7635,9 @@ checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193"
[[package]]
name = "xxhash-rust"
-version = "0.8.10"
+version = "0.8.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03"
+checksum = "6a5cbf750400958819fb6178eaa83bee5cd9c29a26a40cc241df8c70fdd46984"
[[package]]
name = "yasna"
@@ -7646,17 +7668,38 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
"synstructure 0.13.1",
]
[[package]]
name = "zerocopy"
+version = "0.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "854e949ac82d619ee9a14c66a1b674ac730422372ccb759ce0c39cabcf2bf8e6"
+dependencies = [
+ "byteorder",
+ "zerocopy-derive 0.6.6",
+]
+
+[[package]]
+name = "zerocopy"
version = "0.7.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
dependencies = [
- "zerocopy-derive",
+ "zerocopy-derive 0.7.35",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "125139de3f6b9d625c39e2efdd73d41bdac468ccd556556440e322be0e1bbd91"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
]
[[package]]
@@ -7667,7 +7710,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -7687,7 +7730,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
"synstructure 0.13.1",
]
@@ -7708,7 +7751,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
@@ -7730,14 +7773,14 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.68",
+ "syn 2.0.72",
]
[[package]]
name = "zip"
-version = "2.1.3"
+version = "2.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "775a2b471036342aa69bc5a602bc889cb0a06cda00477d0c69566757d5553d39"
+checksum = "40dd8c92efc296286ce1fbd16657c5dbefff44f1b4ca01cc5f517d8b7b3d3e2e"
dependencies = [
"aes",
"arbitrary",
@@ -7749,7 +7792,7 @@ dependencies = [
"displaydoc",
"flate2",
"hmac 0.12.1",
- "indexmap 2.2.6",
+ "indexmap 2.3.0",
"lzma-rs",
"memchr",
"pbkdf2",
@@ -7778,27 +7821,27 @@ dependencies = [
[[package]]
name = "zstd"
-version = "0.13.1"
+version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d789b1514203a1120ad2429eae43a7bd32b90976a7bb8a05f7ec02fa88cc23a"
+checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9"
dependencies = [
"zstd-safe",
]
[[package]]
name = "zstd-safe"
-version = "7.1.0"
+version = "7.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1cd99b45c6bc03a018c8b8a86025678c87e55526064e38f9df301989dce7ec0a"
+checksum = "fa556e971e7b568dc775c136fc9de8c779b1c2fc3a63defaafadffdbd3181afa"
dependencies = [
"zstd-sys",
]
[[package]]
name = "zstd-sys"
-version = "2.0.11+zstd.1.5.6"
+version = "2.0.12+zstd.1.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75652c55c0b6f3e6f12eb786fe1bc960396bf05a1eb3bf1f3691c3610ac2e6d4"
+checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13"
dependencies = [
"cc",
"pkg-config",
diff --git a/UPGRADING.md b/UPGRADING.md
index 9bda6abe..947587bc 100644
--- a/UPGRADING.md
+++ b/UPGRADING.md
@@ -1,3 +1,14 @@
+Upgrading from `v0.8.3` to `v0.9.0`
+-----------------------------------
+
+Version `0.9.0` introduces significant internal improvements while maintaining compatibility with existing database layouts and configuration file formats from version `0.8.0`. As a result, no data or configuration migration is necessary. This release focuses on enhancing performance and functionality, particularly in logging and tracing capabilities.
+
+To upgrade to Stalwart Mail Server version `0.9.0` from `0.8.x`, begin by downloading the latest version of the `stalwart-mail` binary. Once downloaded, replace the existing binary with the new version. Additionally, it's important to update the WebAdmin interface to the latest version to ensure compatibility and to access new features introduced in this release.
+
+In terms of breaking changes, this release brings significant updates to webhooks. All webhook event names have been modified, requiring a thorough review and adjustment of existing webhook configurations. Furthermore, the update introduces hundreds of new event types, enhancing the granularity and specificity of event handling capabilities. Users should familiarize themselves with these changes to effectively integrate them into their systems.
+
+The reason for this release being classified as a major version, despite the absence of changes to the database or configuration formats, is the complete rewrite of the logging and tracing layer. This overhaul substantially improves the efficiency and speed of generating detailed tracing and logging events, making the system more robust and facilitating easier debugging and monitoring.
+
Upgrading from `v0.7.3` to `v0.8.0`
-----------------------------------
diff --git a/crates/cli/src/main.rs b/crates/cli/src/main.rs
index 27c65e6f..8da26622 100644
--- a/crates/cli/src/main.rs
+++ b/crates/cli/src/main.rs
@@ -174,6 +174,7 @@ pub enum Response<T> {
#[derive(Deserialize)]
#[serde(tag = "error")]
+#[serde(rename_all = "camelCase")]
pub enum ManagementApiError {
FieldAlreadyExists { field: String, value: String },
FieldMissing { field: String },
@@ -181,7 +182,6 @@ pub enum ManagementApiError {
Unsupported { details: String },
AssertFailed,
Other { details: String },
- UnsupportedDirectoryOperation { class: String },
}
impl Client {
@@ -301,9 +301,6 @@ impl Display for ManagementApiError {
ManagementApiError::Other { details } => {
write!(f, "{}", details)
}
- ManagementApiError::UnsupportedDirectoryOperation { class } => {
- write!(f, "This operation is only available on internal directories. Your current directory is {class}.")
- }
}
}
}
diff --git a/crates/common/src/config/tracers.rs b/crates/common/src/config/tracers.rs
index af1234b2..f36166ac 100644
--- a/crates/common/src/config/tracers.rs
+++ b/crates/common/src/config/tracers.rs
@@ -91,7 +91,7 @@ impl Tracers {
// Parse custom logging levels
let mut custom_levels = AHashMap::new();
for event_name in config
- .sub_keys("tracing.level", "")
+ .prefix("tracing.level")
.map(|s| s.to_string())
.collect::<Vec<_>>()
{
@@ -176,17 +176,30 @@ impl Tracers {
continue;
}
}
- "console" | "stdout" | "stderr" => TracerType::Console(ConsoleTracer {
- ansi: config
- .property_or_default(("tracer", id, "ansi"), "true")
- .unwrap_or(true),
- multiline: config
- .property_or_default(("tracer", id, "multiline"), "false")
- .unwrap_or(false),
- buffered: config
- .property_or_default(("tracer", id, "buffered"), "true")
- .unwrap_or(true),
- }),
+ "console" | "stdout" | "stderr" => {
+ if !tracers
+ .iter()
+ .any(|t| matches!(t.typ, TracerType::Console(_)))
+ {
+ TracerType::Console(ConsoleTracer {
+ ansi: config
+ .property_or_default(("tracer", id, "ansi"), "true")
+ .unwrap_or(true),
+ multiline: config
+ .property_or_default(("tracer", id, "multiline"), "false")
+ .unwrap_or(false),
+ buffered: config
+ .property_or_default(("tracer", id, "buffered"), "true")
+ .unwrap_or(true),
+ })
+ } else {
+ config.new_build_error(
+ ("tracer", id, "type"),
+ "Only one console tracer is allowed".to_string(),
+ );
+ continue;
+ }
+ }
"otel" | "open-telemetry" => {
let timeout = config
.property::<Duration>(("tracer", id, "timeout"))
@@ -477,6 +490,7 @@ impl Tracers {
}
// Add default tracer if none were found
+ #[cfg(not(feature = "test_mode"))]
if tracers.is_empty() {
for event_type in EventType::variants() {
let event_level = custom_levels
@@ -493,7 +507,7 @@ impl Tracers {
interests: global_interests.clone(),
typ: TracerType::Console(ConsoleTracer {
ansi: true,
- multiline: true,
+ multiline: false,
buffered: true,
}),
lossy: false,
diff --git a/crates/common/src/listener/tls.rs b/crates/common/src/listener/tls.rs
index 0a0b9d4c..6e89af0f 100644
--- a/crates/common/src/listener/tls.rs
+++ b/crates/common/src/listener/tls.rs
@@ -133,7 +133,7 @@ impl TcpAcceptor {
let key = core.build_acme_certificate(domain).await;
trc::event!(
- Acme(trc::AcmeEvent::ClientSuppliedSNI),
+ Acme(trc::AcmeEvent::ClientSuppliedSni),
ListenerId = instance.id.clone(),
Protocol = instance.protocol,
Name = domain.to_string(),
@@ -144,7 +144,7 @@ impl TcpAcceptor {
}
None => {
trc::event!(
- Acme(trc::AcmeEvent::ClientMissingSNI),
+ Acme(trc::AcmeEvent::ClientMissingSni),
ListenerId = instance.id.clone(),
Protocol = instance.protocol,
);
diff --git a/crates/common/src/tracing/journald.rs b/crates/common/src/tracing/journald.rs
index 0491a4bc..cae2f99a 100644
--- a/crates/common/src/tracing/journald.rs
+++ b/crates/common/src/tracing/journald.rs
@@ -299,12 +299,12 @@ impl Subscriber {
// https://systemd.io/JOURNAL_NATIVE_PROTOCOL/
use std::os::unix::prelude::AsRawFd;
// Write the whole payload to a memfd
- let mut mem = memfd::create_sealable()?;
+ let mut mem = create_sealable()?;
mem.write_all(payload)?;
// Fully seal the memfd to signal journald that its backing data won't resize anymore
// and so is safe to mmap.
- memfd::seal_fully(mem.as_raw_fd())?;
- socket::send_one_fd_to(&self.socket, mem.as_raw_fd(), JOURNALD_PATH)
+ seal_fully(mem.as_raw_fd())?;
+ send_one_fd_to(&self.socket, mem.as_raw_fd(), JOURNALD_PATH)
}
}
diff --git a/crates/jmap-proto/src/error/method.rs b/crates/jmap-proto/src/error/method.rs
index d7958af7..749cad93 100644
--- a/crates/jmap-proto/src/error/method.rs
+++ b/crates/jmap-proto/src/error/method.rs
@@ -152,7 +152,7 @@ impl Serialize for MethodErrorWrapper {
),
),
trc::JmapEvent::UnknownCapability
- | trc::JmapEvent::NotJSON
+ | trc::JmapEvent::NotJson
| trc::JmapEvent::NotRequest => (
"serverUnavailable",
concat!(
diff --git a/crates/jmap-proto/src/parser/json.rs b/crates/jmap-proto/src/parser/json.rs
index 00ac097a..8492fdb9 100644
--- a/crates/jmap-proto/src/parser/json.rs
+++ b/crates/jmap-proto/src/parser/json.rs
@@ -41,20 +41,20 @@ impl<'x> Parser<'x> {
}
pub fn error(&self, message: &str) -> trc::Error {
- trc::JmapEvent::NotJSON
+ trc::JmapEvent::NotJson
.into_err()
.details(format!("{message} at position {}.", self.pos))
}
pub fn error_unterminated(&self) -> trc::Error {
- trc::JmapEvent::NotJSON.into_err().details(format!(
+ trc::JmapEvent::NotJson.into_err().details(format!(
"Unterminated string at position {pos}.",
pos = self.pos
))
}
pub fn error_utf8(&self) -> trc::Error {
- trc::JmapEvent::NotJSON.into_err().details(format!(
+ trc::JmapEvent::NotJson.into_err().details(format!(
"Invalid UTF-8 sequence at position {pos}.",
pos = self.pos
))
diff --git a/crates/jmap/src/api/http.rs b/crates/jmap/src/api/http.rs
index edcc455e..ac77e007 100644
--- a/crates/jmap/src/api/http.rs
+++ b/crates/jmap/src/api/http.rs
@@ -707,7 +707,7 @@ impl ToRequestError for trc::Error {
match self.as_ref() {
trc::EventType::Jmap(cause) => match cause {
trc::JmapEvent::UnknownCapability => RequestError::unknown_capability(details),
- trc::JmapEvent::NotJSON => RequestError::not_json(details),
+ trc::JmapEvent::NotJson => RequestError::not_json(details),
trc::JmapEvent::NotRequest => RequestError::not_request(details),
_ => RequestError::invalid_parameters(),
},
diff --git a/crates/jmap/src/api/management/principal.rs b/crates/jmap/src/api/management/principal.rs
index ec4b7944..e88dea9d 100644
--- a/crates/jmap/src/api/management/principal.rs
+++ b/crates/jmap/src/api/management/principal.rs
@@ -418,7 +418,11 @@ impl JMAP {
};
Err(manage::unsupported(format!(
- "Requested action is unsupported for {class} directories.",
+ concat!(
+ "{} directory cannot be managed. ",
+ "Only internal directories support inserts and update operations."
+ ),
+ class
)))
}
}
diff --git a/crates/jmap/src/auth/authenticate.rs b/crates/jmap/src/auth/authenticate.rs
index b278941f..492faac9 100644
--- a/crates/jmap/src/auth/authenticate.rs
+++ b/crates/jmap/src/auth/authenticate.rs
@@ -160,25 +160,29 @@ impl JMAP {
}
pub async fn get_access_token(&self, account_id: u32) -> trc::Result<AccessToken> {
- match self
+ let err = match self
.core
.storage
.directory
.query(QueryBy::Id(account_id), true)
.await
{
- Ok(Some(principal)) => self.update_access_token(AccessToken::new(principal)).await,
+ Ok(Some(principal)) => {
+ return self.update_access_token(AccessToken::new(principal)).await
+ }
Ok(None) => Err(trc::AuthEvent::Error
.into_err()
.details("Account not found.")
.caused_by(trc::location!())),
- Err(err) => match &self.core.jmap.fallback_admin {
- Some((_, secret)) if account_id == u32::MAX => {
- self.update_access_token(AccessToken::new(Principal::fallback_admin(secret)))
- .await
- }
- _ => Err(err),
- },
+ Err(err) => Err(err),
+ };
+
+ match &self.core.jmap.fallback_admin {
+ Some((_, secret)) if account_id == u32::MAX => {
+ self.update_access_token(AccessToken::new(Principal::fallback_admin(secret)))
+ .await
+ }
+ _ => err,
}
}
}
diff --git a/crates/smtp/src/inbound/rcpt.rs b/crates/smtp/src/inbound/rcpt.rs
index 04cd8382..7ca3abb5 100644
--- a/crates/smtp/src/inbound/rcpt.rs
+++ b/crates/smtp/src/inbound/rcpt.rs
@@ -280,7 +280,7 @@ impl<T: SessionStream> Session<T> {
if self.is_allowed().await {
trc::event!(
- Smtp(SmtpEvent::RelayNotAllowed),
+ Smtp(SmtpEvent::RcptTo),
SpanId = self.data.session_id,
To = self.data.rcpt_to.last().unwrap().address_lcase.clone(),
);
diff --git a/crates/smtp/src/outbound/delivery.rs b/crates/smtp/src/outbound/delivery.rs
index 4a3daab1..a6e4c49a 100644
--- a/crates/smtp/src/outbound/delivery.rs
+++ b/crates/smtp/src/outbound/delivery.rs
@@ -500,7 +500,7 @@ impl DeliveryAttempt {
remote_hosts = remote_hosts_;
} else {
trc::event!(
- Delivery(DeliveryEvent::NullMX),
+ Delivery(DeliveryEvent::NullMx),
SpanId = message.span_id,
Domain = domain.domain.clone(),
Elapsed = time.elapsed(),
diff --git a/crates/store/src/backend/elastic/mod.rs b/crates/store/src/backend/elastic/mod.rs
index 1d0c239a..3ba3b7fc 100644
--- a/crates/store/src/backend/elastic/mod.rs
+++ b/crates/store/src/backend/elastic/mod.rs
@@ -111,7 +111,7 @@ impl ElasticSearchStore {
.exists(IndicesExistsParts::Index(&[INDEX_NAMES[0]]))
.send()
.await
- .map_err(|err| trc::StoreEvent::ElasticSearchError.reason(err))?;
+ .map_err(|err| trc::StoreEvent::ElasticsearchError.reason(err))?;
if exists.status_code() == StatusCode::NOT_FOUND {
let response = self
@@ -183,11 +183,11 @@ pub(crate) async fn assert_success(response: Result<Response, Error>) -> trc::Re
if status.is_success() {
Ok(response)
} else {
- Err(trc::StoreEvent::ElasticSearchError
+ Err(trc::StoreEvent::ElasticsearchError
.reason(response.text().await.unwrap_or_default())
.ctx(trc::Key::Code, status.as_u16()))
}
}
- Err(err) => Err(trc::StoreEvent::ElasticSearchError.reason(err)),
+ Err(err) => Err(trc::StoreEvent::ElasticsearchError.reason(err)),
}
}
diff --git a/crates/store/src/backend/elastic/query.rs b/crates/store/src/backend/elastic/query.rs
index 73367049..b9e3c0a5 100644
--- a/crates/store/src/backend/elastic/query.rs
+++ b/crates/store/src/backend/elastic/query.rs
@@ -107,14 +107,14 @@ impl ElasticSearchStore {
let json: Value = response
.json()
.await
- .map_err(|err| trc::StoreEvent::ElasticSearchError.reason(err))?;
+ .map_err(|err| trc::StoreEvent::ElasticsearchError.reason(err))?;
let mut results = RoaringBitmap::new();
for hit in json["hits"]["hits"].as_array().ok_or_else(|| {
- trc::StoreEvent::ElasticSearchError.reason("Invalid response from ElasticSearch")
+ trc::StoreEvent::ElasticsearchError.reason("Invalid response from ElasticSearch")
})? {
results.insert(hit["_source"]["document_id"].as_u64().ok_or_else(|| {
- trc::StoreEvent::ElasticSearchError.reason("Invalid response from ElasticSearch")
+ trc::StoreEvent::ElasticsearchError.reason("Invalid response from ElasticSearch")
})? as u32);
}
diff --git a/crates/store/src/backend/foundationdb/mod.rs b/crates/store/src/backend/foundationdb/mod.rs
index ffb831bd..585def96 100644
--- a/crates/store/src/backend/foundationdb/mod.rs
+++ b/crates/store/src/backend/foundationdb/mod.rs
@@ -77,7 +77,7 @@ impl TimedTransaction {
#[inline(always)]
fn into_error(error: FdbError) -> trc::Error {
- trc::StoreEvent::FoundationDBError
+ trc::StoreEvent::FoundationdbError
.reason(error.message())
.ctx(trc::Key::Code, error.code())
}
diff --git a/crates/store/src/backend/foundationdb/write.rs b/crates/store/src/backend/foundationdb/write.rs
index 7ae68fac..0eb55082 100644
--- a/crates/store/src/backend/foundationdb/write.rs
+++ b/crates/store/src/backend/foundationdb/write.rs
@@ -94,7 +94,7 @@ impl FdbStore {
*key.last_mut().unwrap() += 1;
} else {
trx.cancel();
- return Err(trc::StoreEvent::FoundationDBError
+ return Err(trc::StoreEvent::FoundationdbError
.ctx(
trc::Key::Reason,
"Value is too large",
diff --git a/crates/store/src/backend/mysql/mod.rs b/crates/store/src/backend/mysql/mod.rs
index 9571fcd4..08376334 100644
--- a/crates/store/src/backend/mysql/mod.rs
+++ b/crates/store/src/backend/mysql/mod.rs
@@ -20,5 +20,5 @@ pub struct MysqlStore {
#[inline(always)]
fn into_error(err: impl Display) -> trc::Error {
- trc::StoreEvent::MySQLError.reason(err)
+ trc::StoreEvent::MysqlError.reason(err)
}
diff --git a/crates/store/src/backend/postgres/mod.rs b/crates/store/src/backend/postgres/mod.rs
index 157d06f2..af839742 100644
--- a/crates/store/src/backend/postgres/mod.rs
+++ b/crates/store/src/backend/postgres/mod.rs
@@ -21,5 +21,5 @@ pub struct PostgresStore {
#[inline(always)]
fn into_error(err: impl Display) -> trc::Error {
- trc::StoreEvent::PostgreSQLError.reason(err)
+ trc::StoreEvent::PostgresqlError.reason(err)
}
diff --git a/crates/store/src/backend/rocksdb/mod.rs b/crates/store/src/backend/rocksdb/mod.rs
index b6ca584d..6e14130d 100644
--- a/crates/store/src/backend/rocksdb/mod.rs
+++ b/crates/store/src/backend/rocksdb/mod.rs
@@ -38,5 +38,5 @@ pub struct RocksDbStore {
#[inline(always)]
fn into_error(err: rocksdb::Error) -> trc::Error {
- trc::StoreEvent::RocksDBError.reason(err)
+ trc::StoreEvent::RocksdbError.reason(err)
}
diff --git a/crates/store/src/backend/sqlite/mod.rs b/crates/store/src/backend/sqlite/mod.rs
index 4f3089df..47ec465a 100644
--- a/crates/store/src/backend/sqlite/mod.rs
+++ b/crates/store/src/backend/sqlite/mod.rs
@@ -24,5 +24,5 @@ pub struct SqliteStore {
#[inline(always)]
fn into_error(err: impl Display) -> trc::Error {
- trc::StoreEvent::SQLiteError.reason(err)
+ trc::StoreEvent::SqliteError.reason(err)
}
diff --git a/crates/trc/src/conv.rs b/crates/trc/src/conv.rs
index 3b196fa4..7321ac23 100644
--- a/crates/trc/src/conv.rs
+++ b/crates/trc/src/conv.rs
@@ -275,7 +275,7 @@ impl From<mail_auth::Error> for Event<EventType> {
mail_auth::Error::ArcInvalidInstance(instance) => {
EventType::Arc(ArcEvent::InvalidInstance).ctx(Key::Id, instance)
}
- mail_auth::Error::ArcInvalidCV => EventType::Arc(ArcEvent::InvalidCV).into_err(),
+ mail_auth::Error::ArcInvalidCV => EventType::Arc(ArcEvent::InvalidCv).into_err(),
mail_auth::Error::ArcHasHeaderTag => EventType::Arc(ArcEvent::HasHeaderTag).into_err(),
mail_auth::Error::ArcBrokenChain => EventType::Arc(ArcEvent::BrokenChain).into_err(),
mail_auth::Error::NotAligned => {
diff --git a/crates/trc/src/fmt.rs b/crates/trc/src/fmt.rs
index 2e293fd4..b21b179d 100644
--- a/crates/trc/src/fmt.rs
+++ b/crates/trc/src/fmt.rs
@@ -333,9 +333,18 @@ mod tests {
assert!(!Level::Error.is_contained(Level::Trace));
assert!(!Level::Debug.is_contained(Level::Trace));
+ let mut names = Vec::with_capacity(100);
+
for event in EventType::variants() {
- println!("{}", event.name());
+ names.push(event.name());
assert_eq!(EventType::try_parse(event.name()).unwrap(), event);
}
+
+ // sort
+ names.sort();
+
+ for name in names {
+ println!("{:?},", name);
+ }
}
}
diff --git a/crates/trc/src/imple.rs b/crates/trc/src/imple.rs
index ee8883fd..f8d65307 100644
--- a/crates/trc/src/imple.rs
+++ b/crates/trc/src/imple.rs
@@ -146,7 +146,7 @@ impl Event<EventType> {
!matches!(
self.inner,
EventType::Jmap(
- JmapEvent::UnknownCapability | JmapEvent::NotJSON | JmapEvent::NotRequest
+ JmapEvent::UnknownCapability | JmapEvent::NotJson | JmapEvent::NotRequest
)
)
}
@@ -256,13 +256,13 @@ impl StoreEvent {
match self {
Self::AssertValueFailed => "Another process has modified the value",
Self::BlobMissingMarker => "Blob is missing marker",
- Self::FoundationDBError => "FoundationDB error",
- Self::MySQLError => "MySQL error",
- Self::PostgreSQLError => "PostgreSQL error",
- Self::RocksDBError => "RocksDB error",
- Self::SQLiteError => "SQLite error",
+ Self::FoundationdbError => "FoundationDB error",
+ Self::MysqlError => "MySQL error",
+ Self::PostgresqlError => "PostgreSQL error",
+ Self::RocksdbError => "RocksDB error",
+ Self::SqliteError => "SQLite error",
Self::LdapError => "LDAP error",
- Self::ElasticSearchError => "ElasticSearch error",
+ Self::ElasticsearchError => "ElasticSearch error",
Self::RedisError => "Redis error",
Self::S3Error => "S3 error",
Self::FilesystemError => "Filesystem error",
@@ -388,7 +388,7 @@ impl JmapEvent {
Self::CannotCalculateChanges => "Cannot calculate changes",
Self::UnknownDataType => "Unknown data type",
Self::UnknownCapability => "Unknown capability",
- Self::NotJSON => "Not JSON",
+ Self::NotJson => "Not JSON",
Self::NotRequest => "Not a request",
_ => "Other message",
}
@@ -858,13 +858,13 @@ impl EventType {
StoreEvent::Ingest | StoreEvent::IngestDuplicate => Level::Info,
StoreEvent::IngestError
| StoreEvent::AssertValueFailed
- | StoreEvent::FoundationDBError
- | StoreEvent::MySQLError
- | StoreEvent::PostgreSQLError
- | StoreEvent::RocksDBError
- | StoreEvent::SQLiteError
+ | StoreEvent::FoundationdbError
+ | StoreEvent::MysqlError
+ | StoreEvent::PostgresqlError
+ | StoreEvent::RocksdbError
+ | StoreEvent::SqliteError
| StoreEvent::LdapError
- | StoreEvent::ElasticSearchError
+ | StoreEvent::ElasticsearchError
| StoreEvent::RedisError
| StoreEvent::S3Error
| StoreEvent::FilesystemError
@@ -1089,7 +1089,7 @@ impl EventType {
EventType::Arc(event) => match event {
ArcEvent::ChainTooLong
| ArcEvent::InvalidInstance
- | ArcEvent::InvalidCV
+ | ArcEvent::InvalidCv
| ArcEvent::HasHeaderTag
| ArcEvent::BrokenChain => Level::Debug,
ArcEvent::SealerNotFound => Level::Warn,
@@ -1109,10 +1109,9 @@ impl EventType {
| PurgeEvent::TombstoneCleanup => Level::Debug,
},
EventType::Eval(event) => match event {
+ EvalEvent::Error => Level::Debug,
EvalEvent::Result => Level::Trace,
- EvalEvent::Error | EvalEvent::DirectoryNotFound | EvalEvent::StoreNotFound => {
- Level::Warn
- }
+ EvalEvent::DirectoryNotFound | EvalEvent::StoreNotFound => Level::Warn,
},
EventType::Server(event) => match event {
ServerEvent::Startup | ServerEvent::Shutdown | ServerEvent::Licensing => {
@@ -1144,18 +1143,18 @@ impl EventType {
| AcmeEvent::DnsRecordCreationFailed => Level::Warn,
AcmeEvent::RenewBackoff
| AcmeEvent::DnsRecordDeletionFailed
- | AcmeEvent::ClientSuppliedSNI
- | AcmeEvent::ClientMissingSNI
+ | AcmeEvent::ClientSuppliedSni
+ | AcmeEvent::ClientMissingSni
| AcmeEvent::DnsRecordNotPropagated
| AcmeEvent::DnsRecordLookupFailed => Level::Debug,
},
EventType::Tls(event) => match event {
TlsEvent::Handshake => Level::Info,
- TlsEvent::HandshakeError => Level::Debug,
+ TlsEvent::HandshakeError | TlsEvent::CertificateNotFound => Level::Debug,
TlsEvent::NotConfigured => Level::Error,
- TlsEvent::CertificateNotFound
- | TlsEvent::NoCertificatesAvailable
- | TlsEvent::MultipleCertificatesAvailable => Level::Warn,
+ TlsEvent::NoCertificatesAvailable | TlsEvent::MultipleCertificatesAvailable => {
+ Level::Warn
+ }
},
EventType::Sieve(event) => match event {
SieveEvent::NotSupported
@@ -1182,8 +1181,8 @@ impl EventType {
SpamEvent::ListUpdated => Level::Info,
},
EventType::Http(event) => match event {
- HttpEvent::Error | HttpEvent::XForwardedMissing => Level::Warn,
- HttpEvent::RequestUrl => Level::Debug,
+ HttpEvent::XForwardedMissing => Level::Warn,
+ HttpEvent::Error | HttpEvent::RequestUrl => Level::Debug,
HttpEvent::RequestBody | HttpEvent::ResponseBody => Level::Trace,
},
EventType::PushSubscription(event) => match event {
@@ -1269,7 +1268,7 @@ impl EventType {
| DeliveryEvent::DomainDeliveryStart
| DeliveryEvent::MxLookupFailed
| DeliveryEvent::IpLookupFailed
- | DeliveryEvent::NullMX
+ | DeliveryEvent::NullMx
| DeliveryEvent::Connect
| DeliveryEvent::ConnectError
| DeliveryEvent::GreetingFailed
@@ -1616,7 +1615,7 @@ impl DeliveryEvent {
DeliveryEvent::MxLookupFailed => "MX record lookup failed",
DeliveryEvent::IpLookup => "IP address lookup",
DeliveryEvent::IpLookupFailed => "IP address lookup failed",
- DeliveryEvent::NullMX => "Null MX record found",
+ DeliveryEvent::NullMx => "Null MX record found",
DeliveryEvent::Connect => "Connecting to remote server",
DeliveryEvent::ConnectError => "Connection error",
DeliveryEvent::MissingOutboundHostname => "Missing outbound hostname in configuration",
@@ -1849,9 +1848,9 @@ impl NetworkEvent {
match self {
NetworkEvent::ConnectionStart => "Network connection started",
NetworkEvent::ConnectionEnd => "Network connection ended",
- NetworkEvent::ListenStart => "Network listening started",
- NetworkEvent::ListenStop => "Network listening stopped",
- NetworkEvent::ListenError => "Network listening error",
+ NetworkEvent::ListenStart => "Network listener started",
+ NetworkEvent::ListenStop => "Network listener stopped",
+ NetworkEvent::ListenError => "Network listener error",
NetworkEvent::BindError => "Network bind error",
NetworkEvent::ReadError => "Network read error",
NetworkEvent::WriteError => "Network write error",
@@ -1920,8 +1919,8 @@ impl AcmeEvent {
AcmeEvent::DnsRecordLookupFailed => "ACME DNS record lookup failed",
AcmeEvent::DnsRecordPropagated => "ACME DNS record propagated",
AcmeEvent::DnsRecordPropagationTimeout => "ACME DNS record propagation timeout",
- AcmeEvent::ClientSuppliedSNI => "ACME client supplied SNI",
- AcmeEvent::ClientMissingSNI => "ACME client missing SNI",
+ AcmeEvent::ClientSuppliedSni => "ACME client supplied SNI",
+ AcmeEvent::ClientMissingSni => "ACME client missing SNI",
AcmeEvent::TlsAlpnReceived => "ACME TLS ALPN received",
AcmeEvent::TlsAlpnError => "ACME TLS ALPN error",
AcmeEvent::TokenNotFound => "ACME token not found",
@@ -1980,7 +1979,7 @@ impl ArcEvent {
match self {
ArcEvent::ChainTooLong => "ARC chain too long",
ArcEvent::InvalidInstance => "Invalid ARC instance",
- ArcEvent::InvalidCV => "Invalid ARC CV",
+ ArcEvent::InvalidCv => "Invalid ARC CV",
ArcEvent::HasHeaderTag => "ARC has header tag",
ArcEvent::BrokenChain => "Broken ARC chain",
ArcEvent::SealerNotFound => "ARC sealer not found",
@@ -2073,13 +2072,13 @@ impl StoreEvent {
match self {
StoreEvent::IngestError => "Message ingestion error",
StoreEvent::AssertValueFailed => "Another process modified the record",
- StoreEvent::FoundationDBError => "FoundationDB error",
- StoreEvent::MySQLError => "MySQL error",
- StoreEvent::PostgreSQLError => "PostgreSQL error",
- StoreEvent::RocksDBError => "RocksDB error",
- StoreEvent::SQLiteError => "SQLite error",
+ StoreEvent::FoundationdbError => "FoundationDB error",
+ StoreEvent::MysqlError => "MySQL error",
+ StoreEvent::PostgresqlError => "PostgreSQL error",
+ StoreEvent::RocksdbError => "RocksDB error",
+ StoreEvent::SqliteError => "SQLite error",
StoreEvent::LdapError => "LDAP error",
- StoreEvent::ElasticSearchError => "ElasticSearch error",
+ StoreEvent::ElasticsearchError => "ElasticSearch error",
StoreEvent::RedisError => "Redis error",
StoreEvent::S3Error => "S3 error",
StoreEvent::FilesystemError => "Filesystem error",
@@ -2122,7 +2121,7 @@ impl JmapEvent {
JmapEvent::CannotCalculateChanges => "Cannot calculate JMAP changes",
JmapEvent::UnknownDataType => "Unknown JMAP data type",
JmapEvent::UnknownCapability => "Unknown JMAP capability",
- JmapEvent::NotJSON => "JMAP request is not JSON",
+ JmapEvent::NotJson => "JMAP request is not JSON",
JmapEvent::NotRequest => "JMAP input is not a request",
JmapEvent::WebsocketStart => "JMAP WebSocket connection started",
JmapEvent::WebsocketStop => "JMAP WebSocket connection stopped",
diff --git a/crates/trc/src/lib.rs b/crates/trc/src/lib.rs
index 2cc00b4d..a7b6b3e3 100644
--- a/crates/trc/src/lib.rs
+++ b/crates/trc/src/lib.rs
@@ -444,7 +444,7 @@ pub enum DeliveryEvent {
MxLookupFailed,
IpLookup,
IpLookupFailed,
- NullMX,
+ NullMx,
Connect,
ConnectError,
MissingOutboundHostname,
@@ -693,8 +693,8 @@ pub enum AcmeEvent {
DnsRecordLookupFailed,
DnsRecordPropagated,
DnsRecordPropagationTimeout,
- ClientSuppliedSNI,
- ClientMissingSNI,
+ ClientSuppliedSni,
+ ClientMissingSni,
TlsAlpnReceived,
TlsAlpnError,
TokenNotFound,
@@ -741,7 +741,7 @@ pub enum ConfigEvent {
pub enum ArcEvent {
ChainTooLong,
InvalidInstance,
- InvalidCV,
+ InvalidCv,
HasHeaderTag,
BrokenChain,
SealerNotFound,
@@ -817,13 +817,13 @@ pub enum StoreEvent {
// Errors
IngestError,
AssertValueFailed,
- FoundationDBError,
- MySQLError,
- PostgreSQLError,
- RocksDBError,
- SQLiteError,
+ FoundationdbError,
+ MysqlError,
+ PostgresqlError,
+ RocksdbError,
+ SqliteError,
LdapError,
- ElasticSearchError,
+ ElasticsearchError,
RedisError,
S3Error,
FilesystemError,
@@ -874,7 +874,7 @@ pub enum JmapEvent {
// Request errors
UnknownCapability,
- NotJSON,
+ NotJson,
NotRequest,
// Not JMAP standard
diff --git a/crates/trc/src/subscriber.rs b/crates/trc/src/subscriber.rs
index c30a8ba6..405b1167 100644
--- a/crates/trc/src/subscriber.rs
+++ b/crates/trc/src/subscriber.rs
@@ -45,7 +45,10 @@ impl Subscriber {
pub fn send_batch(&mut self) -> Result<(), ChannelError> {
if !self.batch.is_empty() {
- match self.tx.try_send(std::mem::take(&mut self.batch)) {
+ match self
+ .tx
+ .try_send(std::mem::replace(&mut self.batch, Vec::with_capacity(128)))
+ {
Ok(_) => Ok(()),
Err(TrySendError::Full(mut events)) => {
if self.lossy && events.len() > MAX_BATCH_SIZE {
diff --git a/crates/utils/src/config/utils.rs b/crates/utils/src/config/utils.rs
index c2d992f3..504e5834 100644
--- a/crates/utils/src/config/utils.rs
+++ b/crates/utils/src/config/utils.rs
@@ -130,6 +130,13 @@ impl Config {
})
}
+ pub fn prefix<'x, 'y: 'x>(&'y self, prefix: impl AsKey) -> impl Iterator<Item = &str> + 'x {
+ let prefix = prefix.as_prefix();
+ self.keys
+ .keys()
+ .filter_map(move |key| key.strip_prefix(&prefix))
+ }
+
pub fn set_values<'x, 'y: 'x>(&'y self, prefix: impl AsKey) -> impl Iterator<Item = &str> + 'x {
let prefix = prefix.as_prefix();
diff --git a/tests/resources/ldap.cfg b/tests/resources/ldap/ldap.cfg
index ad8945ea..ad8945ea 100644
--- a/tests/resources/ldap.cfg
+++ b/tests/resources/ldap/ldap.cfg
diff --git a/tests/resources/ldap/run_glauth.sh b/tests/resources/ldap/run_glauth.sh
new file mode 100644
index 00000000..a802fbb9
--- /dev/null
+++ b/tests/resources/ldap/run_glauth.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+~/utils/glauth/glauth-darwin-arm64 -c tests/resources/ldap/ldap.cfg
diff --git a/tests/resources/smtp/dsn/delay.eml b/tests/resources/smtp/dsn/delay.eml
index 607f8147..dcac1178 100644
--- a/tests/resources/smtp/dsn/delay.eml
+++ b/tests/resources/smtp/dsn/delay.eml
@@ -2,6 +2,7 @@ From: "Mail Delivery Subsystem" <MAILER-DAEMON@example.org>
To: sender@foobar.org
Auto-Submitted: auto-generated
Subject: Warning: Delay in message delivery
+MIME-Version: 1.0
Content-Type: multipart/report; report-type="delivery-status";
boundary="mime_boundary"
diff --git a/tests/resources/smtp/dsn/failure.eml b/tests/resources/smtp/dsn/failure.eml
index 813b32ae..92372885 100644
--- a/tests/resources/smtp/dsn/failure.eml
+++ b/tests/resources/smtp/dsn/failure.eml
@@ -2,6 +2,7 @@ From: "Mail Delivery Subsystem" <MAILER-DAEMON@example.org>
To: sender@foobar.org
Auto-Submitted: auto-generated
Subject: Failed to deliver message
+MIME-Version: 1.0
Content-Type: multipart/report; report-type="delivery-status";
boundary="mime_boundary"
diff --git a/tests/resources/smtp/dsn/mixed.eml b/tests/resources/smtp/dsn/mixed.eml
index a4b7595a..2e305f56 100644
--- a/tests/resources/smtp/dsn/mixed.eml
+++ b/tests/resources/smtp/dsn/mixed.eml
@@ -2,6 +2,7 @@ From: "Mail Delivery Subsystem" <MAILER-DAEMON@example.org>
To: sender@foobar.org
Auto-Submitted: auto-generated
Subject: Partially delivered message
+MIME-Version: 1.0
Content-Type: multipart/report; report-type="delivery-status";
boundary="mime_boundary"
diff --git a/tests/resources/smtp/dsn/success.eml b/tests/resources/smtp/dsn/success.eml
index 15c631be..ffc0e3a2 100644
--- a/tests/resources/smtp/dsn/success.eml
+++ b/tests/resources/smtp/dsn/success.eml
@@ -2,6 +2,7 @@ From: "Mail Delivery Subsystem" <MAILER-DAEMON@example.org>
To: sender@foobar.org
Auto-Submitted: auto-generated
Subject: Successfully delivered message
+MIME-Version: 1.0
Content-Type: multipart/report; report-type="delivery-status";
boundary="mime_boundary"