DNSMentor

The catalogue

Every check, by name.

No vendor publishes this list, which has always seemed odd — it is the only part of a validation claim you can actually check. Here is ours, generated from the code that implements it.

27 errors
Blocks the apply. Nobody can override it, at any skill level.
25 warnings
Must be read and accepted by name, and the acceptance is recorded.
4 infos
Noted on the change and in the write-up. Does not interrupt.

56 checks

  1. a-record-must-be-ipv4 error

    An A record's value must be a dotted-quad IPv4 address.

    Syntax A
  2. aaaa-record-must-be-ipv6 error

    An AAAA record's value must be an IPv6 address.

    Syntax AAAA
  3. address-includes-cidr-or-port error

    Catches an address pasted with a prefix length or port still attached, which is a very common copy-and-paste error from firewall and hosting consoles.

    Address hygiene A · AAAA
  4. apex-must-resolve warning

    Warns when the apex would be left with no address record at all.

    Zone structure
  5. caa-blocks-issuance warning

    Warns when a CAA set would block the CA the customer actually uses.

    Service records CAA
  6. caa-record-format error

    Validates CAA tag, flags and value per RFC 8659.

    Service records CAA
  7. cname-chain warning

    Flags a CNAME whose target is another CNAME in the same zone.

    Zone structure CNAME
  8. cname-must-not-coexist error

    A CNAME cannot coexist with any other record at the same name (RFC 1034 §3.6.2).

    Zone structure
  9. cname-must-not-point-to-itself error

    A CNAME pointing at its own name creates a resolution loop.

    Address hygiene CNAME · ALIAS
  10. cname-not-at-apex error

    A CNAME cannot sit at the zone apex, because the apex must carry SOA and NS records.

    Zone structure CNAME
  11. cname-target-must-be-hostname error

    A CNAME target must be a hostname, never an IP address.

    Syntax CNAME · ALIAS
  12. create-over-existing-name warning

    Points out that a name being created already exists with a different value, which usually means the engineer meant to edit rather than add.

    Service records
  13. delegation-change warning

    Changing NS records at the apex moves authority for the entire zone, and every NS value has to be the name of a nameserver.

    Zone structure NS
  14. delegation-target-must-not-be-cname error

    NS and SRV targets must not be aliases, for the same reason as MX.

    Address hygiene NS · SRV
  15. delete-target-exists warning

    Warns when a delete targets a record that is not present in the zone.

    Syntax
  16. dkim-key-must-be-base64 error

    A DKIM public key must be valid base64, or verification fails silently.

    Address hygiene TXT
  17. dkim-record-format warning

    Checks DKIM records are published at a selector name and look like a key.

    Mail TXT · CNAME
  18. dmarc-enforcement-warning warning

    Warns before an enforcing DMARC policy is published without a monitoring period.

    Mail TXT
  19. dmarc-only-one-record error

    Only one DMARC record may exist at a name.

    Address hygiene TXT
  20. dmarc-record-format error

    A DMARC record must live at _dmarc and begin with the version token.

    Mail TXT
  21. duplicate-record warning

    Catches an identical record being created when one already exists.

    Zone structure NS
  22. ipv4-octet-leading-zero error

    Leading zeros in an IPv4 octet are ambiguous: some resolvers read them as octal.

    Address hygiene A
  23. lower-ttl-before-migration warning

    Reminds engineers to lower TTLs ahead of a migration rather than at the moment of cutover.

    TTL
  24. mail-transport-security-format warning

    Recognises MTA-STS and TLS-RPT records and checks their basic shape.

    Address hygiene TXT
  25. mail-without-spf warning

    Warns when a change would leave a mail-accepting domain with no SPF record.

    Mail MX
  26. mx-duplicate-priority info

    Warns when several MX records share a preference by accident.

    Mail MX
  27. mx-priority-embedded-in-value error

    Catches an MX priority typed into the value, which is the single most common MX mistake.

    Mail MX
  28. mx-priority-range error

    MX preference must fit in the 16-bit field defined by RFC 1035.

    Mail MX
  29. mx-removal-stops-mail warning

    Warns loudly when the last MX record for a domain is being removed.

    Mail MX
  30. mx-requires-manual-verification warning

    Every MX value gets a human check. The brief mandates this and it is not configurable off.

    Mail MX
  31. mx-target-must-not-be-cname warning

    An MX target that is itself a CNAME is explicitly disallowed by RFC 2181.

    Mail MX
  32. mx-target-must-not-be-ip error

    An MX target must be a hostname: not an IP address, and not a malformed name either.

    Mail MX
  33. null-mx-usage error

    Recognises the RFC 7505 "null MX" and checks it is used correctly.

    Address hygiene MX
  34. orphaned-reference warning

    Warns when a change silently orphans records that pointed at what is being removed.

    Zone structure
  35. private-address-in-public-zone warning

    Catches a public DNS record pointing at a private address — an MSP classic, usually caused by copying an internal address out of a firewall or hypervisor console.

    Address hygiene A · AAAA
  36. provider-supports-record-type error

    Rejects a change that uses a record type the target provider cannot store.

    Syntax
  37. ptr-target-must-be-hostname error

    A PTR target must be a hostname: not an IP address, and not a malformed name either.

    Syntax PTR
  38. record-name-should-be-relative error

    Catches a fully qualified record name that would be appended to the zone again.

    Syntax
  39. record-name-syntax error

    The record's own name must be a syntactically valid DNS name.

    Syntax
  40. record-value-required error

    Every create and update must carry a value.

    Syntax TXT
  41. rrset-ttl-must-match warning

    Every record in an RRset — same name, same type — must share a TTL (RFC 2181 §5.2).

    Address hygiene MX
  42. soa-manual-edit warning

    The SOA record is managed by the provider and should rarely be edited by hand.

    Zone structure SOA
  43. spf-all-mechanism warning

    Flags an SPF record with no all mechanism, or one that authorises everything.

    Mail TXT
  44. spf-lookup-limit warning

    SPF permits at most ten DNS-querying mechanisms; exceeding it fails the whole record.

    Mail TXT
  45. spf-must-start-with-version error

    An SPF record must begin with the version token.

    Mail TXT
  46. spf-ptr-mechanism-deprecated warning

    The ptr mechanism is deprecated and slow; RFC 7208 advises against using it.

    Mail TXT
  47. spf-single-record error

    A domain must publish at most one SPF record.

    Mail TXT
  48. spf-terms-after-all-ignored warning

    Anything after the SPF all mechanism is silently ignored.

    Address hygiene TXT
  49. srv-record-format error

    Validates SRV naming and its numeric fields per RFC 2782.

    Service records SRV
  50. trailing-dot-in-value info

    Flags a value that arrives with a trailing dot. The platform stores targets unqualified and each adapter applies its own provider's convention, so a stray dot here usually means a copy-paste straight out of a zone file.

    Service records CNAME · MX · NS · SRV · PTR · ALIAS
  51. ttl-must-be-allowed-value error

    Some providers accept only a fixed list of TTL values — ClouDNS is one — so an ordinary value such as 600 is rejected outright.

    TTL
  52. ttl-within-provider-limits error

    Rejects a TTL the target provider will not accept, before the apply fails.

    TTL
  53. txt-string-length warning

    A TXT string longer than 255 characters must be split into multiple quoted strings.

    Syntax TXT
  54. txt-unescaped-quote warning

    TXT values containing unescaped quotes usually indicate a copy-paste problem.

    Address hygiene TXT
  55. very-low-ttl info

    Flags a very short TTL left in place after a migration.

    TTL
  56. wildcard-record info

    Flags a wildcard record, which is easy to create and easy to forget about.

    Syntax

Questions about the checks

What DNS validation checks does DNSMentor run?

DNSMentor runs 56 validation checks before any change is applied: 27 errors that block the change outright, 25 warnings that must be acknowledged by name, and 4 informational notes. They cover record syntax, address hygiene, zone structure, mail authentication (SPF, DKIM, DMARC), service records and TTL sanity.

Can DNS validation rules be overridden?

No error can be overridden, by anybody, at any skill level. Warnings can be accepted but must be read and acknowledged by name, and the acknowledgement is recorded in the audit trail against the person who gave it. One rule — manual verification of MX values — cannot be switched off under any configuration.

Why do checks run against the whole zone rather than the record being edited?

Because the most damaging DNS mistakes are records that are individually valid and only wrong in context. A second SPF record is a perfectly valid TXT record; what makes it fatal is the one already in the zone. DNSMentor evaluates the zone as it would exist after the change, which is the only way that class of fault can be caught.

Bring the zone you inherited.

The one nobody documented, at the client nobody wants to touch. Half an hour, and you will know what is in it.

No card. No trial clock. UK-hosted, and we will tell you which providers we have actually proven before you ask.

Last updated