数据库结构 / Database Schema
MailPort 共三张表( MongoDB 中为三个集合)。应用首次启动时自动创建,无需手动执行 SQL。
字段命名在各数据库中保持一致;下文以关系型数据库的蛇形命名为准。
senders — 发件商
每条记录是一个独立的发件通道,拥有独立的调用端点、密钥与收件域名白名单。
索引:pid 唯一索引。
升级说明:v0.1.0 之后新增的 8 列(
http_*/oauth_*)由应用启动时自动补齐,老库无需手动迁移。
sender_keys — 发件商密钥
一个发件商可持有多个 32 位密钥,各自可启停、删除。
索引:sender_id 索引。
send_logs — 发送日志
每次调用接口(无论成败)都会写入一条。
索引:(sender_id, created_at DESC) 复合索引、status 索引。
各数据库差异说明
MongoDB 驱动在删除发件商时,由应用层同时删除其密钥与日志(MongoDB 无外键约束)。
数据安全
- SMTP 密码、OAuth Client Secret / Refresh Token 与 API 密钥均以
v1:前缀的 AES-256-GCM 密文存储。 MAILPORT_SECRET是唯一解密途径,不会写入数据库或日志。- 日志表不记录邮件正文、密钥明文。
- 健康检查接口只返回配置是否存在,不返回任何凭据。