Changelog

Full history of updates, fixes, and new features — most recent first.

v1.3.0 April 2026 Security current
Security hardening & penetration testing
Security fixes
SECXSS via crafted XML — org name, domain, email and report ID from DMARC XML are now HTML-escaped with a dedicated esc() helper before any DOM insertion. A malicious report file could previously execute JavaScript in the browser.
SECSSRF in iplookup.php — removed CURLOPT_FOLLOWLOCATION and added a strict URL allowlist. PHP curl calls are now restricted to ip-api.com and ipinfo.io only, preventing server-side redirect to internal addresses.
SECDoS via recursive SPF includes — the SPF parser now hard-limits recursion to 4 levels and 20 total DNS calls, preventing a crafted domain from exhausting server resources.
SECRate limiting — all three PHP endpoints now enforce per-IP rate limits (30–60 req/min) via APCu, with HTTP 429 responses on excess.
SECDomain format validation — stricter hostname regex now rejects double-dot labels (example..com), leading hyphens, and other malformed inputs. Private/reserved hostnames (localhost, .local, .internal) are explicitly blocked.
SECSecurity headers — added X-Content-Type-Options: nosniff, X-Frame-Options: DENY, and Content-Security-Policy to all PHP endpoints and HTML pages.
SECTab hijacking — all target="_blank" links now include rel="noopener noreferrer".
SECDKIM tag sanitisation — DNS-derived DKIM tag values are now sanitised before inclusion in JSON output. json_encode() called with JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT flags.
New files
NEWnginx-security.conf — ready-to-use nginx snippet with HSTS, full CSP, PHP file whitelist, and rate limiting zones.
NEW.htaccess — Apache/cPanel equivalent with security headers, PHP file whitelist, and hidden file blocking.
NEWSECURITY.md — deployment security checklist, SRI hash generation instructions, pentest summary table, and data privacy notes.
NEWchangelog.html — this page. Separate file for easy maintenance without touching application code.
v1.2.0 April 2026 Major
Multi-page architecture, DNS tools & client report
New pages
NEWDNS Tools page (tools.html) — live SPF record checker parses all mechanisms, expands include: chains, counts DNS lookups against the 10-lookup limit, and flags issues. DKIM selector checker looks up keys, shows type, bit-length, revocation status, and testing mode flag.
NEWClient Report page (client.html) — generates a clean non-technical summary with pass rate gauge, plain-English status, sender list, and auto-generated action items. Supports optional client name, technician notes, and Print / Save as PDF.
Report Viewer enhancements
NEWActions column in sources table — per-row quick links to SPF check, DKIM check (selector pre-filled), AbuseIPDB reputation lookup, and WHOIS. DNS Tools page opens with domain and selector pre-populated.
NEWPass rate trend chart — automatically appears when two or more reports are loaded, showing pass rate over time using Chart.js.
NEWTechnician notes — freeform text area per report, auto-saved to browser localStorage keyed by report ID. Persists across sessions.
NEWCSV export — downloads all source rows including sender label, diagnosis text, auth detail, and override reasons.
NEWPrint / Save as PDF — clean A4 landscape print stylesheet hides all UI chrome, preserves colour coding, and adds a formatted report header.
NEWNavigation bar — links all three pages with active state indicator.
Server-side
NEWspf-lookup.php — server-side SPF DNS resolver with recursive include expansion.
NEWdkim-lookup.php — server-side DKIM selector lookup with key strength estimation.
v1.1.0 April 2026 Minor
IP lookup, sender recognition & tech diagnostics
IP lookup
NEWiplookup.php proxy — server-side IP lookup avoids browser CORS restrictions. Queries ip-api.com with ipinfo.io fallback.
NEWKnown sender database — built-in recognition of Google Workspace, Microsoft 365, Amazon SES, SendGrid, Mailchimp/Mandrill, Mailgun, Postmark, Cloudflare, and Tor exit nodes. Resolves instantly without a network call.
NEWSender badge displayed under each source IP — colour-coded green (known ESP), blue (cloud/CDN), red (suspicious), grey (live lookup).
FIXZIP file support — added JSZip library. Reports delivered as .zip containing .xml or .xml.gz now load correctly. Previous version threw an error for all ZIP files.
Diagnostic detail
NEWPlain-English diagnosis per source row — distinguishes DKIM signature failure, DKIM alignment mismatch, SPF fail, SPF alignment mismatch, SPF softfail, temperror, permerror, and missing records.
NEWAlert cards — failing and partial-pass sources surfaced above the table in red/amber cards with full detail so techs don't have to scan rows.
NEWPolicy override reasonsreason elements (forwarding, mailing list, local policy) shown as purple tags.
NEWGranular auth result codessoftfail, temperror, permerror, neutral shown with distinct pill colours rather than collapsed to pass/fail.
NEWDKIM selector displayed — full d= domain and s= selector shown in auth detail column.
NEWEnvelope-from shown separately — only displayed when it differs from header-from, the key indicator of SPF alignment failures.
UI
NEW"How to read this report" panel — collapsible info panel explaining report flow (receiver → domain owner), key field definitions, and DKIM vs SPF alignment distinction.
NEWRow status indicators — green/amber/red dot per row for instant visual triage.
NEWSender legend — colour key above the sources table explaining badge colours.
NEWMulti-report tabs — load multiple files and switch between them with a tab bar.
v1.0.0 April 2026 Major
Initial release — core report viewer
NEWDMARC XML report parser — reads and parses DMARC aggregate report XML in the browser, fully client-side.
NEWFile input — drag-and-drop or browse for .xml and .xml.gz (gzip) report files, plus paste raw XML directly.
NEWSummary statistics — total messages, passed, failed, and pass rate with colour-coded health status.
NEWPolicy published section — displays p=, sp=, DKIM/SPF alignment mode, pct=, and reporting organisation.
NEWSource table — per-IP breakdown of DKIM aligned, SPF aligned, disposition, header-from, envelope-from, and raw auth results.
NEWDark theme UI — IBM Plex Sans / IBM Plex Mono typography, fully responsive layout.
NEWPrivacy-first — no data transmitted, no analytics, no accounts. Entire viewer runs in the browser.