mirror of
https://github.com/cnlimiter/codex-register.git
synced 2026-09-05 15:36:52 +08:00
2.6 KiB
2.6 KiB
DuckMail 邮箱服务设计说明
目标: 为系统新增独立的 duck_mail 邮箱服务类型,支持在邮箱服务管理页配置 DuckMail,并在注册页选择该服务进行注册。
背景
当前项目已有三类邮箱服务:
tempmail:公共临时邮箱custom_domain:MoeMail 风格 REST APItemp_mail:自部署 Cloudflare Worker 临时邮箱
DuckMail 的接口模型与 custom_domain 不兼容。它采用 /accounts、/token、/messages 资源模型,并通过 Bearer Token 或 API Key 访问。因此需要新增独立服务类型,而不是复用现有 custom_domain 实现。
设计决策
1. 独立服务类型
新增 duck_mail 枚举值、服务类、前后端配置项与注册页可见性逻辑,避免与现有 MoeMail 接口混淆。
2. 配置模型
DuckMail 仅支持手动填写默认域名,不预拉取 /domains,配置项如下:
base_url:DuckMail API 地址default_domain:默认域名,创建邮箱时直接拼接password_length:自动创建 DuckMail 账户时使用的随机密码长度api_key:可选,私有域名时通过Authorization: Bearer dk_xxx调用timeoutmax_retriesproxy_url
3. 创建邮箱流程
DuckMail 服务在 create_email() 中:
- 生成合法用户名(至少 3 个字符)
- 用
default_domain拼接邮箱地址 - 生成随机密码
- 调用
POST /accounts - 调用
POST /token获取 Bearer Token - 返回
email、service_id、account_id、token、内部随机密码等信息
4. 取验证码流程
DuckMail 的列表接口不返回正文,需:
- 轮询
GET /messages - 筛选 OpenAI 邮件
- 对新消息调用
GET /messages/{id} - 从
text/html中提取验证码
5. 删除与健康检查
delete_email():使用账户 Bearer Token 调DELETE /accounts/{id}check_health():优先调GET /domains;如果配置了私有域名 API Key,也沿用相同入口
6. 前端接入
邮箱服务管理页新增 DuckMail 子类型:
- 列表中单独展示为 DuckMail
- 新建/编辑表单展示 DuckMail 专属字段
注册页:
- 从
/registration/available-services中显示 DuckMail 服务 - 选择后与其他数据库邮箱服务一样传递
email_service_type=duck_mail与email_service_id
测试范围
至少覆盖:
- DuckMail
create_email()会调用账户创建与 token 获取 - DuckMail
get_verification_code()会按“列表 -> 详情”提取验证码 - 注册接口的可用服务列表包含
duck_mail - 邮箱服务类型接口与敏感字段过滤支持
duck_mail