From af4f19df7bf50852ac657ff016705b43cc380240 Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Mon, 23 Oct 2023 15:07:20 +0200 Subject: [PATCH] Skip certificate chain validation when sending emails This is a workaround for #1996, until lettre fixes the root issue --- crates/email/src/transport.rs | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/crates/email/src/transport.rs b/crates/email/src/transport.rs index 435ef5d1..6691fb0d 100644 --- a/crates/email/src/transport.rs +++ b/crates/email/src/transport.rs @@ -75,8 +75,30 @@ impl Transport { ) -> Result { let mut t = match mode { SmtpMode::Plain => AsyncSmtpTransport::::builder_dangerous(hostname), - SmtpMode::StartTls => AsyncSmtpTransport::::starttls_relay(hostname)?, - SmtpMode::Tls => AsyncSmtpTransport::::relay(hostname)?, + SmtpMode::StartTls => { + let tls_parameters = + lettre::transport::smtp::client::TlsParameters::builder(hostname.to_owned()) + .dangerous_accept_invalid_certs(true) + .build()?; + + AsyncSmtpTransport::::builder_dangerous(hostname) + .port(lettre::transport::smtp::SUBMISSION_PORT) + .tls(lettre::transport::smtp::client::Tls::Required( + tls_parameters, + )) + } + SmtpMode::Tls => { + let tls_parameters = + lettre::transport::smtp::client::TlsParameters::builder(hostname.to_owned()) + .dangerous_accept_invalid_certs(true) + .build()?; + + AsyncSmtpTransport::::builder_dangerous(hostname) + .port(lettre::transport::smtp::SUBMISSIONS_PORT) + .tls(lettre::transport::smtp::client::Tls::Wrapper( + tls_parameters, + )) + } }; if let Some(credentials) = credentials {