Browse Source

Merge pull request #943 from diseaz/mailer-client-cert

Use client certificate for SMTP over TLS
pull/1007/head
无闻 10 years ago
parent
commit
3db80f2c55
  1. 4
      conf/app.ini
  2. 8
      modules/mailer/mailer.go
  3. 5
      modules/setting/setting.go

4
conf/app.ini

@ -105,6 +105,10 @@ SUBJECT = %(APP_NAME)s
HOST =
; Do not verify the certificate of the server. Only use this for self-signed certificates
SKIP_VERIFY =
; Use client certificate
USE_CERTIFICATE = false
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
FROM =
; Mailer user name and password

8
modules/mailer/mailer.go

@ -78,6 +78,14 @@ func sendMail(settings *setting.Mailer, recipients []string, msgContent []byte)
ServerName: host,
}
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))
if err != nil {
return err

5
modules/setting/setting.go

@ -456,6 +456,8 @@ type Mailer struct {
From string
User, Passwd string
SkipVerify bool
UseCertificate bool
CertFile, KeyFile string
}
type OauthInfo struct {
@ -488,6 +490,9 @@ func newMailService() {
User: sec.Key("USER").String(),
Passwd: sec.Key("PASSWD").String(),
SkipVerify: sec.Key("SKIP_VERIFY").MustBool(),
UseCertificate: sec.Key("USE_CERTIFICATE").MustBool(),
CertFile: sec.Key("CERT_FILE").String(),
KeyFile: sec.Key("KEY_FILE").String(),
}
MailService.From = sec.Key("FROM").MustString(MailService.User)
log.Info("Mail Service Enabled")

Loading…
Cancel
Save