diff --git a/docs/远程服务器测试记录.md b/docs/远程服务器测试记录.md index 18e6310..02de915 100644 --- a/docs/远程服务器测试记录.md +++ b/docs/远程服务器测试记录.md @@ -8,6 +8,10 @@ ## 任务状态 +- [✓] 批量已读事务原子性修复已编译为 Linux amd64,并部署到 47 服务器;服务版本指纹和二进制摘要核对通过。 +- [✓] 批量已读部署前完成主程序及两份 SQLite 备份,备份数据库完整性校验通过;部署过程中未清理账号、配置或历史邮件。 +- [!] 批量已读网页实机登录受测试账号密码已失效阻塞;未通过数据库改密或其他方式绕过登录边界。代码自动测试已覆盖混合归属拒绝、更新失败回滚、重复 ID 和非法 ID。 +- [✓] 新部署版本在远程 `127.0.0.1:25` 完成内部 SMTP 回归,五项用例均完成真实 SQLite 归属核对。 - [✓] 核实仅使用两份 SQLite,备份校验后清空数据库对象,保留数据库文件及 inode。 - [✓] 清库后通过独立浏览器上下文完成首次安装、超级管理员登录与安全引导确认。 - [✓] 修复首次安装完成后未生成分区配置,实际生成五份配置文件,配置管理页面可正常读取。 @@ -29,6 +33,12 @@ ## 已部署修复 +`3ae8ecb` 修复批量已读事务原子性:批量 ID 去重并校验,事务内先确认全部邮件属于当前用户,任一邮件不属于当前用户或任一更新失败时整批拒绝并回滚;新增混合归属、更新失败回滚、重复 ID 和非法 ID 自动测试。 + +2026 年 9 月 17 日 00:34,47 服务器部署该提交对应的 Linux amd64 主程序。源码指纹为 `fd6737820921cb382743ab2537fe7de72a1c47084e974368a47fde966fff0447`,版本日志为 `remote-fd6737820921`,远程 `/opt/smail/smail` SHA-256 为 `5422129011db2fa9faaef5fd65bb022628e084dd6c0e0f1f5cbed4fea35f3696`。部署后 `smail.service` 为 `active`,主进程退出状态为 0,25、80、443 正常监听;两份 SQLite 的 `PRAGMA integrity_check` 均为 `ok`。 + +部署前备份保留于 `/var/backups/smail-before-batch-read-20260917-003225`,包含原主程序、`smail.db` 和 `smail-state.db`。首次错误格式产物曾短暂触发 systemd `Exec format error`,已立即用备份恢复并确认服务 active,随后使用明确 `GOOS=linux GOARCH=amd64 CGO_ENABLED=0` 的 ELF 产物重新部署;错误格式文件未继续运行,数据库和配置未受影响。 + `3d5c94e` 修复首次安装完成后未启用分区配置管理。首次完成安装时通过现有迁移校验发布分区配置,失败不直接标记初始化完成;不强制迁移已经正常运行的旧版实例。 `b93ea9d` 修复收件人回车选择并统一主界面组件中文。地址选择器启用默认候选,主应用通过组件配置提供中文语言。 @@ -79,6 +89,20 @@ e0455f8156f4bc0ff25136ffb39e42566b0b154165eb3ce8eb4fb937ba6fe1f6 ## 内部 25 端口验收 +### 2026 年 9 月 17 日部署后回归 + +在最新 `3ae8ecb` 部署版本上,从 47 服务器本机连接 `127.0.0.1:25`,没有使用公网 25 端口。运行号为 `20260917-003640`,结果和本轮双库备份保留于 `/var/backups/smail-internal-smtp-20260917-003640/result.json`。五项测试均使用 TLS 1.3,SMTP DATA 返回 250,并以真实 SQLite 记录核对结果: + +| 用例 | 邮件 ID | 实际结果 | +| --- | --- | --- | +| 中文纯文本 | 20 | 仅普通用户 `remotecheck` 关联,正文核对一致 | +| HTML 与中文附件、多收件人 | 21 | 管理员和普通用户均关联,附件及字节核对通过 | +| 管理员专属附件 | 22 | 仅管理员关联 | +| 未知本域收件人 | 23 | 当前过滤级别 0,转管理员收件箱 | +| 未认证外域收件人 | 24 | 当前策略转管理员收件箱,无发信记录 | + +本轮内部 SMTP 结果只证明远程本机接收链路和实际持久化正常,不代表公网 SMTP 投递、受信任 TLS 或网页发信闭环已通过。 + 根据用户最新要求,仅从 47 服务器连接 `127.0.0.1:25`,不要求公网 25 端口连通。测试脚本为 `test/tools/internal_smtp_check.py`,本机没有执行该脚本。测试客户端显式信任服务器现有测试证书,仍校验 `mail.solit.cn` 主机名、证书有效期和证书链;没有修改应用证书校验、系统 CA、DNS 或中继配置。 21:26:17 最终一轮五项测试全部完成,全部使用 TLS 1.3,SMTP DATA 返回 250,随后核对真实 SQLite 数据与用户关联,并非仅以协议返回码判定成功: