diff options
-rw-r--r-- | CHANGELOG.md | 2 | ||||
-rw-r--r-- | commands/compose/send.go | 16 | ||||
-rw-r--r-- | doc/aerc-smtp.5.scd | 6 |
3 files changed, 22 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 53c1dcbe..450465e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Add a `msglist_answered` style for answered messages. - Compose `Format=Flowed` messages with `format-flowed=true` in `aerc.conf`. - Add a `trimSignature` function to the templating engine. +- Change local domain name for SMTP with `smtp-domain=example.com` in + `aerc.conf` ### Changed diff --git a/commands/compose/send.go b/commands/compose/send.go index 4029552e..1b65ab01 100644 --- a/commands/compose/send.go +++ b/commands/compose/send.go @@ -93,6 +93,10 @@ func (Send) Execute(aerc *widgets.Aerc, args []string) error { if starttls_, ok := config.Params["smtp-starttls"]; ok { starttls = starttls_ == "yes" } + var domain string + if domain_, ok := config.Params["smtp-domain"]; ok { + domain = domain_ + } ctx := sendCtx{ uri: uri, scheme: scheme, @@ -100,6 +104,7 @@ func (Send) Execute(aerc *widgets.Aerc, args []string) error { starttls: starttls, from: config.From, rcpts: rcpts, + domain: domain, } warn, err := composer.ShouldWarnAttachment() @@ -236,6 +241,7 @@ type sendCtx struct { starttls bool from *mail.Address rcpts []*mail.Address + domain string } func newSendmailSender(ctx sendCtx) (io.WriteCloser, error) { @@ -393,7 +399,7 @@ func newSmtpSender(ctx sendCtx) (io.WriteCloser, error) { ) switch ctx.scheme { case "smtp": - conn, err = connectSmtp(ctx.starttls, ctx.uri.Host) + conn, err = connectSmtp(ctx.starttls, ctx.uri.Host, ctx.domain) case "smtps": conn, err = connectSmtps(ctx.uri.Host) default: @@ -437,7 +443,7 @@ func newSmtpSender(ctx sendCtx) (io.WriteCloser, error) { return s.w, nil } -func connectSmtp(starttls bool, host string) (*smtp.Client, error) { +func connectSmtp(starttls bool, host string, domain string) (*smtp.Client, error) { serverName := host if !strings.ContainsRune(host, ':') { host += ":587" // Default to submission port @@ -448,6 +454,12 @@ func connectSmtp(starttls bool, host string) (*smtp.Client, error) { if err != nil { return nil, errors.Wrap(err, "smtp.Dial") } + if domain != "" { + err := conn.Hello(domain) + if err != nil { + return nil, errors.Wrap(err, "Hello") + } + } if sup, _ := conn.Extension("STARTTLS"); sup { if !starttls { err := errors.New("STARTTLS is supported by this server, " + diff --git a/doc/aerc-smtp.5.scd b/doc/aerc-smtp.5.scd index 75837150..850a71b2 100644 --- a/doc/aerc-smtp.5.scd +++ b/doc/aerc-smtp.5.scd @@ -64,6 +64,12 @@ are available: Default: _false_ +*smtp-domain* = _<domain>_ + Local domain name to use in the HELO/EHLO SMTP command. Set this to a fully + qualified domain name if the server requires it as an antispam measure. + + Default: _localhost_ + # SEE ALSO *aerc*(1) *aerc-accounts*(5) |