{"id":51191376,"url":"https://github.com/ajxv/dmarc-tui","last_synced_at":"2026-06-27T15:30:53.659Z","repository":{"id":366190269,"uuid":"1274626367","full_name":"ajxv/dmarc-tui","owner":"ajxv","description":"A terminal UI for browsing and making sense of DMARC aggregate reports.","archived":false,"fork":false,"pushed_at":"2026-06-20T16:20:19.000Z","size":946,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-20T18:13:57.566Z","etag":null,"topics":["dmarc","dmarc-analyzer","dmarc-parser","dmarc-tui","golang","tui"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ajxv.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-19T18:01:50.000Z","updated_at":"2026-06-20T16:20:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ajxv/dmarc-tui","commit_stats":null,"previous_names":["ajxv/dmarc-tui"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ajxv/dmarc-tui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajxv%2Fdmarc-tui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajxv%2Fdmarc-tui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajxv%2Fdmarc-tui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajxv%2Fdmarc-tui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ajxv","download_url":"https://codeload.github.com/ajxv/dmarc-tui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajxv%2Fdmarc-tui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34859072,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-27T02:00:06.362Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dmarc","dmarc-analyzer","dmarc-parser","dmarc-tui","golang","tui"],"created_at":"2026-06-27T15:30:53.072Z","updated_at":"2026-06-27T15:30:53.654Z","avatar_url":"https://github.com/ajxv.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dmarc-tui\n\nA terminal UI for browsing and making sense of DMARC aggregate reports\n(the XML files mailbox providers send to your `rua=` address).\n\nPoint it at a report — or a folder of them — and get a navigable,\ncolor-coded view of every record: who sent mail as your domain, whether\nDKIM/SPF authenticated *and* aligned, what your policy did about it, and\nwhy. A built-in glossary (press `?`) explains the vocabulary inline, so\nyou don't need DMARC memorized to read your own reports.\n\n![dmarc-tui demo](docs/demo.gif)\n\n## Install\n\n**Quick install (Linux / macOS)** — downloads the right binary for your\nplatform from the latest release and puts it on your `PATH`\n(`~/.local/bin` if writable, otherwise `/usr/local/bin`):\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/ajxv/dmarc-tui/main/install.sh | sh\n```\n\nRun `install.sh --help` (or pipe `-s -- --help`) to see options like\n`--version \u003ctag\u003e` and `--to \u003cdir\u003e`. You can also download the script\nfirst and read it before running it, which is always a good idea for\nanything piped into a shell:\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/ajxv/dmarc-tui/main/install.sh -o install.sh\nless install.sh        # read it\nsh install.sh\n```\n\n**Download a prebuilt binary manually** from the [releases page](https://github.com/ajxv/dmarc-tui/releases) —\narchives are published for Linux, macOS, and Windows (amd64 and arm64)\non every tagged release.\n\n**Or build from source** (requires [Go](https://go.dev) 1.25+):\n\n```sh\ngo install github.com/ajxv/dmarc-tui@latest\n```\n\n```sh\ngit clone https://github.com/ajxv/dmarc-tui.git\ncd dmarc-tui\ngo build -o dmarc-tui .\n```\n\n## Usage\n\n```sh\ndmarc-tui \u003cfile.xml\u003e [file2.xml …]   # one or more reports\ndmarc-tui \u003cdirectory\u003e                # every *.xml in a directory\n```\n\nReports are typically delivered as `.xml`, `.xml.gz`, or `.zip`\nattachments by your mail provider — extract them to plain `.xml` first.\n\n### Try it without your own data\n\nA fully synthetic sample report ships in [sample-data/sample-report.xml](sample-data/sample-report.xml) —\nevery domain, IP, and org name in it is fictional (drawn from IANA's\nreserved documentation ranges), so it's safe to poke at without\nexposing real mail data:\n\n```sh\ndmarc-tui sample-data/sample-report.xml\n```\n\n## Keybindings\n\n**Report list**\n\n| Key | Action |\n|-----|--------|\n| `↑`/`k`, `↓`/`j` | Move the cursor |\n| `g` / `G` | Jump to top / bottom |\n| `enter` | Inspect the selected record |\n| `/` | Search by source IP, authenticated domain, or From: address |\n| `f` | Cycle the pass/fail filter |\n| `s` | Cycle the sort order (volume / source IP) |\n| `[`/`←`, `]`/`→` | Switch to the previous / next report file |\n| `?` | Open the help \u0026 glossary screen |\n| `q` | Quit |\n\n**Record detail**\n\n| Key | Action |\n|-----|--------|\n| `tab`, `←` / `→` | Cycle between tabs (forward / backward, wraps around) |\n| `1`–`5` | Jump directly to a tab |\n| `↑`/`k`, `↓`/`j` | Move to the previous / next record (without leaving detail view) |\n| `pgup` / `pgdn` | Scroll the tab content |\n| `?` | Open the help \u0026 glossary screen |\n| `esc` / `q` | Back to the report list |\n\n**Detail tabs**\n\n| # | Tab | What it shows |\n|---|-----|---------------|\n| 1 | Evaluation | DMARC verdict, DKIM/SPF aligned results, disposition, classification |\n| 2 | Identifiers | Header From, Envelope From / HELO domain, DKIM signing domain |\n| 3 | Policy | Published DMARC policy (`p`, `sp`, `adkim`, `aspf`, `pct`) |\n| 4 | Raw XML | The original record as indented XML |\n| 5 | IPInfo | Live lookup from [ipinfo.io](https://ipinfo.io): hostname, location, ASN/org, timezone. Set `IPINFO_TOKEN` for a higher rate limit. |\n\nThe help screen (`?`) works as an overlay from anywhere — it explains\nwhat \"aligned\" means, how to read the pass / review / fail\nclassification, and what each disposition (none / quarantine / reject)\nmeans, then returns you to exactly where you were.\n\n## Documentation\n\n- [docs/glossary.md](docs/glossary.md) — DMARC concepts and how dmarc-tui presents them\n- [docs/keybindings.md](docs/keybindings.md) — full keybinding reference\n\n## Building\n\n```sh\ngo build -o dmarc-tui .\n```\n\nCross-platform release archives are attached automatically by\n[.github/workflows/release.yml](.github/workflows/release.yml) whenever\na `vX.Y.Z` release is published on GitHub (Releases → Draft a new\nrelease → tag `vX.Y.Z` → Publish).\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fajxv%2Fdmarc-tui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fajxv%2Fdmarc-tui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fajxv%2Fdmarc-tui/lists"}