7.7 KiB
清库部署测试记录
本文保留分日期的测试记录。不同环境、版本和日期的结果不可相互替代;最新云端续验见文末。
范围与状态
日期:2026 年 9 月 16 日。仅测试本机 D:\Desktop\Smail\yunx-test,使用正式构建包和嵌入前端,未启用开发模式或停用本机恢复通道。
- [✓] 备份三份 SQLite 数据库和配置,校验备份后清空数据库对象,保留数据库文件。
- [✓] 完整构建、部署及部署指纹校验通过。
- 首轮通过浏览器完成数据库、超级管理员、域名、DNS 展示和手动证书初始化;正式业务服务未就绪。
- [✓] 修复安装根地址认证探测失败,隔离浏览器直接访问根地址后自动进入中文安装向导。
- [✓] 修复 HTTP、HTTPS 全局实例在停止期间被清空而导致的崩溃;启动任务发布前同步准备实例,关闭已准备但尚未监听的实例也能正常退出。
- [✓] 全量自动回归与定向竞态检查通过。
- [!] 正式登录、刷新会话、普通用户及管理员邮件恢复、旧密码与旧会话失效实机验收未完成。
- [!] 超级管理员受保护本机恢复通道实机验收未完成。
实机证据
第一轮直接访问安装根地址出现“认证服务暂时不可用”。安装服务缺少 /api/v1/user/info 的初始化状态响应,前端未得到需要初始化的业务码。修复后,两个版本的认证探测路径均复用安装令牌和来源检查,只返回需要初始化状态,不执行账号或配置写入。
在全新隔离浏览器中访问 http://127.0.0.1:5201/,页面自动进入 /#/setup?redirect=/,显示中文六步安装向导,未再出现认证服务不可用。已查看页面快照和桌面截图;截图工具不允许写入当前工作区,因此截图仅保留在会话中,未声称落盘。
第一轮完成初始化后,Windows Named Pipe 在接受连接时返回 Access is denied,随后 HTTP 停止与启动并发导致空指针崩溃。最新构建重试相同权限环境后,保留明确权限错误并退出,未再发生空指针崩溃,监听端口已释放。
当前进程使用未提升的中等完整性令牌,管理员组仅用于拒绝检查。本机通道 ACL 仍限定 SYSTEM 与管理员,未放宽 ACL,未改成公开 HTTP 或 TCP 接口。
自动验证
go test ./listen/http_server ./res_init通过。node test/run.mjs all通过:前端 166 项、部署 4 项以及全部后端包。部分未变更包使用 Go 测试缓存,不能据此认定受权限限制的 Windows IPC 用例已实机执行。node test/run.mjs backend -race ./listen/http_server ./res_init通过。- 新增覆盖:HTTP 和 HTTPS 停止先于监听、多个停止任务并发、HTTPS 准备失败清理 HTTP,以及安装状态接口的有效令牌、缺少令牌、来源限制、方法限制和初始化完成后拒绝访问。
git diff --check通过,仅存在仓库已有换行策略提示。
首次误将构建与回归并行调度,触发工作区锁且导致竞态测试读取不到正在移动的嵌入资源。已改用串行调度重跑并通过,此次失败不作为产品回归结论。
备份与日志
以下路径包含本地测试数据或配置,均为忽略的运行产物,不提交仓库:
test-log/live-20260916-1938/backup/:清库前配置和数据库。test-log/live-20260916-1938/reset-partition-config/:归档的旧分区配置。test-log/live-20260916-1938/before-retest/:首轮初始化后、第二次清库前的配置和数据库。test-log/live-20260916-1938/fresh.stderr.log:原始崩溃证据。test-log/live-20260916-1938/fixed.stdout.log与fixed.stderr.log:修复后正式启动权限失败与退出证据。test-log/live-20260916-1938/setup-retest.stdout.log:最新安装向导进程日志。test-log/run-2026-09-16T11-49-49-921Z-5240/:成功的全量回归。test-log/run-2026-09-16T11-51-52-136Z-29980/:成功的竞态检查。
第二次清库后保留安装向导运行于 127.0.0.1:5201,数据库为空、配置未初始化,证书与业务密钥未删除。没有将旧账号备份恢复到当前运行库。
后续条件
后续正式流程需要符合项目部署要求的 Windows 权限环境或受支持的 Linux 部署环境。当前会话无法提供已提升的 Windows 令牌,不通过绕过权限限制推进验收。
在具备权限的环境中重新完成初始化并确认服务稳定后,再验证登录、会话刷新和邮箱恢复。邮件恢复还需要确定实际可接收验证码的外部测试邮箱;验证码收到、恢复页面打开或接口返回成功均不单独构成完整验收。
2026 年 10 月 2 日云端续验
范围
本段时间为 13:17 至 13:30,继续当天已经完成的全新部署验收,不重复清库或恢复历史数据。业务操作使用浏览器页面;交互式 SSH 仅检查运行状态、修改 Smail 专用 Nginx 日志配置和权限。未调用业务接口代替页面测试,未新建测试脚本,未修改 Go 或前端业务代码。
本段结果
- [✓] 普通用户使用恢复后的临时密码登录成功,原邮件可读;随后通过安全设置恢复指定测试密码并再次登录,收件箱邮件仍在。本文不记录密码或安全码。
- [✓] 密码恢复后的安全设置显示不存在有效安全码,公共恢复入口不再提供安全码验证;源码确认恢复事务会撤销整批凭据。因页面已经撤销整批安全码,本段未单独提交第二枚旧码,不能称为逐码重放实测。
- [✓] 修改密码后页面退出登录,明确提示原安全凭据已失效。
- [✓] 超级管理员在公共找回页面被明确拒绝重置,提示使用安全中心或部署端本机通道;未执行超级管理员本机重置。
- [✓] 基础配置页面显示单一 MySQL 数据库和数据库用户均为
smail;页面域名与本次部署确认值一致。 - [✓] SSL 页面显示手动配置、不自动续期,直接引用 Nginx 使用的同组证书文件路径。
- [✓] Smail 专用 Nginx 配置改为不含查询参数、来源页及认证头的访问日志格式;配置语法检查通过并平滑加载。通过浏览器打开带无敏感信息测试参数的登录页后,新访问日志仅包含路径,测试参数匹配数为零。
- [✓] Smail 专用访问日志及错误日志权限均已设为
0640;现有日志轮转配置也使用0640,未改动其他项目日志。 - [✓] 调整后 Smail、Nginx 均运行正常;Smail 启动时间仍为当天 11:58:26,自动重启次数为零,本段未重启 Smail。
- 部署模板同步专用访问日志格式,反代部署说明校正证书路径引用与热加载行为;本地差异检查通过。完整占位符模板尚未在另一套全新实例重新部署。
尚未关闭的验收项
- [!] 自动证书续期、证书更新后网页及各邮件协议加载闭环尚未实测通过,手动配置和热加载不能替代自动续期验收。
- [!] 外域双向收发、真实 SMTP/IMAP/POP3 客户端、反中继及通知凭据协议隔离仍待完成。
- [!] 外部邮箱恢复、超级管理员本机恢复、附件上传及其他安全功能尚未全部覆盖。
- [!] 本次全新环境的微信、Telegram 配置与真人绑定尚未完成,不继承历史成功结果。
- [!] 历史日志未删除;应用日志、错误日志及其他日志的敏感信息检查仍待完成,不能以访问日志格式修改代替全部日志审计。
- [!] 本轮临时账号、分组和其他验收数据保留用于后续测试,发布前仍需按确认范围完成清理。
以上不构成全项目验收通过或上线签收。