From f13dfc519bd5a6069710955134efc36b3ea0d39c Mon Sep 17 00:00:00 2001 From: Marc Hoersken Date: Wed, 12 Feb 2020 22:32:01 +0100 Subject: [PATCH] Enable LOGIN AUTH method for legacy clients --- go.mod | 1 + server.go | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/go.mod b/go.mod index 8bc39ba..0329c06 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.12 require ( github.com/cenkalti/backoff/v3 v3.2.2 // indirect github.com/emersion/go-msgauth v0.4.0 + github.com/emersion/go-sasl v0.0.0-20191210011802-430746ea8b9b github.com/emersion/go-smtp v0.12.1 github.com/emersion/go-smtp-proxy v0.0.0-20200210193521-e8e7dd723514 github.com/heroku/rollrus v0.1.1 diff --git a/server.go b/server.go index 3310987..02892a3 100644 --- a/server.go +++ b/server.go @@ -22,6 +22,7 @@ import ( "crypto/tls" "strings" + "github.com/emersion/go-sasl" smtp "github.com/emersion/go-smtp" "github.com/mholt/certmagic" log "github.com/sirupsen/logrus" @@ -36,6 +37,18 @@ func makeServer(cfg *config, be *backend) *smtp.Server { s.MaxMessageBytes = cfg.MaxMessageBytes s.MaxRecipients = cfg.MaxRecipients s.AllowInsecureAuth = cfg.AllowInsecureAuth + s.EnableAuth(sasl.Login, func(conn *smtp.Conn) sasl.Server { + return sasl.NewLoginServer(func(username, password string) error { + state := conn.State() + session, err := be.Login(&state, username, password) + if err != nil { + return err + } + + conn.SetSession(session) + return nil + }) + }) return s }