abdulqayyum43/mailguard

GitHub: abdulqayyum43/mailguard

MailGuard 是一个自托管的邮件安全分析 API,通过全面检测 SPF、DKIM、DMARC 等协议配置来评估域名的防伪造能力并生成合规报告。

Stars: 1 | Forks: 0

# MailGuard **即时邮件安全情报 —— 通过一次 API 调用获取 SPF, DKIM, DMARC, MTA-STS, BIMI, 黑名单和欺骗性分析** MailGuard 是一个自托管的邮件安全平台,可分析域名的完整身份验证和可交付性设置。它能为您提供可操作的安全评分(A–F),标记出每一项配置错误,并生成符合 PCI-DSS, SOC 2 和 ISO 27001 审计要求的 PDF 报告。只需一个 POST 请求,就能告诉您某个域名是否会被伪造 —— 以及具体的修复方法。 ## 为什么选择 MailGuard? 仅检查 SPF 并不能告诉您您的域名是否免受欺骗。一条有效的 SPF 记录如果配合了 `p=none` 的 DMARC,意味着攻击者仍然可以自由地冒充您。缺失 MTA-STS 策略意味着您的邮件可能在传输过程中被降级。MailGuard 会同时运行所有 10 项检查,并为您提供最关键的指标:这个域名是否可被伪造,以及为什么? ## 它的功能 ``` Request → FastAPI → API Key Auth → Rate Limiter ↓ analyze(domain) ↓ ┌──────────────────────────────────────────┐ │ Parallel DNS + Security Checks │ │ SPF │ DKIM │ DMARC │ MTA-STS │ │ BIMI │ MX Records │ STARTTLS │ │ DANE/TLSA │ Blacklists │ Spoofability │ └──────────────────────────────────────────┘ ↓ Grade (A+ → F) + Spoofable: true/false Issues + Recommendations ``` ## 快速开始 ``` pip install -r requirements.txt cp .env.example .env uvicorn main:app --reload --port 8004 ``` 立即分析域名: ``` curl -X POST http://localhost:8004/analyze \ -H "X-API-Key: mailg-free-your-key-here" \ -H "Content-Type: application/json" \ -d '{"domain": "yourdomain.com"}' ``` 交互式文档位于 **http://localhost:8004/docs** ## 您将获得什么 | 功能 | 描述 | |---|---| | 📋 **SPF** | 记录存在性、语法、机制分析、`+all` 检测 | | 🔑 **DKIM** | 密钥存在性、密钥长度、算法强度 | | 🛡️ **DMARC** | 策略严格度(`none`/`quarantine`/`reject`)、报告配置 | | 🔒 **MTA-STS** | 严格传输安全策略的存在性和模式 | | 🏷️ **BIMI** | 品牌指示器记录和 VMC 证书检查 | | 📬 **MX 记录** | 邮件服务器的存在性和配置 | | 🔐 **STARTTLS** | 邮件服务器上的机会性加密支持 | | 🌐 **DANE / TLSA** | 基于DNS的命名实体身份验证 | | 🚫 **黑名单** | 跨主要拦截列表的多 RBL 检查 | | 🎯 **欺骗性评分** | 基于所有综合结果的总体冒充风险 | ## 评分系统 | 等级 | 分数 | 含义 | |---|---|---| | A+ | 96–100 | 所有最佳实践均已到位 —— 域名无法被伪造 | | A | 90–95 | 非常强大的配置 | | B | 75–89 | 良好,有轻微缺失 | | C | 60–74 | 存在中度问题 —— 有被欺骗的风险 | | D | 40–59 | 严重的配置错误 | | F | 0–39 | 致命错误 —— 域名可被伪造 | ## 检查内容 | 检查项 | 描述 | |---|---| | **SPF** | 记录存在性、语法、机制分析、`+all` 检测 | | **DKIM** | 密钥存在性、密钥长度、算法强度 | | **DMARC** | 策略严格度(`none` / `quarantine` / `reject`)、报告配置 | | **MTA-STS** | 严格传输安全策略的存在性和有效性 | | **BIMI** | 品牌指示器记录和 VMC 证书 | | **MX 记录** | 邮件服务器的存在性和配置 | | **STARTTLS** | 邮件服务器上的机会性加密支持 | | **DANE / TLSA** | 基于DNS的命名实体身份验证 | | **黑名单** | 跨主要拦截列表的多 RBL 检查 | | **欺骗性** | 基于综合结果的总体被伪造风险 | ## API 参考 ### `POST /analyze` — 分析域名 **Headers:** `X-API-Key: your-key` | `Content-Type: application/json` **请求:** ``` {"domain": "yourdomain.com"} ``` **响应:** ``` { "domain": "yourdomain.com", "grade": "B", "score": 78, "issue_count": 2, "issues": [ { "severity": "high", "check": "DMARC", "message": "DMARC policy is set to 'none' — emails are not rejected or quarantined", "recommendation": "Change p=none to p=quarantine or p=reject to enforce DMARC" }, { "severity": "info", "check": "BIMI", "message": "No BIMI record found", "recommendation": "Add a BIMI record to display your logo in supported email clients" } ], "spf": {"record": "v=spf1 include:_spf.yourdomain.com -all", "valid": true, "all_mechanism": "-all"}, "dmarc": {"record": "v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com", "policy": "none", "valid": true}, "dkim": {"selectors_found": ["mail"], "valid": true}, "mta_sts": {"policy_found": true, "mode": "enforce"}, "blacklisted": false, "spoofable": true } ``` ### `POST /analyze/bulk` — 批量域名扫描 (Pro) ``` {"domains": ["yourdomain.com", "clientdomain.com", "example.org"]} ``` ### `POST /monitor` — 持续监控 (Pro) ``` { "domain": "yourdomain.com", "check_interval_hours": 24, "alert_on_grade_drop": true, "slack_webhook": "https://hooks.slack.com/services/..." } ``` ### `POST /report/remediation` — PDF 修复指南 (Free+) ### `POST /report/compliance` — PDF 合规报告 (Pro) — PCI-DSS, SOC 2, ISO 27001 ``` curl -X POST http://localhost:8004/report/compliance \ -H "X-API-Key: your-pro-key" \ -H "Content-Type: application/json" \ -d '{"domain": "yourdomain.com", "framework": "pci-dss"}' \ --output compliance-report.pdf ``` ### `GET /history` — 每个 API key 的扫描历史 ### `GET /usage` — 扫描计数、评分分布、使用统计 ## API 级别 | Endpoint | Free | Pro | Enterprise | |---|---|---|---| | `/analyze` | ✅ | ✅ | ✅ | | `/analyze/bulk` | ❌ | ✅ | ✅ | | `/report/remediation` | ✅ | ✅ | ✅ | | `/report/compliance` | ❌ | ✅ | ✅ | | `/monitor` | ❌ | ✅ | ✅ | | `/schedule` | ❌ | ✅ | ✅ | | 速率限制 | 10次/分钟 | 60次/分钟 | 无限制 | ## 配置 | 变量 | 描述 | |---|---| | `ADMIN_SECRET` | 管理 endpoint 密钥 | | `INITIAL_API_KEYS` | 逗号分隔的预加载 API key | | `DATA_DIR` | 持久化存储路径 (默认: `./data`) | | `SCAN_TIMEOUT` | 每个域名的扫描超时时间(秒)(默认: `15`) | | `STRIPE_SECRET_KEY` | 启用 Stripe 计费 (可选) | | `TOYYIBPAY_SECRET_KEY` | 启用 ToyyibPay 计费 —— 马来西亚 (可选) | ## 项目结构 ``` mailguard/ ├── main.py # FastAPI app & all routes ├── config.py # Settings (from .env) ├── auth.py # API key management ├── models.py # Pydantic schemas ├── rate_limiter.py # SlowAPI configuration ├── analytics.py # Per-key usage tracking ├── scan_history.py # Persistent scan history store ├── monitoring.py # Background monitoring service ├── scheduler.py # Scheduled scan service ├── portfolio.py # Portfolio management ├── webhook_manager.py # Webhook delivery and logging ├── alerts.py # Alert delivery (Slack, PagerDuty, email) ├── pdf_report.py # Security PDF report generator ├── remediation_report.py # Remediation guide PDF generator ├── compliance_report.py # PCI-DSS/SOC2/ISO27001 PDF generator ├── analyzer/ │ └── scorer.py # Core email security analysis engine ├── stripe_billing.py # Stripe integration ├── toyyibpay_billing.py # ToyyibPay (Malaysia) integration ├── static/ # Frontend dashboard ├── Dockerfile └── docker-compose.yml ``` ## 使用 Docker 运行 ``` docker compose up -d ``` 由 **Abdul Quyyam** 构建 · MIT License
标签:API服务, AV绕过, DKIM, DMARC, FastAPI, SPF, 请求拦截, 逆向工具, 邮件安全, 配置审计