2026-09-06 上线检查记录
本页记录本次安全与一致性升级已经完成的源码、构建、隔离数据库、生产迁移、HTTP、SMTP 和邮件协议检查。涉及写数据的迁移、注册、转让、额度、订单和删除流程在隔离 PostgreSQL 运行现有集成测试;正式环境使用只读核对、协议握手和明确的测试地址,未对真实用户执行破坏性操作。
源码与构建
| 检查项 | 结果 |
|---|---|
隔离 PostgreSQL 16 全量 Go 测试(go test -p 1 -count=1 -timeout=15m ./...) | 全部通过,无跳过或失败 |
| Go 静态检查 | 通过 |
| Go 后端构建 | 通过 |
| 前端 API 契约检查(252 个接口) | 通过 |
| 组织共享发信配额契约检查(13 项) | 通过 |
| 前端中英文检查(1643 个键)、导航、身份与注册策略检查 | 通过 |
| 注册页四种中文/英文 × 验证开关服务端渲染 | 通过 |
| 前端生产构建(245 个模块) | 通过 |
| 官网功能检查脚本 | 通过 |
| 官网生产构建 | 通过 |
| 前端与官网依赖审计 | 未发现当前可报告漏洞 |
| 当前代码与近期历史凭据扫描 | 未发现提交的生产密钥 |
| Turnstile 故障关闭与显式救援开关测试 | 通过 |
| VitePress 文档构建与内部链接检查 | 通过 |
最终代码版本为 7edaf5b。隔离 PostgreSQL 16 从空库实际应用迁移 001–065,然后在配置 TEST_DATABASE_URL 的情况下执行全量测试;注册策略从关闭实时切换到开启、组织配额并发/回滚/精确边界/零值不限/失效套餐,以及既有数据库集成用例都真实执行,没有跳过或失败。
检查覆盖登录注册、SMTP 认证邮件、Turnstile、OAuth/NodeLoc 身份、管理员设置、用户与邮箱、邮件、附件、联系人、规则、共享、转让、清理、组织、配额、投递、协议、通知、订单与支付。
数据库迁移
当前迁移序列为 001–065。隔离数据库已完整应用全部迁移,生产数据库也已迁移到 065;升级前后的用户、邮箱、邮件与附件记录均得到保留。本次新增的 16 个迁移(050–065)覆盖 OAuth 唯一身份、令牌撤销、个人/组织发信与存储预留、计费所有者、入站去重、只读共享、默认签名、身份规范化、已验证找回邮箱唯一性和持久隔离邮件。
迁移前先执行冲突预检。对归属不明确的 OAuth 身份或订单/订阅,迁移会停止并要求人工确认,不会自动猜测。
正式环境核对
生产环境已经运行 7edaf5b,迁移记录完整到 065,升级前后的用户、邮箱、邮件和附件记录得到保留。本次实际线上核对结果:
- 官网首页、邮箱应用、注册页、健康检查和公开品牌接口返回
200。 - HTTP 访问跳转到 HTTPS 并返回
308;安全响应头已生效。 - 公开品牌接口实时返回
registration_enabled=true、email_verification_enabled=true和turnstile_enabled=true,同时带Cache-Control: no-store。 - 本地注册与登录缺少 Turnstile 令牌时均返回
400;未认证访问管理员设置返回401。 - 系统 SMTP 使用正式配置向管理员指定的测试地址实发,远端 SMTP 服务器已经接受邮件。
- 公网可以连接 SMTP
25/587、IMAPS993和 POP3S995;后端内部端口8080没有暴露到公网。 - IMAPS 与 POP3S 协商 TLS 1.3,
mail.to9.us返回有效且主机名匹配的证书。
下列功能契约由源码检查、前端契约检查和隔离数据库集成测试覆盖:
- 普通账号、NodeLoc 账号、逐用户真实 TL 等级和本站 L 配额分别显示;未知等级不从
users.level猜测。 - 已有账号不重复进入首次引导,管理员直接进入后台。
- 注册 SMTP、Turnstile 故障关闭、找回密码、找回邮箱与 OAuth/NodeLoc 身份唯一性。
- 邮箱外部转发、自动回复配额与“只回复一次”、高风险隔离预览/放行/永久删除、清理占用与全部粉碎;个人清理接口不能处理企业邮箱。
- 企业发送计入组织共享每日额度且不占成员个人额度或能量;组织品牌只在全局开关开启、组织与套餐均处于生效或宽限状态且域名已验证时公开生效。
- 邮箱共享只读、转让并发、存储与发送预留、订单/订阅所有者、签名唯一性、入站去重和已验证找回邮箱唯一性。
安全边界
正式环境不因检查执行真实批量发信、无依据的订单入账、永久删除用户或重置真实用户安全设置。支付供应商、外部收件服务器、Cloudflare、NodeLoc、Telegram 和对象存储仍属于第三方依赖,需要持续监控实际回调和投递。
任何一次构建和检查都不能证明未来绝不会出现问题。发布后的错误率、投递失败、身份绑定冲突、异常注册和管理员高风险操作仍需通过日志与审计持续观察。