forked from drew/smtprelay
Add missing default port for starttls and validate scheme to ensure support
This commit is contained in:
18
remotes.go
18
remotes.go
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user