Fix "forcing" client certificate for SMTP
This commit is contained in:
parent
8a6c86644e
commit
3aaf292ba8
3 changed files with 21 additions and 13 deletions
|
@ -105,6 +105,10 @@ SUBJECT = %(APP_NAME)s
|
||||||
HOST =
|
HOST =
|
||||||
; Do not verify the certificate of the server. Only use this for self-signed certificates
|
; Do not verify the certificate of the server. Only use this for self-signed certificates
|
||||||
SKIP_VERIFY =
|
SKIP_VERIFY =
|
||||||
|
; Use client certificate
|
||||||
|
; USE_CERTIFICATE = true
|
||||||
|
; CERT_FILE = custom/mailer/cert.pem
|
||||||
|
; KEY_FILE = custom/mailer/key.pem
|
||||||
; Mail from address, RFC 5322. This can be just an email address, or the "Name" <email@example.com> format
|
; Mail from address, RFC 5322. This can be just an email address, or the "Name" <email@example.com> format
|
||||||
FROM =
|
FROM =
|
||||||
; Mailer user name and password
|
; Mailer user name and password
|
||||||
|
|
|
@ -72,15 +72,17 @@ func sendMail(settings *setting.Mailer, recipients []string, msgContent []byte)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
cert, err := tls.LoadX509KeyPair(settings.CertFile, settings.KeyFile)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
tlsconfig := &tls.Config{
|
tlsconfig := &tls.Config{
|
||||||
InsecureSkipVerify: settings.SkipVerify,
|
InsecureSkipVerify: settings.SkipVerify,
|
||||||
ServerName: host,
|
ServerName: host,
|
||||||
Certificates: []tls.Certificate{cert},
|
}
|
||||||
|
|
||||||
|
if settings.UseCertificate {
|
||||||
|
cert, err := tls.LoadX509KeyPair(settings.CertFile, settings.KeyFile)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
tlsconfig.Certificates = []tls.Certificate{cert}
|
||||||
}
|
}
|
||||||
|
|
||||||
conn, err := net.Dial("tcp", net.JoinHostPort(host, port))
|
conn, err := net.Dial("tcp", net.JoinHostPort(host, port))
|
||||||
|
|
|
@ -451,6 +451,7 @@ type Mailer struct {
|
||||||
From string
|
From string
|
||||||
User, Passwd string
|
User, Passwd string
|
||||||
SkipVerify bool
|
SkipVerify bool
|
||||||
|
UseCertificate bool
|
||||||
CertFile, KeyFile string
|
CertFile, KeyFile string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -479,13 +480,14 @@ func newMailService() {
|
||||||
}
|
}
|
||||||
|
|
||||||
MailService = &Mailer{
|
MailService = &Mailer{
|
||||||
Name: sec.Key("NAME").MustString(AppName),
|
Name: sec.Key("NAME").MustString(AppName),
|
||||||
Host: sec.Key("HOST").String(),
|
Host: sec.Key("HOST").String(),
|
||||||
User: sec.Key("USER").String(),
|
User: sec.Key("USER").String(),
|
||||||
Passwd: sec.Key("PASSWD").String(),
|
Passwd: sec.Key("PASSWD").String(),
|
||||||
SkipVerify: sec.Key("SKIP_VERIFY").MustBool(),
|
SkipVerify: sec.Key("SKIP_VERIFY").MustBool(),
|
||||||
CertFile: sec.Key("CERT_FILE").String(),
|
UseCertificate: sec.Key("USE_CERTIFICATE").MustBool(),
|
||||||
KeyFile: sec.Key("KEY_FILE").String(),
|
CertFile: sec.Key("CERT_FILE").String(),
|
||||||
|
KeyFile: sec.Key("KEY_FILE").String(),
|
||||||
}
|
}
|
||||||
MailService.From = sec.Key("FROM").MustString(MailService.User)
|
MailService.From = sec.Key("FROM").MustString(MailService.User)
|
||||||
log.Info("Mail Service Enabled")
|
log.Info("Mail Service Enabled")
|
||||||
|
|
Loading…
Reference in a new issue