Skip to content

Commit e86a0bf

Browse files
cez81lafriks
authored andcommitted
Add support for extra sendmail arguments (#2731)
* Add support for extra sendmail arguments * Sendmail args to exec.command should be a list * Add go-shellquote package * Use go-shellquote lib for parsing Sendmail args * Only parse if sendmail is configured
1 parent 3af5b67 commit e86a0bf

File tree

9 files changed

+322
-0
lines changed

9 files changed

+322
-0
lines changed

conf/app.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,8 @@ SEND_AS_PLAIN_TEXT = false
327327
USE_SENDMAIL = false
328328
; Specify an alternative sendmail binary
329329
SENDMAIL_PATH = sendmail
330+
; Specify any extra sendmail arguments
331+
SENDMAIL_ARGS =
330332

331333
[cache]
332334
; Either "memory", "redis", or "memcache", default is "memory"

modules/mailer/mailer.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ func (s *sendmailSender) Send(from string, to []string, msg io.WriterTo) error {
209209
var waitError error
210210

211211
args := []string{"-F", from, "-i"}
212+
args = append(args, setting.MailService.SendmailArgs...)
212213
args = append(args, to...)
213214
log.Trace("Sending with: %s %v", setting.MailService.SendmailPath, args)
214215
cmd := exec.Command(setting.MailService.SendmailPath, args...)

modules/setting/setting.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
"github.com/go-macaron/session"
3636
_ "github.com/go-macaron/session/redis" // redis plugin for store session
3737
"github.com/go-xorm/core"
38+
"github.com/kballard/go-shellquote"
3839
"gopkg.in/ini.v1"
3940
"strk.kbt.io/projects/go/libravatar"
4041
)
@@ -1326,6 +1327,7 @@ type Mailer struct {
13261327
// Sendmail sender
13271328
UseSendmail bool
13281329
SendmailPath string
1330+
SendmailArgs []string
13291331
}
13301332

13311333
var (
@@ -1372,6 +1374,13 @@ func newMailService() {
13721374
MailService.FromName = parsed.Name
13731375
MailService.FromEmail = parsed.Address
13741376

1377+
if MailService.UseSendmail {
1378+
MailService.SendmailArgs, err = shellquote.Split(sec.Key("SENDMAIL_ARGS").String())
1379+
if err != nil {
1380+
log.Error(4, "Failed to parse Sendmail args: %v", CustomConf, err)
1381+
}
1382+
}
1383+
13751384
log.Info("Mail Service Enabled")
13761385
}
13771386

vendor/github.com/kballard/go-shellquote/LICENSE

Lines changed: 19 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/kballard/go-shellquote/README

Lines changed: 36 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/kballard/go-shellquote/doc.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/kballard/go-shellquote/quote.go

Lines changed: 102 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/kballard/go-shellquote/unquote.go

Lines changed: 144 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/vendor.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,12 @@
521521
"revision": "b2c7a7da5b2995941048f60146e67702a292e468",
522522
"revisionTime": "2016-02-12T04:00:40Z"
523523
},
524+
{
525+
"checksumSHA1": "+IzngblnBQNh+GmsS2O7jqmzSVQ=",
526+
"path": "github.com/kballard/go-shellquote",
527+
"revision": "cd60e84ee657ff3dc51de0b4f55dd299a3e136f2",
528+
"revisionTime": "2017-06-19T18:30:22Z"
529+
},
524530
{
525531
"checksumSHA1": "VJk3rOWfxEV9Ilig5lgzH1qg8Ss=",
526532
"path": "github.com/keybase/go-crypto/brainpool",

0 commit comments

Comments
 (0)