Browse Source

New feature: SMTP connection may use client certificate.

New config keys in [mailer] section:
 - CERT_FILE: path to a certificate file.
 - KEY_FILE: path to a key file.
tags/v1.21.12.1
Dmitry Azhichakov 11 years ago
parent
commit
8a6c86644e
2 changed files with 14 additions and 5 deletions
  1. +6
    -0
      modules/mailer/mailer.go
  2. +8
    -5
      modules/setting/setting.go

+ 6
- 0
modules/mailer/mailer.go View File

@@ -72,9 +72,15 @@ func sendMail(settings *setting.Mailer, recipients []string, msgContent []byte)
return err
}

cert, err := tls.LoadX509KeyPair(settings.CertFile, settings.KeyFile)
if err != nil {
return err
}

tlsconfig := &tls.Config{
InsecureSkipVerify: settings.SkipVerify,
ServerName: host,
Certificates: []tls.Certificate{cert},
}

conn, err := net.Dial("tcp", net.JoinHostPort(host, port))


+ 8
- 5
modules/setting/setting.go View File

@@ -446,11 +446,12 @@ func newSessionService() {

// Mailer represents mail service.
type Mailer struct {
Name string
Host string
From string
User, Passwd string
SkipVerify bool
Name string
Host string
From string
User, Passwd string
SkipVerify bool
CertFile, KeyFile string
}

type OauthInfo struct {
@@ -483,6 +484,8 @@ func newMailService() {
User: sec.Key("USER").String(),
Passwd: sec.Key("PASSWD").String(),
SkipVerify: sec.Key("SKIP_VERIFY").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