Author:
Hash:
Timestamp:
+49 -14 +/-4 browse
Kevin Schoon [me@kevinschoon.com]
9f4f5413ba4394a5202fac38cd487ac24f7406e0
Sun, 16 Feb 2025 21:38:35 +0000 (8 months ago)
| 1 | diff --git a/Cargo.lock b/Cargo.lock |
| 2 | index 4647ae5..db4f3b7 100644 |
| 3 | --- a/Cargo.lock |
| 4 | +++ b/Cargo.lock |
| 5 | @@ -696,6 +696,16 @@ dependencies = [ |
| 6 | ] |
| 7 | |
| 8 | [[package]] |
| 9 | + name = "gethostname" |
| 10 | + version = "1.0.0" |
| 11 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 12 | + checksum = "4fd4b8790c0792e3b11895efdf5f289ebe8b59107a6624f1cce68f24ff8c7035" |
| 13 | + dependencies = [ |
| 14 | + "rustix", |
| 15 | + "windows-targets 0.52.6", |
| 16 | + ] |
| 17 | + |
| 18 | + [[package]] |
| 19 | name = "getrandom" |
| 20 | version = "0.2.15" |
| 21 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 22 | @@ -735,6 +745,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" |
| 23 | checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" |
| 24 | |
| 25 | [[package]] |
| 26 | + name = "hashify" |
| 27 | + version = "0.2.6" |
| 28 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 29 | + checksum = "f208758247e68e239acaa059e72e4ce1f30f2a4b6523f19c1b923d25b7e9cceb" |
| 30 | + dependencies = [ |
| 31 | + "proc-macro2", |
| 32 | + "quote", |
| 33 | + "syn", |
| 34 | + ] |
| 35 | + |
| 36 | + [[package]] |
| 37 | name = "heck" |
| 38 | version = "0.5.0" |
| 39 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 40 | @@ -1179,15 +1200,15 @@ dependencies = [ |
| 41 | |
| 42 | [[package]] |
| 43 | name = "mail-auth" |
| 44 | - version = "0.6.0" |
| 45 | + version = "0.6.1" |
| 46 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 47 | - checksum = "b07f5abe750633593de4a5b1d84c6c7fbe54313c105732cddc7f3aa205d1e31e" |
| 48 | + checksum = "971b381e86bc19e81d7f4b5ffa3328a15fb7e2998fec82a82f4f144e65c73f5f" |
| 49 | dependencies = [ |
| 50 | "ahash", |
| 51 | "flate2", |
| 52 | "hickory-resolver", |
| 53 | - "mail-builder", |
| 54 | - "mail-parser", |
| 55 | + "mail-builder 0.4.1", |
| 56 | + "mail-parser 0.10.2", |
| 57 | "quick-xml", |
| 58 | "quick_cache", |
| 59 | "ring 0.17.8", |
| 60 | @@ -1207,6 +1228,15 @@ dependencies = [ |
| 61 | ] |
| 62 | |
| 63 | [[package]] |
| 64 | + name = "mail-builder" |
| 65 | + version = "0.4.1" |
| 66 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 67 | + checksum = "f2d2c992d0b4d0acedb466c5524bb09327f4d0bb5bcfacea13005ec01c09f2ac" |
| 68 | + dependencies = [ |
| 69 | + "gethostname 1.0.0", |
| 70 | + ] |
| 71 | + |
| 72 | + [[package]] |
| 73 | name = "mail-parser" |
| 74 | version = "0.9.4" |
| 75 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 76 | @@ -1217,6 +1247,16 @@ dependencies = [ |
| 77 | ] |
| 78 | |
| 79 | [[package]] |
| 80 | + name = "mail-parser" |
| 81 | + version = "0.10.2" |
| 82 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
| 83 | + checksum = "187a2b93c4c8c32f552ee06c2d99915e575de2fc7e04b07891c9edfee5b8edd6" |
| 84 | + dependencies = [ |
| 85 | + "encoding_rs", |
| 86 | + "hashify", |
| 87 | + ] |
| 88 | + |
| 89 | + [[package]] |
| 90 | name = "maildir" |
| 91 | version = "0.6.4" |
| 92 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 93 | @@ -1249,8 +1289,8 @@ dependencies = [ |
| 94 | "hickory-resolver", |
| 95 | "lettre", |
| 96 | "mail-auth", |
| 97 | - "mail-builder", |
| 98 | - "mail-parser", |
| 99 | + "mail-builder 0.3.2", |
| 100 | + "mail-parser 0.9.4", |
| 101 | "maildir", |
| 102 | "md5", |
| 103 | "port_check", |
| 104 | diff --git a/Cargo.toml b/Cargo.toml |
| 105 | index 909b238..72ff511 100644 |
| 106 | --- a/Cargo.toml |
| 107 | +++ b/Cargo.toml |
| 108 | @@ -10,7 +10,7 @@ bytes = "1.9.0" |
| 109 | email_address = "0.2.9" |
| 110 | futures = "0.3.31" |
| 111 | hickory-resolver = { version = "0.24.2", optional = true } |
| 112 | - mail-auth = { version = "0.6.0", features = ["ring", "rustls-pemfile"], optional = true } |
| 113 | + mail-auth = { version = "0.6.1", features = ["ring", "rustls-pemfile"], optional = true } |
| 114 | mail-builder = "0.3.2" |
| 115 | mail-parser = { version = "0.9.4", features = ["serde", "serde_support"] } |
| 116 | maildir = "0.6.4" |
| 117 | diff --git a/examples/server.rs b/examples/server.rs |
| 118 | index 11347e9..bf7bf4f 100644 |
| 119 | --- a/examples/server.rs |
| 120 | +++ b/examples/server.rs |
| 121 | @@ -1,5 +1,5 @@ |
| 122 | /// Simple SMTP server that prints delivered messages to stdout. |
| 123 | - use maitred::{DeliveryFunc, Envelope, server::Server}; |
| 124 | + use maitred::{server::Server, DeliveryFunc, Envelope, PlainAuth, PlainAuthFunc}; |
| 125 | use std::str::FromStr; |
| 126 | use tracing::Level; |
| 127 | |
| 128 | @@ -16,6 +16,7 @@ async fn main() { |
| 129 | |
| 130 | let mut mail_server = Server::default() |
| 131 | .address(LISTEN_ADDR) |
| 132 | + .plain_auth(PlainAuthFunc(|a, b, c| async move { Ok(()) })) |
| 133 | .with_delivery(DeliveryFunc(|envelope: &Envelope| { |
| 134 | println!("From: {}", envelope.mail_from); |
| 135 | for to in envelope.rcpt_to.iter() { |
| 136 | diff --git a/src/rewrite.rs b/src/rewrite.rs |
| 137 | index 3686ab2..05b6845 100644 |
| 138 | --- a/src/rewrite.rs |
| 139 | +++ b/src/rewrite.rs |
| 140 | @@ -1,4 +1,3 @@ |
| 141 | - use mail_auth::common::headers::Writer; |
| 142 | use mail_parser::{HeaderName, Message, MessageParser}; |
| 143 | |
| 144 | /// Basically a hack that can modify messages expensively re-parsing them on |
| 145 | @@ -49,11 +48,6 @@ impl<'a> Rewrite<'a> { |
| 146 | #[derive(Default)] |
| 147 | pub struct Header(Vec<u8>); |
| 148 | |
| 149 | - impl Writer for Header { |
| 150 | - fn write(&mut self, buf: &[u8]) { |
| 151 | - self.0.write(buf); |
| 152 | - } |
| 153 | - } |
| 154 | |
| 155 | #[cfg(test)] |
| 156 | mod test { |