|
|
|
@ -178,14 +178,25 @@ func newMailService() { |
|
|
|
|
|
|
|
|
|
// we want to warn if users use SMTP on a non-local IP;
|
|
|
|
|
// we might as well take the opportunity to check that it has an IP at all
|
|
|
|
|
ips := tryResolveAddr(MailService.SMTPAddr) |
|
|
|
|
if MailService.Protocol == "smtp" { |
|
|
|
|
for _, ip := range ips { |
|
|
|
|
if !ip.IsLoopback() { |
|
|
|
|
log.Warn("connecting over insecure SMTP protocol to non-local address is not recommended") |
|
|
|
|
break |
|
|
|
|
// This check is not needed for sendmail
|
|
|
|
|
switch MailService.Protocol { |
|
|
|
|
case "sendmail": |
|
|
|
|
var err error |
|
|
|
|
MailService.SendmailArgs, err = shellquote.Split(sec.Key("SENDMAIL_ARGS").String()) |
|
|
|
|
if err != nil { |
|
|
|
|
log.Error("Failed to parse Sendmail args: '%s' with error %v", sec.Key("SENDMAIL_ARGS").String(), err) |
|
|
|
|
} |
|
|
|
|
case "smtp", "smtps", "smtp+starttls", "smtp+unix": |
|
|
|
|
ips := tryResolveAddr(MailService.SMTPAddr) |
|
|
|
|
if MailService.Protocol == "smtp" { |
|
|
|
|
for _, ip := range ips { |
|
|
|
|
if !ip.IsLoopback() { |
|
|
|
|
log.Warn("connecting over insecure SMTP protocol to non-local address is not recommended") |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
case "dummy": // just mention and do nothing
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if MailService.From != "" { |
|
|
|
@ -214,14 +225,6 @@ func newMailService() { |
|
|
|
|
MailService.EnvelopeFrom = parsed.Address |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if MailService.Protocol == "sendmail" { |
|
|
|
|
var err error |
|
|
|
|
MailService.SendmailArgs, err = shellquote.Split(sec.Key("SENDMAIL_ARGS").String()) |
|
|
|
|
if err != nil { |
|
|
|
|
log.Error("Failed to parse Sendmail args: %s with error %v", CustomConf, err) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
log.Info("Mail Service Enabled") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|