From 8fc449d42dfc81f7943db521f5db823f2cb5e750 Mon Sep 17 00:00:00 2001
From: smail
Date: Sat, 17 Oct 2026 11:11:07 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=91=E5=AF=BCWeb?=
=?UTF-8?q?=E5=9F=9F=E5=90=8D=E6=9C=AA=E8=A7=A3=E6=9E=90=E5=85=AC=E7=BD=91?=
=?UTF-8?q?IP=E6=97=B6=E8=87=AA=E5=8A=A8=E5=9B=9E=E9=80=80=E4=B8=BA?=
=?UTF-8?q?=E9=82=AE=E4=BB=B6=E6=9C=8D=E5=8A=A1=E5=99=A8=E5=85=AC=E7=BD=91?=
=?UTF-8?q?IP=E5=B9=B6=E5=8D=87=E7=BA=A7=E7=89=88=E6=9C=AC=E8=87=B3V2.10.6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
backend/services/setup/dns.go | 8 ++++++++
backend/services/setup/dns_test.go | 18 +++++++++++++++---
backend/services/verification/delivery_test.go | 2 +-
.../views/components/HomeAside/HomeAside.vue | 2 +-
4 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/backend/services/setup/dns.go b/backend/services/setup/dns.go
index 6a694fee..975f36cb 100644
--- a/backend/services/setup/dns.go
+++ b/backend/services/setup/dns.go
@@ -121,6 +121,14 @@ func buildDNSItemsWithWebIPv4(configData *config.Config, domain, dkimPublicKey,
Tips: ipTips,
})
}
+ } else if address != "" {
+ items = append(items, &DNSItem{
+ Type: "A",
+ Host: webHost,
+ Value: address,
+ TTL: dnsRecordTTL,
+ Tips: "Web 域名尚未解析,已推荐使用邮件服务器公网 IPv4",
+ })
} else {
items = append(items, &DNSItem{
Type: "A",
diff --git a/backend/services/setup/dns_test.go b/backend/services/setup/dns_test.go
index 7212ee92..465e831b 100644
--- a/backend/services/setup/dns_test.go
+++ b/backend/services/setup/dns_test.go
@@ -94,21 +94,33 @@ func TestBuildDNSItemsCreatesExpectedRecordShape(t *testing.T) {
}
}
-func TestBuildDNSItemsDoesNotReuseMailIPForUnresolvedWebDomain(t *testing.T) {
+func TestBuildDNSItemsReusesMailIPForUnresolvedWebDomain(t *testing.T) {
cfg := &config.Config{
Domain: "example.net",
WebDomain: "panel.example.net",
}
items := buildDNSItemsWithWebIPv4(cfg, "example.net", "v=DKIM1; k=rsa; p=test", "198.51.100.30", "", "", nil)
- if items[0].Host != "panel" || items[0].Value != "" || items[0].UnavailableReason != unresolvedWebIPv4 {
- t.Fatalf("unresolved web A record = %#v", items[0])
+ if items[0].Host != "panel" || items[0].Value != "198.51.100.30" || items[0].UnavailableReason != "" {
+ t.Fatalf("unresolved web A record should fall back to mail public ip: %#v", items[0])
}
if items[1].Host != "smtp" || items[1].Value != "198.51.100.30" {
t.Fatalf("mail A record = %#v", items[1])
}
}
+func TestBuildDNSItemsWithoutAnyIPMarksUnresolvedWebDomain(t *testing.T) {
+ cfg := &config.Config{
+ Domain: "example.net",
+ WebDomain: "panel.example.net",
+ }
+ items := buildDNSItemsWithWebIPv4(cfg, "example.net", "v=DKIM1; k=rsa; p=test", "", "", "", nil)
+
+ if items[0].Host != "panel" || items[0].Value != "" || items[0].UnavailableReason != unresolvedWebIPv4 {
+ t.Fatalf("unresolved web A record without public ip = %#v", items[0])
+ }
+}
+
func TestResolvePublicIPv4UsesActualLookupResults(t *testing.T) {
lookup := func(ctx stdcontext.Context, host string) ([]net.IP, error) {
if host != "panel.example.org" {
diff --git a/backend/services/verification/delivery_test.go b/backend/services/verification/delivery_test.go
index 58faaf36..f03de8a3 100644
--- a/backend/services/verification/delivery_test.go
+++ b/backend/services/verification/delivery_test.go
@@ -71,7 +71,7 @@ func TestSMTPDeliveryUsesReferenceHTMLTemplate(t *testing.T) {
"",
"邮箱验证码
",
"<xuans>,您好:
",
- "123456
",
+ ">123456
",
"7 分钟",
"本邮件由 Smail 发送",
} {
diff --git a/frontend/src/views/components/HomeAside/HomeAside.vue b/frontend/src/views/components/HomeAside/HomeAside.vue
index c8f656fb..866a949d 100644
--- a/frontend/src/views/components/HomeAside/HomeAside.vue
+++ b/frontend/src/views/components/HomeAside/HomeAside.vue
@@ -57,7 +57,7 @@
{{ lang.settings }}
- V2.10.5
+ V2.10.6