Smail/docs/密码恢复实机验收.md
smail 08b1f41350
Some checks are pending
Security Checks / security (push) Waiting to run
修复安装入口与监听启停竞态并记录清库验收
2026-09-16 19:54:25 +08:00

2.7 KiB

密码恢复实机验收

本轮需求

  • [~] 管理员、普通用户通过已验证外部邮箱及离线安全凭据恢复密码。
  • [~] 超级管理员登录后通过外部安全邮箱验证码修改密码。
  • [~] 超级管理员通过部署端受保护本机通道重置密码。
  • 管理员、普通用户的一次性恢复页面复用现有 Web 域名和 HTTPS 证书,固定入口为 https://Web域名/rest/。

当前实现边界

  • 普通用户邮箱恢复通过后可以设置新密码。
  • 管理员邮箱恢复通过后仍需要未使用的离线恢复码。
  • 离线恢复需要密保问题、密保答案和离线恢复码,不是只填写一个安全码。
  • 超级管理员不能通过公开忘记密码接口恢复。登录后安全中心使用已验证外部邮箱验证码改密。
  • 公开恢复邮件由 no-reply@主邮件域名 发送,邮件中的一次性链接使用 Web 域名,不再配置独立恢复域名或额外证书。
  • 旧 adminRecovery 配置仅保留兼容读取,不在配置页面展示,也不参与恢复路由和证书域名计算。
  • 改密成功会使旧会话和相关恢复、客户端凭据失效;测试后需要重新配置下一轮所需凭据。

Linux 本机通道部署整改

  • 部署根目录为 /opt/smail,配置、证书、数据和日志保持原位置。
  • 主服务使用 smail 系统账户,低端口仅通过 CAP_NET_BIND_SERVICE 授权。
  • smail-admin 使用 root 和系统服务上下文,仅通过 /run/smail/admin-control.sock 通信。
  • 恢复服务不允许开机自动运行,且只允许向本机密码代理临时目录写入交互请求。
  • 安装前拒绝覆盖运行中程序,旧程序和服务文件备份到 /var/backups,不覆盖业务配置、数据库或证书。

部署人员在可信终端执行 systemctl start smail-admin,并按密码代理提示无回显输入两次新密码;如终端没有收到提示,可在另一个可信终端执行 systemd-tty-ask-password-agent --query。不得把密码放到命令行、环境变量或日志里。

验收说明

Web 功能使用 MCP 模拟键鼠测试;终端用于源码检查、构建、部署、授权范围内的数据备份清理以及本机重置工具本身的交互,不调用业务 API 代替页面验收。2026 年 9 月 16 日用户已授权清理测试数据,本轮限定在 yunx-test,先备份所有测试数据库再清空,保留数据库文件并重新执行初始化。不得将此授权扩大到其他部署环境。

具体测试结果记录到 test-log/日期/测试log;收到验证码、页面提示请求已受理、构建成功均不单独等于密码恢复闭环完成。

本轮结果见《清库部署测试记录》。