geforkt von mirrored/vaultwarden
Merge pull request #585 from ViViDboarder/mail-auth-over-insecure
Allow explicitly defined smtp auth mechansim
Dieser Commit ist enthalten in:
Commit
2c2276c5bb
3 geänderte Dateien mit 15 neuen und 0 gelöschten Zeilen
|
@ -149,3 +149,4 @@
|
||||||
# SMTP_SSL=true
|
# SMTP_SSL=true
|
||||||
# SMTP_USERNAME=username
|
# SMTP_USERNAME=username
|
||||||
# SMTP_PASSWORD=password
|
# SMTP_PASSWORD=password
|
||||||
|
# SMTP_AUTH_MECHANISM="Plain"
|
||||||
|
|
|
@ -345,6 +345,8 @@ make_config! {
|
||||||
smtp_username: String, true, option;
|
smtp_username: String, true, option;
|
||||||
/// Password
|
/// Password
|
||||||
smtp_password: Pass, true, option;
|
smtp_password: Pass, true, option;
|
||||||
|
/// Json form auth mechanism |> Defaults for ssl is "Plain" and "Login" and nothing for non-ssl connections. Possible values: ["Plain", "Login", "Xoauth2"]
|
||||||
|
smtp_auth_mechanism: String, true, option;
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
12
src/mail.rs
12
src/mail.rs
|
@ -1,4 +1,5 @@
|
||||||
use lettre::smtp::authentication::Credentials;
|
use lettre::smtp::authentication::Credentials;
|
||||||
|
use lettre::smtp::authentication::Mechanism as SmtpAuthMechanism;
|
||||||
use lettre::smtp::ConnectionReuseParameters;
|
use lettre::smtp::ConnectionReuseParameters;
|
||||||
use lettre::{ClientSecurity, ClientTlsParameters, SmtpClient, SmtpTransport, Transport};
|
use lettre::{ClientSecurity, ClientTlsParameters, SmtpClient, SmtpTransport, Transport};
|
||||||
use lettre_email::{EmailBuilder, MimeMultipartType, PartBuilder};
|
use lettre_email::{EmailBuilder, MimeMultipartType, PartBuilder};
|
||||||
|
@ -39,6 +40,17 @@ fn mailer() -> SmtpTransport {
|
||||||
_ => smtp_client,
|
_ => smtp_client,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let smtp_client = match &CONFIG.smtp_auth_mechanism() {
|
||||||
|
Some(auth_mechanism_json) => {
|
||||||
|
let auth_mechanism = serde_json::from_str::<SmtpAuthMechanism>(&auth_mechanism_json);
|
||||||
|
match auth_mechanism {
|
||||||
|
Ok(auth_mechanism) => smtp_client.authentication_mechanism(auth_mechanism),
|
||||||
|
Err(_) => panic!("Failure to parse mechanism. Is it proper Json? Eg. `\"Plain\"` not `Plain`"),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
_ => smtp_client,
|
||||||
|
};
|
||||||
|
|
||||||
smtp_client
|
smtp_client
|
||||||
.smtp_utf8(true)
|
.smtp_utf8(true)
|
||||||
.connection_reuse(ConnectionReuseParameters::NoReuse)
|
.connection_reuse(ConnectionReuseParameters::NoReuse)
|
||||||
|
|
Laden …
In neuem Issue referenzieren