diff options
author | Simon Ser <contact@emersion.fr> | 2020-01-20 13:08:05 +0100 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2020-01-20 13:08:05 +0100 |
commit | a0800c243688aecf391ff74ea9f713cd2a6ffb45 (patch) | |
tree | fb707f8a42b3319487b9ad06de98e366119f8f49 /server.go | |
parent | db328bf7c374ed7b079d9d8984cb25165605c28e (diff) | |
download | alps-a0800c243688aecf391ff74ea9f713cd2a6ffb45.tar.gz alps-a0800c243688aecf391ff74ea9f713cd2a6ffb45.zip |
Auto-discover upstream SMTP and IMAP servers
Closes: https://todo.sr.ht/~sircmpwn/koushin/49
Diffstat (limited to 'server.go')
-rw-r--r-- | server.go | 21 |
1 files changed, 17 insertions, 4 deletions
@@ -108,12 +108,18 @@ func (s *Server) parseIMAPUpstream() error { return fmt.Errorf("failed to parse upstream IMAP server: %v", err) } + if u.Scheme == "" { + u, err = discoverIMAP(u.Host) + if err != nil { + return fmt.Errorf("failed to discover IMAP server: %v", err) + } + } + s.imap.host = u.Host switch u.Scheme { case "imap": // This space is intentionally left blank - case "imaps", "": - // TODO: auto-discovery for empty scheme + case "imaps": s.imap.tls = true case "imap+insecure": s.imap.insecure = true @@ -133,12 +139,19 @@ func (s *Server) parseSMTPUpstream() error { return fmt.Errorf("failed to parse upstream SMTP server: %v", err) } + if u.Scheme == "" { + u, err = discoverSMTP(u.Host) + if err != nil { + s.e.Logger.Printf("Failed to discover SMTP server: %v", err) + return nil + } + } + s.smtp.host = u.Host switch u.Scheme { case "smtp": // This space is intentionally left blank - case "smtps", "": - // TODO: auto-discovery for empty scheme + case "smtps": s.smtp.tls = true case "smtp+insecure": s.smtp.insecure = true |