Explorar el Código

V2.4.8

增加根路径解析记录

* 修复139邮箱发件错误

---------

Co-authored-by: jinnrry <i@jinnrry.com>
Jinnrry hace 1 año
padre
commit
bebf8bc6ce
Se han modificado 4 ficheros con 5 adiciones y 2 borrados
  1. 1 1
      server/go.mod
  2. 1 0
      server/services/setup/dns.go
  3. 2 1
      server/utils/send/send.go
  4. 1 0
      server/utils/smtp/smtp.go

+ 1 - 1
server/go.mod

@@ -19,6 +19,7 @@ require (
 	golang.org/x/crypto v0.22.0
 	golang.org/x/crypto v0.22.0
 	golang.org/x/text v0.14.0
 	golang.org/x/text v0.14.0
 	modernc.org/sqlite v1.29.6
 	modernc.org/sqlite v1.29.6
+	xorm.io/builder v0.3.13
 	xorm.io/xorm v1.3.9
 	xorm.io/xorm v1.3.9
 )
 )
 
 
@@ -50,5 +51,4 @@ require (
 	modernc.org/memory v1.8.0 // indirect
 	modernc.org/memory v1.8.0 // indirect
 	modernc.org/strutil v1.2.0 // indirect
 	modernc.org/strutil v1.2.0 // indirect
 	modernc.org/token v1.1.0 // indirect
 	modernc.org/token v1.1.0 // indirect
-	xorm.io/builder v0.3.13 // indirect
 )
 )

+ 1 - 0
server/services/setup/dns.go

@@ -26,6 +26,7 @@ func GetDNSSettings(ctx *context.Context) ([]*DNSItem, error) {
 	ret := []*DNSItem{
 	ret := []*DNSItem{
 		{Type: "A", Host: "smtp", Value: ip.GetIp(), TTL: 3600, Tips: i18n.GetText(ctx.Lang, "ip_taps")},
 		{Type: "A", Host: "smtp", Value: ip.GetIp(), TTL: 3600, Tips: i18n.GetText(ctx.Lang, "ip_taps")},
 		{Type: "A", Host: "pop", Value: ip.GetIp(), TTL: 3600, Tips: i18n.GetText(ctx.Lang, "ip_taps")},
 		{Type: "A", Host: "pop", Value: ip.GetIp(), TTL: 3600, Tips: i18n.GetText(ctx.Lang, "ip_taps")},
+		{Type: "A", Host: "-", Value: ip.GetIp(), TTL: 3600, Tips: i18n.GetText(ctx.Lang, "ip_taps")},
 		{Type: "MX", Host: "-", Value: fmt.Sprintf("smtp.%s", configData.Domain), TTL: 3600},
 		{Type: "MX", Host: "-", Value: fmt.Sprintf("smtp.%s", configData.Domain), TTL: 3600},
 		{Type: "TXT", Host: "-", Value: "v=spf1 a mx ~all", TTL: 3600},
 		{Type: "TXT", Host: "-", Value: "v=spf1 a mx ~all", TTL: 3600},
 		{Type: "TXT", Host: "default._domainkey", Value: auth.DkimGen(), TTL: 3600},
 		{Type: "TXT", Host: "default._domainkey", Value: auth.DkimGen(), TTL: 3600},

+ 2 - 1
server/utils/send/send.go

@@ -174,7 +174,8 @@ func Send(ctx *context.Context, e *parsemail.Email) (error, map[string]error) {
 
 
 			// 使用其他方式发送
 			// 使用其他方式发送
 			if err != nil {
 			if err != nil {
-				if errors.Is(err, smtp.NoSupportSTARTTLSError) {
+				// EOF 表示未知错误,此时降级为非tls连接发送(目前仅139邮箱有这个问题)
+				if errors.Is(err, smtp.NoSupportSTARTTLSError) || err.Error() == "EOF" {
 					err = smtp.SendMailWithTls("", domain.mxHost+":465", nil, e.From.EmailAddress, buildAddress(tos), b)
 					err = smtp.SendMailWithTls("", domain.mxHost+":465", nil, e.From.EmailAddress, buildAddress(tos), b)
 					if err != nil {
 					if err != nil {
 						log.WithContext(ctx).Warnf("Unsafe! %s Server Not Support SMTPS & STARTTLS", domain.domain)
 						log.WithContext(ctx).Warnf("Unsafe! %s Server Not Support SMTPS & STARTTLS", domain.domain)

+ 1 - 0
server/utils/smtp/smtp.go

@@ -34,6 +34,7 @@ import (
 )
 )
 
 
 var NoSupportSTARTTLSError = errors.New("smtp: server doesn't support STARTTLS")
 var NoSupportSTARTTLSError = errors.New("smtp: server doesn't support STARTTLS")
+var EOFError = errors.New("EOF")
 
 
 // A Client represents a client connection to an SMTP server.
 // A Client represents a client connection to an SMTP server.
 type Client struct {
 type Client struct {