Skip to content

Add per-account dns_resolvers and skip_authoritative_ns_check#31

Open
abic wants to merge 1 commit into
PlayEveryWare:mainfrom
abic:per-account-dns-resolvers
Open

Add per-account dns_resolvers and skip_authoritative_ns_check#31
abic wants to merge 1 commit into
PlayEveryWare:mainfrom
abic:per-account-dns-resolvers

Conversation

@abic
Copy link
Copy Markdown

@abic abic commented May 12, 2026

In split-horizon DNS setups, lego's authoritative-SOA walk can stop at an internal subdomain that isn't a zone in the configured DNS provider, producing "zone could not be found" errors during DNS-01 validation.

Expose two existing lego challenge options through the account API so each account can opt in independently:

  • dns_resolvers: passed to dns01.AddRecursiveNameservers, overriding the host's resolver for SOA and propagation lookups.
  • skip_authoritative_ns_check: appends dns01.DisableAuthoritativeNssPropagationRequirement(), skipping the authoritative-NS propagation gate.

Both default to the previous behavior; accounts written before this change deserialize with zero values and continue to work unchanged. The dnsResolvers and skipAuthoritativeNSCheck fields already existed on the backend struct but were never populated outside of tests; they are preserved as a test-only path and are now overridden per-account when account-level values are set.

In split-horizon DNS setups, lego's authoritative-SOA walk can stop at
an internal subdomain that isn't a zone in the configured DNS provider,
producing "zone could not be found" errors during DNS-01 validation.

Expose two existing lego challenge options through the account API so
each account can opt in independently:

- dns_resolvers: passed to dns01.AddRecursiveNameservers, overriding
  the host's resolver for SOA and propagation lookups.
- skip_authoritative_ns_check: appends
  dns01.DisableAuthoritativeNssPropagationRequirement(), skipping the
  authoritative-NS propagation gate.

Both default to the previous behavior; accounts written before this
change deserialize with zero values and continue to work unchanged.
The dnsResolvers and skipAuthoritativeNSCheck fields already existed
on the backend struct but were never populated outside of tests; they
are preserved as a test-only path and are now overridden per-account
when account-level values are set.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant