From 416d2065a801327fa5e7967463d95481a424fe43 Mon Sep 17 00:00:00 2001 From: Marc Hoersken Date: Fri, 21 Dec 2018 19:54:06 +0100 Subject: [PATCH] Differentiate between SMTP, SMTPS and StartTLS modes --- main.go | 14 +++++++------- server.go | 18 ++++++++++-------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/main.go b/main.go index b35ef95..ab096c5 100644 --- a/main.go +++ b/main.go @@ -25,7 +25,7 @@ import ( smtp "github.com/emersion/go-smtp" ) -func setupServer() *smtp.Server { +func setupServer() (*smtp.Server, bool) { log.Println("Loading configuration") cfg, err := loadConfig() if err != nil { @@ -43,22 +43,22 @@ func setupServer() *smtp.Server { log.Println(vh.Description) } - s := makeServer(cfg, be) - if cfg.Secure { - s.TLSConfig, err = makeTLSConfig(cfg) + server := makeServer(cfg, be) + if cfg.LetsEncrypt.Agreed { + server.TLSConfig, err = makeTLSConfig(cfg) if err != nil { log.Fatal(err) } } - return s + return server, cfg.Secure } func main() { - s := setupServer() + server, smtps := setupServer() runtime.GC() - if err := runServer(s); err != nil { + if err := runServer(server, smtps); err != nil { log.Fatal(err) } } diff --git a/server.go b/server.go index 5933128..ec4b464 100644 --- a/server.go +++ b/server.go @@ -58,20 +58,22 @@ func makeTLSConfig(cfg *config) (*tls.Config, error) { return mgc.TLSConfig(), nil } -func runServer(s *smtp.Server) error { - var err error - if s.TLSConfig == nil { +func runServer(server *smtp.Server, smtps bool) error { + if server.TLSConfig == nil { log.Println(strings.Repeat("-", 60)) - log.Println("WARNING: This server is running in insecure mode!") + log.Println("WARNING: This server is running without a TLS configuration!") log.Println("CAUTION: Never try to access this server over the internet!") log.Println("WARNING: Your unprotected credentials could be exposed!") log.Println(strings.Repeat("-", 60)) + } - log.Println("Starting insecure SMTP server at", s.Addr) - err = s.ListenAndServe() + var err error + if smtps { + log.Println("Starting SMTPS server at", server.Addr) + err = server.ListenAndServeTLS() } else { - log.Println("Starting secure SMTPS server at", s.Addr) - err = s.ListenAndServeTLS() + log.Println("Starting SMTP server at", server.Addr) + err = server.ListenAndServe() } return err }