Smail/docs/密码恢复实机验收.md
smail 580e0c775a
Some checks are pending
Security Checks / security (push) Waiting to run
保存本机恢复通道部署整改,准备系统邮件直发验证
2026-09-15 20:36:14 +08:00

2.2 KiB

密码恢复实机验收

本轮需求

  • [~] 管理员、普通用户通过已验证外部邮箱及离线安全凭据恢复密码。
  • [~] 超级管理员登录后通过外部安全邮箱验证码修改密码。
  • [~] 超级管理员通过部署端受保护本机通道重置密码。
  • [!] 独立恢复域名与邮箱主域名联动:待确认是恢复指引入口还是新增网页重置入口,不能在确认前把本机通道暴露到公网。

当前实现边界

  • 普通用户邮箱恢复通过后可以设置新密码。
  • 管理员邮箱恢复通过后仍需要未使用的离线恢复码。
  • 离线恢复需要密保问题、密保答案和离线恢复码,不是只填写一个安全码。
  • 超级管理员不能通过公开忘记密码接口恢复。登录后安全中心使用已验证外部邮箱验证码改密。
  • 改密成功会使旧会话和相关恢复、客户端凭据失效;测试后需要重新配置下一轮所需凭据。

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 或编写功能测试脚本。保留现有测试业务库,不清空邮件、账号或外部邮箱绑定。

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