diff --git a/src/config.rs b/src/config.rs index 7cf8f8a..e93eda5 100644 --- a/src/config.rs +++ b/src/config.rs @@ -303,8 +303,10 @@ make_config! { smtp_host: String, true, option; /// Enable SSL smtp_ssl: bool, true, def, true; + /// Use explicit TLS |> Enabling this would force the use of an explicit TLS connection, instead of upgrading an insecure one with STARTTLS + smtp_explicit_tls: bool, true, def, false; /// Port - smtp_port: u16, true, auto, |c| if c.smtp_ssl {587} else {25}; + smtp_port: u16, true, auto, |c| if c.smtp_explicit_tls {465} else if c.smtp_ssl {587} else {25}; /// From Address smtp_from: String, true, def, String::new(); /// From Name diff --git a/src/mail.rs b/src/mail.rs index 938eb4b..2a99dbf 100644 --- a/src/mail.rs +++ b/src/mail.rs @@ -18,7 +18,13 @@ fn mailer() -> SmtpTransport { .build() .unwrap(); - ClientSecurity::Required(ClientTlsParameters::new(host.clone(), tls)) + let params = ClientTlsParameters::new(host.clone(), tls); + + if CONFIG.smtp_explicit_tls() { + ClientSecurity::Wrapper(params) + } else { + ClientSecurity::Required(params) + } } else { ClientSecurity::None };