|
|
@@ -4,6 +4,7 @@ |
|
|
|
package setting |
|
|
|
|
|
|
|
import ( |
|
|
|
"context" |
|
|
|
"net" |
|
|
|
"net/mail" |
|
|
|
"strings" |
|
|
@@ -198,7 +199,7 @@ func loadMailerFrom(rootCfg ConfigProvider) { |
|
|
|
ips := tryResolveAddr(MailService.SMTPAddr) |
|
|
|
if MailService.Protocol == "smtp" { |
|
|
|
for _, ip := range ips { |
|
|
|
if !ip.IsLoopback() { |
|
|
|
if !ip.IP.IsLoopback() { |
|
|
|
log.Warn("connecting over insecure SMTP protocol to non-local address is not recommended") |
|
|
|
break |
|
|
|
} |
|
|
@@ -258,20 +259,21 @@ func loadNotifyMailFrom(rootCfg ConfigProvider) { |
|
|
|
log.Info("Notify Mail Service Enabled") |
|
|
|
} |
|
|
|
|
|
|
|
func tryResolveAddr(addr string) []net.IP { |
|
|
|
func tryResolveAddr(addr string) []net.IPAddr { |
|
|
|
if strings.HasPrefix(addr, "[") && strings.HasSuffix(addr, "]") { |
|
|
|
addr = addr[1 : len(addr)-1] |
|
|
|
} |
|
|
|
ip := net.ParseIP(addr) |
|
|
|
if ip != nil { |
|
|
|
ips := make([]net.IP, 1) |
|
|
|
ips[0] = ip |
|
|
|
return ips |
|
|
|
return []net.IPAddr{{IP: ip}} |
|
|
|
} |
|
|
|
ips, err := net.LookupIP(addr) |
|
|
|
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) |
|
|
|
defer cancel() |
|
|
|
ips, err := net.DefaultResolver.LookupIPAddr(ctx, addr) |
|
|
|
if err != nil { |
|
|
|
log.Warn("could not look up mailer.SMTP_ADDR: %v", err) |
|
|
|
return make([]net.IP, 0) |
|
|
|
return nil |
|
|
|
} |
|
|
|
return ips |
|
|
|
} |