2
0
forked from drew/smtprelay

Add missing default port for starttls and validate scheme to ensure support

This commit is contained in:
Mark Gardner
2022-04-21 11:28:48 -05:00
parent cf927508dd
commit b7f3701502

View File

@@ -20,6 +20,7 @@ type Remote struct {
// //
// smtp://[user[:password]@][netloc][:port][/remote_sender][?param1=value1&...] // smtp://[user[:password]@][netloc][:port][/remote_sender][?param1=value1&...]
// smtps://[user[:password]@][netloc][:port][/remote_sender][?param1=value1&...] // smtps://[user[:password]@][netloc][:port][/remote_sender][?param1=value1&...]
// starttls://[user[:password]@][netloc][:port][/remote_sender][?param1=value1&...]
// //
// Supported Params: // Supported Params:
// - skipVerify: can be "true" or empty to prevent ssl verification of remote server's certificate. // - skipVerify: can be "true" or empty to prevent ssl verification of remote server's certificate.
@@ -31,12 +32,21 @@ func ParseRemote(remoteURL string) (*Remote, error) {
return nil, err return nil, err
} }
if u.Scheme != "smtp" && u.Scheme != "smtps" && u.Scheme != "starttls" {
return nil, fmt.Errorf("'%s' is not a supported relay scheme", u.Scheme)
}
hostname, port := u.Hostname(), u.Port() hostname, port := u.Hostname(), u.Port()
if u.Scheme == "smtp" && port == "" { if port == "" {
port = "25" switch u.Scheme {
} else if u.Scheme == "smtps" && port == "" { case "smtp":
port = "465" port = "25"
case "smtps":
port = "465"
case "starttls":
port = "587"
}
} }
q := u.Query() q := u.Query()