ajd3000/dmarc-analyzer

GitHub: ajd3000/dmarc-analyzer

一个本地DMARC聚合报告分析工具,用于快速识别邮件认证失败的高风险记录。

Stars: 0 | Forks: 0

# DMARC 聚合扫描器 一个**仅限本地**的小工具:上传 DMARC **聚合**报告(包含 `.xml` / `.xml.gz` 文件的 ZIP 压缩包,或原始 XML),查看高价值记录行(处置策略不是 `none`,DKIM 和 SPF 双重失败,可选的仅 DKIM / SPF 对齐噪音)。**除了通过浏览器可选下载的 JSON 文件外,不会向磁盘写入任何内容。** ## 系统要求 - **Python 3.11+** - Windows、macOS 或 Linux ## 运行 (开发模式) 在此目录 (`dmarc-analyzer/`) 下: ``` python -m pip install -r requirements.txt python -m dmarc_analyzer ``` 在 **Windows** 上,如果 `python` 命令缺失或打开了 Microsoft Store 的安装引导程序,请改用 **Python 启动器**(命令相同,只需更换前缀): ``` py -3 -m pip install -r requirements.txt py -3 -m dmarc_analyzer ``` 在浏览器中打开 **http://127.0.0.1:8765**。 选项: ``` python -m dmarc_analyzer --port 9000 python -m dmarc_analyzer --host 127.0.0.1 --port 8765 ``` Windows (`py -3`): ``` py -3 -m dmarc_analyzer --port 9000 py -3 -m dmarc_analyzer --host 127.0.0.1 --port 8765 ``` 请**勿**在不受信任的网络上暴露 `--host 0.0.0.0`;上传内容可能包含敏感信息。 ### 可编辑安装 (可选) ``` python -m pip install -e . dmarc-analyzer --port 8765 ``` Windows (`py -3`): ``` py -3 -m pip install -e . py -3 -m dmarc_analyzer --port 8765 ``` ## 限制 (压缩包炸弹 / 巨大邮件流) 可在 `dmarc_analyzer/parse.py` 和 `dmarc_analyzer/server.py` 中配置: | 限制项 | 默认值 | |--------|---------| | 单文件最大上传大小 | 25 MiB | | 单个压缩文件成员解压后 XML 最大大小 | 50 MiB | | 单个 XML 最大解析记录数 | 20,000 | | 单次请求中所有上传文件的最大总行数 | 100,000 | | 返回给浏览器 JSON 的最大行数 | 15,000 | 如果达到上限,请拆分上传文件或在本地提高相关常量值。 ## PyInstaller (可选 “单文件夹” 应用) PyInstaller **不支持**交叉编译:需要在每个目标操作系统上构建。 1. 安装依赖项 + PyInstaller:`python -m pip install -r requirements.txt pyinstaller` (Windows: `py -3 -m pip install -r requirements.txt pyinstaller`) 2. 在 `dmarc-analyzer/` 目录下: ``` pyinstaller --name dmarc-analyzer ^ --onedir ^ --add-data "static;static" ^ --collect-all uvicorn ^ dmarc_analyzer/server.py ``` 在 macOS/Linux 上使用 `--add-data "static:static"`。 3. 运行生成的可执行文件;它默认仍然绑定到 **127.0.0.1**。 **注意:** `uvicorn.run("dmarc_analyzer.server:app", ...)` 需要 `dmarc_analyzer` 包在 `PYTHONPATH` 中。对于 PyInstaller,推荐使用一个小型的**启动入口脚本**,该脚本从 `dmarc_analyzer.server` 导入 `app` 并调用 `uvicorn.run(app, ...)`,这样可以更干净地将您的包包含在打包文件中。如果控制台显示导入错误,请调整隐藏导入设置。 ## 它的功能 / 不支持的功能 - **支持:** 聚合报告 (ZIP / `.xml.gz` / `.xml`),符合 RFC 的 `` XML。 - **不支持:** 取证失败报告 (`message/rfc822` 附件),没有保存状态的历史 “新 IP” 基线。 ## 界面行为 - 所有行都在服务器端**标记**了原因代码。 - 复选框用于筛选表格中显示的原因;勾选**“显示所有行”**将禁用原因过滤。 - **下载 JSON** 会将最后一次 API 响应(保存在页面内存中)保存为文件。 ### IP 组织 (RDAP) 列 - 可选复选框 **解析 IP 组织 (RDAP)** (默认:开启)。当您只关心认证列时,取消勾选可以加快运行速度。 - **IP 组织**列是基于 **RDAP**(注册数据)通过 **`ipwhois`** 构建的,其理念类似于 WHOIS 中的 “组织 + 网络句柄” 信息行 —— **不是**实时的 `nslookup` PTR 记录。 - 需要运行应用的机器具备**出站互联网**连接(用于查询 RIR / RDAP 服务)。 - 每个请求中按 `source_ip` 进行**去重**。最多查询 **300** 个唯一的**公共** IP;额外的唯一 IP 将显示 **`(RDAP 查询上限)`**。大型报告在首次分析时可能需要**几分钟**时间。RDAP 注册机构有时会对突发请求进行**速率限制**;应用采用**分块并行批次**(而不是一个单一的大 `as_completed` 超时,那样会导致运行中途中止)、**针对每个 IP 的重试**,以及对第一次批处理后仍返回 **“-”** 的 IP 进行**第二次顺序查询**的策略。
标签:DKIM验证, DMARC分析, DNS枚举, SPF验证, XML解析, ZIP文件处理, 上传工具, 反钓鱼, 域名报告分析, 域名认证, 报告扫描, 数据解析, 本地应用程序, 浏览器界面, 电子邮件安全, 网络安全工具, 逆向工具, 邮件防欺骗, 高信号行识别