KatrielMoses/MailAccess
GitHub: KatrielMoses/MailAccess
MailAccess 是一个开源的邮箱OSINT工具,用于调查电子邮件地址在泄露数据库和社交网络中的暴露风险,帮助识别安全威胁。
Stars: 107 | Forks: 12
███╗ ███╗ █████╗ ██╗██╗ █████╗ ██████╗ ██████╗███████╗███████╗███████╗
████╗ ████║██╔══██╗██║██║ ██╔══██╗██╔════╝██╔════╝██╔════╝██╔════╝██╔════╝
██╔████╔██║███████║██║██║ ███████║██║ ██║ █████╗ ███████╗███████╗
██║╚██╔╝██║██╔══██║██║██║ ██╔══██║██║ ██║ ██╔══╝ ╚════██║╚════██║
██║ ╚═╝ ██║██║ ██║██║███████╗██║ ██║╚██████╗╚██████╗███████╗███████║███████║
╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝╚══════╝╚══════╝╚══════╝
[](LICENSE)
[](https://www.python.org/)
[](docker-compose.yml)
[](https://pypi.org/project/mailaccess/)
[](https://pypi.org/project/mailaccess/)
可自托管的开源情报(OSINT)平台,用于调查电子邮件地址。涵盖泄露数据库、社交网络、DNS记录和开放网络搜索——返回统一的暴露评分和结构化调查结果,可供导出或输入到Maltego。
专为在授权下工作的安全研究员、OSINT分析师和渗透测试人员打造。使用前请阅读 [免责声明](DISCLAIMER.md)。
## 安装
### 仅CLI(无Docker)
```
pip install mailaccess
# am JSONL
mailaccess investigate you@example.com
# Filter critical findings
# 0.5.3
# 0.5.2
mailaccess serve # in one terminal
mailaccess investigate you@example.com # in another
# 0.5.1
git clone https://github.com/YOUR_USERNAME/mailaccess
docker compose up -d
```
## 快速开始
```
mailaccess investigate you@example.com
mailaccess investigate you@example.com -o report.pdf
mailaccess investigate you@example.com --format jsonl
mailaccess investigate - # read email from stdin
mailaccess serve # start backend server on :8000
mailaccess keys list
mailaccess keys set HIBP_API_KEY your-key-here
mailaccess modules
mailaccess doctor # coming soon
# 0.5.0
mailaccess investigate email -m breach_deep
mailaccess investigate email -m all
```

## 功能概述
- **身份图谱** — 跨平台关联每次调查中的账户、用户名和信号
- **手机号码恢复** — 发现并验证与目标关联的号码的流程
- **Telegram / WhatsApp 线索** — 在其它模块之外进行轻量级的即时通讯应用足迹检查
- **YAML驱动的平台系统** — 在 `backend/platforms/` 中定义社交类检查;社区可扩展,无需为每个网站编写新的Python代码
- **深度泄露模式** — 检查前100个严重性最高的泄露站点是否存在账户
- **历史情报** — Wayback Machine 归档搜索 + GitHub 提交者搜索
- **递归邮箱发现** — 通过姓名关联恢复同一人拥有的其他邮箱地址
- **凭据风险评分** — 单独的0-100凭据风险信号,分为 低 / 中 / 高 / 严重 等级,显示主要驱动因素和建议的后续步骤
- 并发模块执行 — 所有模块并行运行,结果流式返回
- WebSocket 流式传输 — 部分结果实时到达,无需轮询
- REST API + Web UI + CLI — 使用适合您工作流程的任何接口
- 插件模块系统 — 将 `.py` 文件放入 `backend/modules/` 即可自动注册;无需配置
- 6种导出格式:JSON、CSV、PDF、Markdown、STIX 2.1、Maltego XML
- Maltego 本地转换服务器 — 可直接从 Maltego 桌面应用运行调查
- Webhook 通知 — 支持 Slack、Discord 或任何 HTTP 端点
- 暴露评分(0–100)及风险标签:低 / 中 / 高 / 严重
- 默认使用 SQLite;通过 Docker Compose profile 可选 PostgreSQL
## 模块
| 模块 | 覆盖范围 | 需要密钥 | 可选启用 |
|--------|----------|--------------|--------|
| gravatar | 个人资料哈希查找 | 否 | 否 |
| hibp | 泄露检查 | 是 | 否 |
| breach_deep | 探测前100个严重性最高的泄露站点是否存在账户 | 否(HIBP语料库自动获取) | 是 |
| emailrep | 声誉 + 黑名单 | 否 | 否 |
| hudson_rock | 信息窃取器日志(免费) | 否 | 否 |
| google_dork | 5个自动化dork搜索 | 是(SerpAPI) | 否 |
| email_discovery | 通过姓名dork恢复同一人拥有的其他邮箱地址 | 是(SERPAPI_KEY) | 否 |
| domain_intel | 域名 + Shodan | 否(Shodan可选) | 否 |
| dns_lookup | MX/SPF/DMARC/DKIM/A/NS 记录提取 | 否 | 否 |
| whois_lookup | 域名WHOIS,隐私检测 | 否 | 否 |
| wayback | 通过 Wayback Machine CDX 查找邮箱公开出现过的历史页面 | 否 | 否 |
| github_commits | 查找使用此邮箱提交过的仓库,从git配置中提取真实姓名。提交搜索需要 GITHUB_TOKEN;用户资料搜索无需令牌。 | 否(GITHUB_TOKEN 可选,提交搜索需要) | 否 |
| xposedornot | 默认启用的直接邮箱到泄露语料库查询,提供泄露名称、数据类别和风险指标 | 否 | 否 |
| leakcheck | 默认启用的公开泄露语料库查询,覆盖区域广泛且具有信息窃取器路由功能 | 否 | 否 |
| ransomware_intel | 默认启用的域名受害者与勒索软件列表关联;跳过免费提供商 | 否 | 否 |
| social | 通过 YAML 覆盖13个平台 | 否 | 否 |
| social_links | 用户名提取,供情报枢轴查询 | 否 | 否 |
| account_discovery | Holehe 覆盖120+平台 | 否 | 是 |
| user_scanner | 205+平台向量 | 否 | 是 |
| whatsmyname | 700+平台 | 否 | 是 |
| breachdirectory | 第二泄露源 | 是 | 否 |
| username_pivot | 通过已恢复的用户名进行WMN查询 | 否 | 是 |
| permutation_discovery | 60种邮箱变体 | 否 | 是 |
| phone_intel | 手机号码验证 + WA/TG 线索 | 否 | 否 |
| messaging_hints | Telegram/WhatsApp 用户名检查 | 否 | 否 |
| ghunt | Gmail 深度情报 | 否(需要配置) | 是 |
| identity_graph | 跨平台集群分析 | 否 | 否(自动) |
## 身份图谱
每次调查都会生成一个跨平台的身份图谱,通过共享的用户名、照片、显示名称和泄露数据将账户关联起来。在以下地址查看:
`/investigation/:id/graph`
通过 `GET /api/report/{id}/graph` 导出为 D3 兼容的 JSON,或通过 `GET /api/report/{id}/clusters` 获取带有置信度评分的集群。
调查结果会自动分组为身份集群并进行置信度评分。在 CLI 输出中使用 `--show-collisions` 可展开低置信度匹配项。
## 历史情报
MailAccess 搜索 Wayback Machine CDX API,查找邮箱公开出现过的归档页面——包括已删除的博客文章、旧的论坛签名和被移除的联系页面。
通过作者邮箱搜索 GitHub 提交历史,揭示贡献过的仓库、git 配置中的真实姓名以及开发活动时间线。
## 深度泄露模式
通过 `ENABLE_BREACH_DEEP=true` 启用。
启动时获取完整的 HIBP 泄露语料库,按严重性(记录数 × 数据类别乘数)对站点进行排名,然后通过 YAML 探测和通用的重置流程推断,探测前100个严重性最高的站点是否存在账户。调查结果显示泄露名称、记录数、数据类别和严重性——为分析师提供概率性的凭据暴露估计。
示例输出:
```
⚠ adobe.com CRITICAL 153M records
[Passwords, Email, Password hints]
✓ dropbox.com HIGH 69M records
[Email, Passwords]
~222M records across 2 breaches potentially include this email's credentials
```
## 管道集成
MailAccess 友好支持管道集成:从 stdin 读取目标邮箱,流式输出 JSONL,并可在 CI/CD 脚本中根据退出码进行分支。
```
# 0.4.3
cat emails.txt | mailaccess investigate -
# 0.4.2
mailaccess investigate you@example.com --format jsonl | jq .
# 0.4.1
mailaccess investigate you@example.com --format jsonl | jq 'select(.severity=="critical")'
```
**退出码:** `0` 干净 · `1` 发现结果 · `2` 泄露 · `3` 错误
更多 GitHub Actions 示例请参见 [文档/集成](docs/integrations.md#pipeline-integration)。
## 添加平台
无需Python。将YAML文件放入 `backend/platforms/`:
```
cp backend/platforms/TEMPLATE.yaml backend/platforms/mysite.yaml
```
编辑字段,提交PR。
## 导出格式
| 格式 | `?format=` 值 | 用例 |
|--------|-----------------|----------|
| JSON | `json` | 程序化使用,存档 |
| CSV | `csv` | 电子表格分析 |
| PDF | `pdf` | 人类可读的报告 |
| Markdown | `markdown` | 维基,问题跟踪器 |
| STIX 2.1 | `stix` | 威胁情报平台 |
| Maltego XML | `maltego` | Maltego 图谱导入 |
## 集成
| 集成 | 方式 |
|-------------|-----|
| Maltego | 本地转换服务器,端点为 `POST /maltego/email_investigate`(无需API密钥) |
| Slack | 在 `.env` 中设置 `SLACK_WEBHOOK_URL` |
| Discord | 在 `.env` 中设置 `DISCORD_WEBHOOK_URL` |
| 通用webhook | `INTEGRATION_WEBHOOK_URL` + 可选的 `INTEGRATION_WEBHOOK_SECRET`(HMAC) |
## 自托管
```
cp .env.example .env # all API keys are optional
docker compose up # backend :8000 · frontend :3000
```
在浏览器中打开 **http://localhost:3000**。完整设置指南:[文档/自托管](docs/self-hosting.md)。
## CLI 参考
| 命令 | 描述 |
|---------|-------------|
| `mailaccess investigate ` | 对邮箱地址运行完整调查 |
| `mailaccess investigate -` | 从 stdin 读取目标邮箱 |
| `mailaccess serve` | 在 :8000 端口启动后端服务器 |
| `mailaccess history` | 列出历史调查 |
| `mailaccess keys list` | 显示所有已配置的 API 密钥 |
| `mailaccess keys set ` | 设置 API 密钥 |
| `mailaccess keys unset ` | 移除 API 密钥 |
| `mailaccess config set-url ` | 将 CLI 指向 MailAccess 实例 |
| `mailaccess modules` | 列出所有可用模块 |
| `mailaccess commands` | 列出所有 CLI 命令 |
| `mailaccess doctor` | 检查配置和模块健康状态 _(即将推出)_ |
| `mailaccess investigate -m` / `--enable` | 仅为本次运行启用可选模块。逗号分隔或 `all`。示例:`-m breach_deep,ghunt` |
`investigate` 命令上的 `--output` / `-o` 标志会将报告保存到文件。扩展名决定格式:`.json`, `.csv`, `.pdf`, `.md`, `.stix.json`, `.maltego.csv`。
当只提供裸文件名(无目录组件)时,文件会自动写入 `results/` 目录(例如 `-o report.json` → `results/report.json`)。该目录已被git忽略,因此调查输出永远不会被意外提交。包含目录组件的绝对或相对路径(例如 `-o /tmp/report.json`)将按原样写入。
## API 密钥
| 密钥 | 模块 | 获取地址 | 必需? |
|-----|--------|-----------------|-----------|
| `HIBP_API_KEY` | `hibp` | https://haveibeenpwned.com/API/Key | 是(模块会跳过) |
| `SERPAPI_KEY` | `google_dork` | https://serpapi.com | 是(模块会跳过) |
| `SHODAN_API_KEY` | `domain_intel` | https://account.shodan.io | 否 |
| `EMAILREP_API_KEY` | `emailrep` | https://emailrep.io | 否 |
| `HUNTER_IO_API_KEY` | `hunter_io` | https://hunter.io | 否 |
| `GITHUB_TOKEN` | `github_commits` | https://github.com/settings/tokens | 否(可选) |
| `SLACK_WEBHOOK_URL` | Webhooks | https://api.slack.com/messaging/webhooks | 否 |
| `DISCORD_WEBHOOK_URL` | Webhooks | Discord 服务器设置 | 否 |
## 更新日志
### 0.4.0"
- 集群身份分析在超时时不再显示原始回溯,改为显示暗淡的备用消息
- 为 pip 安装的用户设定了硬编码的最小超时底线:
account_discovery 120秒,username_pivot 60秒,
user_scanner 180秒,whatsmyname 200秒
- 如果在 `.env` 中设置更高的值,该设置仍然优先
### Counting lines:
- 配置健壮性:CORS_ORIGINS 和字典字段现在接受纯字符串、逗号分隔的值和空字符串而不会崩溃
- 首次使用默认 `.env` 运行时不再出现 SettingsError
- 启动确认行显示配置已正确解析
### 1. Option A: auto-start (simplest)
- LeakCheck 集成:免费语料库查询,覆盖 XposedOrNot 错过的独联体/区域泄露
- XposedOrNot paste 信号在 CLI 和摘要栏中与泄露信号分开显示
- 勒索软件域名受害者关联:检查邮箱域名是否在勒索软件受害者列表中(ransomware.live + ransomlook.io)
- 摘要栏现在显示三部分分解:泄露:X | 贴文:Y | 窃取器:Z
- LeakCheck 窃取器类别现在正确路由到窃取器信号计数,而非泄露计数
- 从 JSON 导出中移除了遗留的 `credential_risk: null`
### 2. Server starts automatically, runs investigation,
- XposedOrNot 集成:免费直接泄露语料库查询,无需API密钥,默认开启,覆盖约70-80%的HIBP覆盖缺口
- 泄露规范化器:将所有来源的泄露调查结果去重为单一的规范记录,并附带来源归属
- 凭据风险评分:独立的0-100评分,带有等级、前3个评分驱动因素和建议的分析师行动。信息窃取器命中强制为“严重”。显示在 CLI、UI、所有导出和 Webhook 中。
### 3. stops when done.
- `github_commits`:在没有 `GITHUB_TOKEN` 时返回 `PARTIAL`(而非 `FAILED`),并包含设置提示
- `whois_lookup`:IANA 管理的域名现在能正确解析,修复了时区感知的日期时间问题,提取的字段更丰富(`organisation`, `nserver`, `registered`, `expires`)
### 4. Option B: keep server running
- 默认模块现在无需任何标志即可运行:`whatsmyname`, `account_discovery`, `user_scanner`, `username_pivot`, `permutation_discovery`, `phone_intel`, `messaging_hints`
- `-m` / `--enable` 标志用于每次运行选择性启用模块(`breach_deep`, `ghunt`, `email_discovery`)
- `-m all` 启用所有三个可选模块
- 无效的 `-m` 模块名会显示有用的警告
### 5. Option C: full stack with Web UI
- 深度泄露模式和邮箱发现改进
- 修复了携带过来的电话号码提取器误报问题
### 6. Enable specific opt-in modules for one run
- 深度泄露模式:探测前100个严重性最高的泄露站点是否存在账户(可选,`ENABLE_BREACH_DEEP=true`)
- 姓名 → 邮箱发现:通过 SerpAPI dork 恢复同一人拥有的其他邮箱地址(需要 `SERPAPI_KEY`)
- Wayback Machine:CDX 搜索邮箱公开出现过的历史页面
- GitHub 提交搜索:在所有公开提交中按作者邮箱搜索,揭示仓库 + git 配置中的真实姓名(`GITHUB_TOKEN` 可选)
- 泄露语料库:从 HIBP 公开 API 自动获取,按记录数 × 数据类别乘数严重性排名,缓存24小时
## 故障排除

## 链接
| | |
|-|-|
| [自托管指南](docs/self-hosting.md) | Docker Compose, `.env` 参考, PostgreSQL, 代理/Tor, Maltego 设置 |
| [模块参考](docs/modules.md) | 所有模块,调查结果模式,添加新模块 |
| [API 参考](docs/api.md) | REST 端点,WebSocket 事件,身份验证 |
| [导出格式](docs/exports.md) | 支持的格式,MIME 类型,文件名约定 |
| [集成](docs/integrations.md) | Maltego, Slack, Discord, 通用 webhooks |
| [贡献](CONTRIBUTING.md) | 添加模块,添加导出器,代码风格,PR 清单 |
| [PyPI](https://pypi.org/project/mailaccess/) | `pip install mailaccess` |
| [GitHub](https://github.com/YOUR_USERNAME/mailaccess) | 源代码,问题,发布 |
## 许可
MIT。MailAccess 查询的所有数据均来自公共来源。有关授权用例和法律责任,请参阅 [免责声明](DISCLAIMER.md)。 标签:DNS记录, Docker, GPT, meg, OSINT工具, pip安装, Python, 信息安全, 免费工具, 反取证, 威胁情报, 安全评估, 安全防御评估, 平台集成, 开发者工具, 情报收集, 无API密钥, 无后门, 暴露评分, 泄露检测, 测试用例, 漏洞研究, 漏洞管理, 电子邮件调查, 社交网络分析, 网络安全, 自托管, 请求拦截, 身份聚类, 逆向工具, 隐私保护