aboutsummaryrefslogtreecommitdiff
path: root/discover.go
diff options
context:
space:
mode:
Diffstat (limited to 'discover.go')
-rw-r--r--discover.go20
1 files changed, 15 insertions, 5 deletions
diff --git a/discover.go b/discover.go
index 08d4aa1..297d9ad 100644
--- a/discover.go
+++ b/discover.go
@@ -53,14 +53,24 @@ func discoverIMAP(domain string) (*url.URL, error) {
}
// discoverSMTP performs a DNS-based SMTP submission service discovery, as
-// defined in RFC 6186 section 3.1.
+// defined in RFC 6186 section 3.1. RFC 8314 section 5.1 adds a new service for
+// SMTP submission with implicit TLS.
func discoverSMTP(domain string) (*url.URL, error) {
- host, err := discoverTCP("submission", domain)
+ smtpsHost, err := discoverTCP("submissions", domain)
if err != nil {
return nil, err
}
- if host == "" {
- return nil, fmt.Errorf("SMTP service discovery not configured for domain %q", domain)
+ if smtpsHost != "" {
+ return &url.URL{Scheme: "smtps", Host: smtpsHost}, nil
}
- return &url.URL{Scheme: "smtp", Host: host}, nil
+
+ smtpHost, err := discoverTCP("submission", domain)
+ if err != nil {
+ return nil, err
+ }
+ if smtpHost != "" {
+ return &url.URL{Scheme: "smtp", Host: smtpHost}, nil
+ }
+
+ return nil, fmt.Errorf("SMTP service discovery not configured for domain %q", domain)
}