From ebb648807d3f25bb6cd31198821864a5a1822052 Mon Sep 17 00:00:00 2001 From: Aine Date: Tue, 8 Nov 2022 17:07:05 +0200 Subject: [PATCH] add LOGIN auth method --- smtp/server.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/smtp/server.go b/smtp/server.go index dfab3db..62b9cdb 100644 --- a/smtp/server.go +++ b/smtp/server.go @@ -6,6 +6,7 @@ import ( "os" "time" + "github.com/emersion/go-sasl" "github.com/emersion/go-smtp" "gitlab.com/etke.cc/go/logger" ) @@ -57,6 +58,19 @@ func NewServer(cfg *Config) *Server { if log.GetLevel() == "DEBUG" || log.GetLevel() == "TRACE" { s.Debug = os.Stdout } + // LOGIN auth method, ref: https://github.com/emersion/go-smtp/issues/41#issuecomment-493601465 + s.EnableAuth(sasl.Login, func(conn *smtp.Conn) sasl.Server { + return sasl.NewLoginServer(func(username, password string) error { + state := conn.State() + session, err := receiver.Login(&state, username, password) + if err != nil { + return err + } + + conn.SetSession(session) + return nil + }) + }) server := &Server{ msa: s,