register_remote_server: Check for NS records, now just A/AAAA.

We shouldn't declare that the domain doesn't exist, if it has a valid
NS record but no A/AAAA.
This commit is contained in:
Alex Vandiver
2025-10-06 16:31:36 +00:00
committed by Tim Abbott
parent a0e5be7f2e
commit afd7c4b1d1
2 changed files with 22 additions and 5 deletions

View File

@@ -2677,7 +2677,16 @@ class PushBouncerSignupTest(ZulipTestCase):
request["contact_email"] = "admin@zulip.com"
with mock.patch("zilencer.views.dns_resolver.Resolver") as resolver:
resolver.return_value.resolve.side_effect = DNSNoAnswer
resolver.return_value.resolve_name.return_value = ["whee"]
resolver.return_value.resolve_name.return_value = ["A/AAAA response"]
result = self.client_post("/api/v1/remotes/server/register", request)
self.assert_json_error(
result,
"Invalid server administrator email address: zulip.com is invalid because it does not have any MX records",
)
with mock.patch("zilencer.views.dns_resolver.Resolver") as resolver:
resolver.return_value.resolve.side_effect = [DNSNoAnswer, "NS response"]
resolver.return_value.resolve_name.side_effect = DNSNoAnswer
result = self.client_post("/api/v1/remotes/server/register", request)
self.assert_json_error(
result,
@@ -2693,7 +2702,7 @@ class PushBouncerSignupTest(ZulipTestCase):
)
with mock.patch("zilencer.views.dns_resolver.Resolver") as resolver:
resolver.return_value.resolve.return_value = ["whee"]
resolver.return_value.resolve.return_value = ["MX response"]
result = self.client_post("/api/v1/remotes/server/register", request)
self.assert_json_success(result)

View File

@@ -265,6 +265,14 @@ def register_remote_server(
domain=contact_email_domain
)
)
except DNSException:
try:
resolver.resolve(contact_email_domain, rdtype="NS")
raise ServerAdminEmailError(
_("{domain} is invalid because it does not have any MX records").format(
domain=contact_email_domain
)
)
except DNSException:
raise ServerAdminEmailError(
_("{domain} does not exist").format(domain=contact_email_domain)