remove native-tls dependency

This commit is contained in:
Alwin Berger 2024-09-04 22:58:32 +02:00
parent 49b5544608
commit 99145fca7c
3 changed files with 41 additions and 154 deletions

174
Cargo.lock generated
View file

@ -490,22 +490,6 @@ version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
[[package]]
name = "errno"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
dependencies = [
"libc",
"windows-sys 0.52.0",
]
[[package]]
name = "fastrand"
version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
[[package]]
name = "flate2"
version = "1.0.33"
@ -516,21 +500,6 @@ dependencies = [
"miniz_oxide 0.8.0",
]
[[package]]
name = "foreign-types"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
dependencies = [
"foreign-types-shared",
]
[[package]]
name = "foreign-types-shared"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
[[package]]
name = "form_urlencoded"
version = "1.2.1"
@ -766,7 +735,6 @@ dependencies = [
"chrono",
"imap-proto",
"lazy_static",
"native-tls",
"nom",
"regex",
]
@ -878,12 +846,6 @@ version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
[[package]]
name = "linux-raw-sys"
version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
[[package]]
name = "lock_api"
version = "0.4.12"
@ -992,7 +954,8 @@ dependencies = [
"imap",
"mail-parser",
"mail-send",
"native-tls",
"rustls 0.23.12",
"rustls-connector",
"serde",
"tokio",
"toml",
@ -1046,23 +1009,6 @@ dependencies = [
"windows-sys 0.52.0",
]
[[package]]
name = "native-tls"
version = "0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466"
dependencies = [
"libc",
"log",
"openssl",
"openssl-probe",
"openssl-sys",
"schannel",
"security-framework",
"security-framework-sys",
"tempfile",
]
[[package]]
name = "nom"
version = "5.1.3"
@ -1104,50 +1050,12 @@ version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
[[package]]
name = "openssl"
version = "0.10.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1"
dependencies = [
"bitflags 2.6.0",
"cfg-if",
"foreign-types",
"libc",
"once_cell",
"openssl-macros",
"openssl-sys",
]
[[package]]
name = "openssl-macros"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "openssl-probe"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "openssl-sys"
version = "0.9.103"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6"
dependencies = [
"cc",
"libc",
"pkg-config",
"vcpkg",
]
[[package]]
name = "parking_lot"
version = "0.12.3"
@ -1367,19 +1275,6 @@ version = "0.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
[[package]]
name = "rustix"
version = "0.38.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f"
dependencies = [
"bitflags 2.6.0",
"errno",
"libc",
"linux-raw-sys",
"windows-sys 0.52.0",
]
[[package]]
name = "rustls"
version = "0.21.12"
@ -1406,6 +1301,32 @@ dependencies = [
"zeroize",
]
[[package]]
name = "rustls-connector"
version = "0.21.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc9c089855dc1b0f982d0d56ec62e19cf935fe6720aa6705dc61190e99b36f32"
dependencies = [
"log",
"rustls 0.23.12",
"rustls-native-certs",
"rustls-pki-types",
"rustls-webpki 0.102.7",
]
[[package]]
name = "rustls-native-certs"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcaf18a4f2be7326cd874a5fa579fae794320a0f388d365dca7e480e55f83f8a"
dependencies = [
"openssl-probe",
"rustls-pemfile 2.1.3",
"rustls-pki-types",
"schannel",
"security-framework",
]
[[package]]
name = "rustls-pemfile"
version = "1.0.4"
@ -1564,15 +1485,6 @@ version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
[[package]]
name = "signal-hook-registry"
version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
dependencies = [
"libc",
]
[[package]]
name = "simd-adler32"
version = "0.3.7"
@ -1651,19 +1563,6 @@ dependencies = [
"unicode-ident",
]
[[package]]
name = "tempfile"
version = "3.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64"
dependencies = [
"cfg-if",
"fastrand",
"once_cell",
"rustix",
"windows-sys 0.59.0",
]
[[package]]
name = "thiserror"
version = "1.0.63"
@ -1728,9 +1627,7 @@ dependencies = [
"bytes",
"libc",
"mio",
"parking_lot",
"pin-project-lite",
"signal-hook-registry",
"socket2",
"tokio-macros",
"windows-sys 0.52.0",
@ -1889,12 +1786,6 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
[[package]]
name = "vcpkg"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
name = "version_check"
version = "0.9.5"
@ -2036,15 +1927,6 @@ dependencies = [
"windows-targets 0.52.6",
]
[[package]]
name = "windows-sys"
version = "0.59.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
dependencies = [
"windows-targets 0.52.6",
]
[[package]]
name = "windows-targets"
version = "0.48.5"

View file

@ -10,8 +10,9 @@ license = "0BSD"
serde = "1.0.209"
toml = "0.8.19"
clap = { version = "4.5.16", features = ["derive"] }
imap = "2.4.1"
imap = { version = "2.4.1", default-features = false }
mail-parser = "0.9.4"
mail-send = "0.4.9"
native-tls = "0.2.12"
tokio = { version = "1", features = ["full"] }
rustls = { version = "0.23", default-features = false, features = ["std", "ring"] }
rustls-connector = { version = "0.21.4", default-features = false, features = ["native-certs", "rustls--ring"] }
tokio = { version = "1.40.0", features = ["net", "io-util", "time", "macros"] }

View file

@ -1,8 +1,12 @@
use clap::Parser;
use imap::types::Fetch;
use imap::types::ZeroCopy;
use imap::Session;
use mail_parser::*;
use mail_send::SmtpClientBuilder;
use rustls::ClientConnection;
use rustls::StreamOwned;
use rustls_connector::RustlsConnector;
use serde::Deserialize;
use serde::Serialize;
use std::collections::HashMap;
@ -39,14 +43,14 @@ fn open_session(
config: &Config,
) -> Result<
(
imap::Session<native_tls::TlsStream<TcpStream>>,
native_tls::TlsConnector,
Session<StreamOwned<ClientConnection, TcpStream>>,
RustlsConnector,
),
Box<dyn Error>,
> {
// Setup Rustls TcpStream
let stream = TcpStream::connect((config.imap_domain.as_ref(), 993))?;
let tls = native_tls::TlsConnector::builder().build().unwrap();
let tls = RustlsConnector::default();
let tlsstream = tls.connect(&config.imap_domain, stream)?;
// we pass in the domain twice to check that the server's TLS
@ -63,7 +67,7 @@ fn open_session(
}
fn fetch_unread_mail(
session: &mut imap::Session<native_tls::TlsStream<TcpStream>>,
session: &mut Session<StreamOwned<ClientConnection, TcpStream>>,
) -> Result<ZeroCopy<Vec<Fetch>>, Box<dyn Error>> {
let unseen = session.uid_search("NOT SEEN")?;
let unseen_str = unseen
@ -95,7 +99,7 @@ fn build_forward_message<'a>(
}
fn mark_as_seen(
session: &mut imap::Session<native_tls::TlsStream<TcpStream>>,
session: &mut Session<StreamOwned<ClientConnection, TcpStream>>,
fetch: &Fetch,
) -> Result<ZeroCopy<Vec<Fetch>>, Box<dyn Error>> {
Ok(session.uid_store(