diff --git a/backend/services/setup/dns.go b/backend/services/setup/dns.go index f4f9c9a..ec5911a 100644 --- a/backend/services/setup/dns.go +++ b/backend/services/setup/dns.go @@ -61,7 +61,7 @@ func buildDNSItemsWithWebIPv4(configData *config.Config, domain, dkimPublicKey, address = "[未检测到公网 IPv4]" } - items := make([]*DNSItem, 0, 13) + items := make([]*DNSItem, 0, 14) appendARecord := func(host string) { for _, item := range items { if item.Type == "A" && item.Host == host { @@ -124,6 +124,7 @@ func buildDNSItemsWithWebIPv4(configData *config.Config, domain, dkimPublicKey, appendAAAARecord(host, address) } } + appendARecord("*") items = append(items, &DNSItem{Type: "MX", Host: "@", Value: fmt.Sprintf("smtp.%s | 1", domain), TTL: dnsRecordTTL}, diff --git a/backend/services/setup/dns_test.go b/backend/services/setup/dns_test.go index e728a15..c882d85 100644 --- a/backend/services/setup/dns_test.go +++ b/backend/services/setup/dns_test.go @@ -69,8 +69,8 @@ func TestBuildDNSItemsCreatesExpectedRecordShape(t *testing.T) { } items := buildDNSItemsWithWebIPv4(cfg, "example.com", "v=DKIM1; k=rsa; p=test", "198.51.100.20", "2001:db8::20", "", []string{"203.0.113.20"}) - if len(items) != 13 { - t.Fatalf("DNS item count = %d, want 13", len(items)) + if len(items) != 14 { + t.Fatalf("DNS item count = %d, want 14", len(items)) } if items[0].Host != "panel" || items[0].Type != "A" || items[0].Value != "203.0.113.20" { t.Fatalf("web A record = %#v", items[0]) @@ -86,8 +86,11 @@ func TestBuildDNSItemsCreatesExpectedRecordShape(t *testing.T) { t.Fatalf("mail service AAAA record = %#v", items[index]) } } - if items[9].Value != "smtp.example.com | 1" || items[9].TTL != dnsRecordTTL { - t.Fatalf("MX record = %#v", items[9]) + if items[9].Host != "*" || items[9].Type != "A" || items[9].Value != "198.51.100.20" || items[9].TTL != dnsRecordTTL { + t.Fatalf("wildcard A record = %#v", items[9]) + } + if items[10].Value != "smtp.example.com | 1" || items[10].TTL != dnsRecordTTL { + t.Fatalf("MX record = %#v", items[10]) } }