@ -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 . IP Addr {
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
}