- Console:React 19 + antd 6.6.5 前端(登录 admin/admin)+ Hono 管理 API (Nodes/Domains/Mailboxes/Emails/Webhooks/Keys/OAuth/Admin) - Node:Bun 转发节点(HMAC 签名、有限重试、心跳、结构化日志、优雅退出) - Email Worker:Cloudflare email handler + 本地联调入口 - shared:HMAC 协议(docs/04)、wmh_ Key(32 位)、AES-GCM 加密、SSRF 防护 - 邮件管线:postal-mime 解析、附件、catch-all、限额、malformed 降级、TTL 1 天 - Webhook:签名投递、指数退避重试、SSRF 校验、投递日志 - API v1 + MCP(JSON-RPC,六工具,凭据 kind 隔离) - Cloudflare OAuth:真实 + 本地 sim 模式,自动安装管线(幂等,无需手工命令) - 测试:bun test 41 例(协议安全/管线/TTL/Webhook/SSRF/MCP/OAuth/鉴权)+ Playwright UI 冒烟 - LOGO/favicon 由 codex CLI 生成
48 lines
1.0 KiB
Markdown
48 lines
1.0 KiB
Markdown
# 安全设计
|
|
|
|
## 安全边界
|
|
|
|
```text
|
|
Cloudflare Email Worker
|
|
|
|
|
| authenticated request
|
|
v
|
|
Node
|
|
|
|
|
| TLS + HMAC
|
|
v
|
|
Console
|
|
```
|
|
|
|
## Cloudflare OAuth
|
|
|
|
OAuth Token 加密存储,不进入前端和日志,也不作为 Node credential。
|
|
|
|
## Node Credential
|
|
|
|
由 Console 自动生成。用户不手工配置。支持撤销和重新 enrollment。
|
|
|
|
## 请求签名
|
|
|
|
所有 Node -> Console 请求必须签名,签名覆盖 method、path、timestamp、nonce、body hash,防止篡改和 replay。
|
|
|
|
## Worker -> Node
|
|
|
|
Worker 使用 Node 专用 ingress secret。Worker 不应拥有 Console credential。
|
|
|
|
## 最小权限
|
|
|
|
Cloudflare OAuth 只申请业务所需权限。
|
|
|
|
## 日志
|
|
|
|
禁止记录 Cloudflare OAuth token、Node secret、Webhook secret、Authorization header 和完整邮件正文。
|
|
|
|
## 附件限制
|
|
|
|
限制单文件大小、单邮件总大小、文件数量和 MIME header 大小,避免资源耗尽。
|
|
|
|
## 数据保留
|
|
|
|
默认 Email TTL 为 1 天,过期自动删除。
|