shotacure/DMARCReportAnalyzer
GitHub: shotacure/DMARCReportAnalyzer
一款完全离线的 Thunderbird 扩展,将埋藏在压缩附件中的 DMARC XML 报告转化为可视化威胁情报和策略优化建议。
Stars: 0 | Forks: 0
# DMARC 报告分析器
**你的 DMARC 报告正在告诉你一些事情。这个附加组件帮助你倾听。**
## 为什么开发这个工具
你设置了 DMARC,配置了 SPF,轮换了 DKIM 密钥。然后呢?
每天,ISP 会向你发送埋藏在 ZIP 和 GZ 附件中的 XML 报告。它们包含了关于你邮件认证的基本事实——哪些 IP 正在以你的域名发送邮件,它们是通过还是失败,以及接收服务器对此做了什么。但是没人会去读原始的 XML。报告堆积如山。威胁被忽视。配置错误持续存在。
**DMARC 报告分析器将这些报告转化为可操作的洞察——完全在 Thunderbird 内部,完全离线,零数据离开你的机器。**
这不是一个想要你的 DNS 凭证的 SaaS 仪表板。这是一个面向拥有自己的基础设施并希望准确了解其域名状况的工程师的本地工具。
## 你可以做什么
### 了解真实情况
- 每个域名的 **8 项统计摘要**:邮件总数、已投递(认证通过)、已投递(认证失败)、已隔离、已拒绝、DKIM+SPF 通过、DKIM 通过、SPF 通过
- **饼图**:域名分布、处置细分(4 类)、报告者分布
- **时间序列**:随时间变化的处置趋势,支持自动周期聚合(每日/每周/每月)
- **周期对比**:每个统计卡片上的上一周期与当前周期变化指示器(↑↓→)
### 识别威胁
- **IP 范围分类**:根据 DMARC 认证(DKIM 或 SPF 通过)自动标记每个来源 IP 范围:
- ✅ **合法** — 曾经通过 DMARC 认证。持有 DKIM 私钥证明这是经授权的发送者。
- 🛡️ **已拦截** — 从未通过认证,全部被拒绝。攻击者正被你的策略阻止。
- 🔴 **威胁(未拦截)** — 从未通过认证,但已被投递。有人正在伪造你的域名并成功送达。
- **自适应 IP 聚合**:当多个 /24 共享同一个 /16 时自动合并 IP 范围
- **信封对齐**:检测 Header From / Envelope From 不匹配 —— 区分第三方发送者和伪造
- **子域名分析**:追踪每个子域名的认证状态
### 深度分析
- **DKIM 签名分析**:签名域名、选择器、第三方签名检测
- **SPF 域名分析**:认证域名、mfrom/helo 范围追踪及 helo-only 警告
- **策略建议**:针对 p=none → reject 迁移的逐域名建议、adkim strict、pct=100、对齐不匹配说明
- **策略覆盖详情**:覆盖原因及相关 IP 范围和转发器检测
### 了解你的域名健康状况
- 带原因的 **健康徽章**:✅ 健康 / 🛡️ 受到攻击 / ⚠️ 需要关注 / 🔴 有风险 —— 每个徽章显示其分类的具体原因
- **对齐不匹配信息**:SPF/DKIM 对齐不匹配会在徽章旁注明,但不会影响健康状态
- **已投递(认证失败)**:最关键的指标 —— DKIM 和 SPF 均未通过但仍被投递的邮件
### 运营情报
- **取证报告交叉引用**:按域名分组的取证报告,并链接到聚合 IP 数据
- **CSV 导出**:导出所有 IP 范围统计信息和取证报告,用于事件报告
- **结果缓存**:扫描结果在标签页重新打开后依然保留
## 功能列表
- **完整标签页仪表板** —— 在专用的 Thunderbird 标签页中打开
- **可折叠域名区域** —— 无需滚动即可管理多个域名
- **自动文件夹检测** —— 根据命名约定查找 DMARC 报告文件夹
- **ISP 兼容性** —— 处理 gzip 优先检测、Microsoft XML 拼写错误、零记录报告
- **周期对比** —— 上一周期与当前周期的变化检测
- **DKIM/SPF/信封深度分析** —— 完整的认证链可见性
- **子域名追踪** —— 每个子域名的认证状态
- **策略覆盖详情** —— 带有 IP 范围归因的覆盖原因
- **取证交叉引用** —— 取证报告链接到域名区域
- **CSV 导出** —— 用于合规的 IP 范围 + 取证数据
- **扫描周期选择** —— 1 周 / 1 个月 / 3 个月 / 6 个月 / 1 年 / 所有时间
- **深色模式** —— 跟随系统偏好的完整深色模式
- **i18n** —— 12 种语言:英语、日语、德语、法语、西班牙语、意大利语、韩语、中文(简体/繁体)、葡萄牙语 (BR)、俄语、阿拉伯语
- **隐私优先** —— 零网络请求。一切数据都保留在你的机器上。
## 前置条件
### DNS 配置
```
_dmarc.example.com. 300 IN TXT "v=DMARC1; p=reject; sp=reject; pct=100; adkim=s; aspf=s; fo=1; rua=mailto:dmarc-rua@example.com; ruf=mailto:dmarc-ruf@example.com"
```
### 邮件文件夹设置
```
DMARC/
├── Aggregate ← rua reports (auto-detected)
└── Forensic ← ruf reports (auto-detected)
```
根据 `To:` 地址使用邮件过滤器路由报告。
## 安装
1. `npm install` 或手动将 `jszip.min.js` 和 `pako.min.js` 放入 `lib/`
2. 构建:`./build.sh` (Linux/macOS) 或 `pwsh build.ps1` (Windows)
3. 在 Thunderbird 中安装:工具 → 附加组件 → 从文件安装附加组件
## 架构
```
manifest.json Extension manifest (manifest_version 2)
background.js Tab management, message scanning, decompression pipeline,
folder auto-detection, result caching, period filtering,
previous-period comparison, forensic domain grouping
parser/
├─ ar_parser.js RFC 7489 aggregate report parser with validation,
│ IP range aggregation (adaptive /16 merging),
│ deliveredPass/Fail classification, DKIM signature analysis,
│ SPF domain analysis, envelope alignment detection,
│ subdomain tracking, override detail attribution
└─ fr_parser.js RFC 6591 forensic report parser with validation
dashboard/
├─ dashboard.html Full-tab dashboard UI with export button
├─ dashboard.css CSS variables, dark mode, 8-column grid, IP/health tags,
│ collapsible sections, pie/line charts, advice boxes
└─ dashboard.js Rendering logic — all analysis views, period comparison,
│ CSV export, warning translation
options/
├─ options.html Settings page
└─ options.js Folder selection & persistence
lib/
├─ jszip.min.js ZIP decompression (user-provided)
└─ pako.min.js GZIP decompression (user-provided)
_locales/
├─ ar/ de/ en/ es/ fr/ it/ ja/ ko/ pt_BR/ ru/ zh_CN/ zh_TW/
└─ (131 keys per locale, 12 languages)
```
### 处理管道
```
Period Filter (current + previous) → Auto-Detect Folders → Message Scan
→ Attachment Extraction → Decompress (GZ-first/ZIP) → XML Sanitize
→ Parse → Validate → Deduplicate → Current/Previous Period Split
→ DeliveredPass/Fail → IP Classification (adaptive merging)
→ DKIM Signature Aggregation → SPF Domain Aggregation → Envelope Alignment
→ Subdomain Detection → Override Detail Attribution → Forensic Cross-Reference
→ Domain Health Scoring → Policy Advice → Period Comparison → Cache → Render
```
## 许可证
[GNU General Public License v3.0](LICENSE)
Copyright (C) 2025 Shota (SHOWTIME)
标签:DKIM, DMARC, Mutation, Rua, Ruf, SPF, Thunderbird 插件, XML 解析, 代码示例, 反钓鱼, 可视化, 域名保护, 数据分析, 数据可视化, 本地处理, 电子邮件合规, 离线工具, 网络安全, 网络安全, 自定义脚本, 调试辅助, 邮件安全, 邮件认证, 隐私保护, 隐私保护