DMARC tools: structured data, OG cards, checker correctness#71
Merged
Conversation
Transient DNS errors no longer read as a missing record (was indistinguishable from NXDOMAIN); a probed TXT counts as DKIM only when it declares v=DKIM1 or p=.
Tool pages had no JSON-LD or social-card image and the blog JSON-LD pointed at 404 logo/og-default assets; services tool links were plain text, not anchors.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this does
Three focused commits: make the DMARC tools discoverable on Google, and fix two checker correctness bugs.
Correctness —
fix: harden DMARC checker DNS and DKIM checks_domainkeyTXT counts as DKIM only when it declaresv=DKIM1orp=, not on mere presence at the name.lib/dmarc-dns.tswith unit tests.Discoverability —
feat: structured data, OG cards, real tool linksWebApplication+BreadcrumbListJSON-LD on/tools/dmarc-checkand/tools/dmarc-report(freeoffers, no fabricated ratings).public/og-default.png) wired site-wide via the root layout and explicitly on the tool pages; also fixes the 404logo.png/og-default.pngthe blog JSON-LD referenced. Generated byscripts/gen-brand-assets.mjs(reuses the existingnext/ogdependency).<title>.Docs —
docs: log checker + OG metadata lessonsLESSONS.mdentries: the Next.jsopengraph-imageinheritance gotcha, and the DNS-vs-missing / DKIM-validation rules.Verification
Ran in a
node:20-alpinecontainer (no host Node on this machine):tsc --noEmit— cleanvitest run— 49 passed (4 new)npm run build— exit 0next start+ curl: both tool pages emitog:image,WebApplication,BreadcrumbList;/og-default.pngserves 200; checker title renders single-brand.Deferred (assessment follow-ups)
pct/spsop=reject; pct=0stops scoring "Strong."🤖 Generated with Claude Code