aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorDmitry Azhichakov <dmitry@dsa.pp.ru>2015-02-12 18:54:51 +0300
committerDmitry Azhichakov <dmitry@dsa.pp.ru>2015-02-12 18:54:51 +0300
commit8a6c86644e6d73421e325c937916cefe7495bc38 (patch)
tree3213eb7b5a2a095daab8039cde84e7436d2d8534 /modules
parent485ea6f14f38cfa5da4fa27865f62fcc7691ffb4 (diff)
downloadgitea-8a6c86644e6d73421e325c937916cefe7495bc38.tar.gz
gitea-8a6c86644e6d73421e325c937916cefe7495bc38.zip
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.
Diffstat (limited to 'modules')
-rw-r--r--modules/mailer/mailer.go6
-rw-r--r--modules/setting/setting.go13
2 files changed, 14 insertions, 5 deletions
diff --git a/modules/mailer/mailer.go b/modules/mailer/mailer.go
index 6a23e5d09e..792e443543 100644
--- a/modules/mailer/mailer.go
+++ b/modules/mailer/mailer.go
@@ -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))
diff --git a/modules/setting/setting.go b/modules/setting/setting.go
index d71a8cda55..cf19b1aa8b 100644
--- a/modules/setting/setting.go
+++ b/modules/setting/setting.go
@@ -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")