Skip to content

Parse Dmarc

DMARC aggregate report parser with a built-in dashboard. One Go binary, IMAP in, SQLite, Prometheus metrics, MCP server. Apache-2.0.

Install

$brew install dmarcguardhq/tap/parse-dmarc

Install command taken from the project's README or registry entry. Always review code before running it.

Parse DMARC

Read your DMARC aggregate reports in one dashboard. One Go binary, SQLite, no Elasticsearch.

Parse DMARC is built and maintained by the team behind DMARCguard, a hosted DMARC monitoring service. The two do not share code, and this repository stays Apache-2.0 in full.

What it does

When your DMARC record carries a rua= address, mail receivers such as Google, Microsoft and Yahoo send you aggregate reports: gzip or zip XML attachments, at the interval your record asks for and daily by default, listing every IP that sent mail as your domain and whether SPF and DKIM passed (RFC 7489 section 7.2, carried forward by RFC 9990). Nobody reads those by hand. Parse DMARC does:

  • Fetches reports over IMAP from any mailbox, or from a local Maildir when the mail server is on the same host (MAILDIR_PATH, see Configuration). Reports that Exchange or Outlook forward as message/rfc822 attachments are unwrapped too.
  • Parses gzip, zip and raw XML, with a 16 MB decompression cap per report.
  • Stores everything in one SQLite file. No database server, no JVM.
  • Shows pass rate, message volume and top sending sources, and opens any report down to its raw records.
  • Generates your _dmarc TXT record from a form.
  • Exposes 28 Prometheus metrics and ships a Grafana dashboard.
  • Serves an MCP server, so an AI assistant can query your reports.
  • Dark mode. One static binary. The Docker image is built FROM scratch.

It reads aggregate (RUA) reports only. Failure reports (RUF), TLS-RPT, alerting, login and multi-mailbox intake are not built; see Roadmap and contributing.

Run it

Docker, with a named volume for the database:

docker run -d --name parse-dmarc -p 8080:8080 \
  -e IMAP_HOST=imap.gmail.com \
  -e IMAP_PORT=993 \
  -e IMAP_USERNAME=dmarc@example.com \
  -e IMAP_PASSWORD='your-app-password' \
  -v parse-dmarc:/data \
  dmarcguard/parse-dmarc

Homebrew on macOS or Linux:

brew install dmarcguardhq/tap/parse-dmarc
parse-dmarc --gen-config          # writes a config.json template
parse-dmarc --config config.json

Nix, from our NUR-style repo:

nix profile install github:dmarcguardhq/nur#parse-dmarc   # or: nix run github:dmarcguardhq/nur#parse-dmarc

Or download a release archive, parse-dmarc_<os>_.tar.gz, from the releases page.

Open http://localhost:8080. Gmail needs an App Password, not the account password. The same image is on Docker Hub as meysam81/parse-dmarc; both names track the same builds, and tags such as v1 or v1.6.0 pin a release.

Get reports flowing

Similar plugs

Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

Java 面试 & 后端通用面试指南,覆盖计算机基础、数据库、分布式、高并发、系统设计与 AI 应用开发

Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface

An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here…

Open-source web crawler and scraper for LLMs and AI agents: any website into clean, LLM-ready Markdown. Run it yourself, or use Crawl4AI Cloud with one key.