记录远程验收结果并建立邮件投递修复基线
Some checks are pending
Security Checks / security (push) Waiting to run

This commit is contained in:
smail 2026-09-16 20:58:11 +08:00
parent b93ea9d917
commit d57b919d74

View File

@ -0,0 +1,82 @@
# 远程服务器测试记录
## 范围
2026 年 9 月 16 日,用户指定在 `47.108.78.12` 测试,并授权清理测试数据库。远程部署目录为 `/opt/smail`,服务为 `smail.service`,网页为 `https://mail.solit.cn/`。
本轮应用运行、自动测试二进制执行和业务验收均针对远程服务器。本机只进行源码操作、编译、SSH 连接和远程网页浏览;没有启动本机 Smail 或本机开发服务器。此前《清库部署测试记录》的本机结果属于历史记录,不作为本轮远程通过依据。
## 任务状态
- [✓] 核实仅使用两份 SQLite,备份校验后清空数据库对象,保留数据库文件及 inode。
- [✓] 清库后通过独立浏览器上下文完成首次安装、超级管理员登录与安全引导确认。
- [✓] 修复首次安装完成后未生成分区配置,实际生成五份配置文件,配置管理页面可正常读取。
- [✓] 重启远程服务后,无缓存刷新仍保持登录,已确认的安全引导不重复出现。
- [✓] 浏览器创建普通用户,普通用户可登录;密码长度不符时返回中文错误。
- [✓] 修复收件人、抄送、密送输入后直接回车未选中候选的问题,远程浏览器逐项复测通过。
- [✓] 主界面使用中文组件语言,空列表、关闭对话框、关闭标签、数值按钮均有实际页面证据。
- [✓] 配置、安装及管理员恢复相关 Linux 测试包在远程执行通过。
- [✓] 恢复 socket 为 `smail:smail 0600`;非授权服务账号直接运行恢复工具被拒绝。
- [!] 邮件实际投递未通过:网络连接与证书信任阻塞,未绕过校验。
- [!] 异步发信尚未完成时会提前显示成功,需完善待投递状态及页面刷新策略。
- [!] 正式 `systemctl start smail-admin` 密码代理交互、新密码登录及旧会话失效闭环未完成。
- [!] 外部邮箱验证码恢复未完成,需要确定实际可接收验证码的测试邮箱。
- [!] 受信任 TLS、移动端及全部业务模块验收未完成。
## 已部署修复
`3d5c94e` 修复首次安装完成后未启用分区配置管理。首次完成安装时通过现有迁移校验发布分区配置,失败不直接标记初始化完成;不强制迁移已经正常运行的旧版实例。
`b93ea9d` 修复收件人回车选择并统一主界面组件中文。地址选择器启用默认候选,主应用通过组件配置提供中文语言。
两次清库安装后,最后一次前端修复采用备份后保留数据库的升级部署,用于验证会话和配置保持,不宣称该版本又进行了一轮全新清库安装。
最终 Smail 二进制 SHA-256:
```text
7537c3fdd534a93b5d9db46340b1629abd2f03b1dbe4602300ecc71ee26c61bb
```
远程服务在部署后保持 active,HTTP 80、HTTPS 443 正常监听。`config.json`、`email.json`、`plugins.json`、`smtp.json`、`ssl.json` 均为 `smail:smail 0600`。
## 邮件与证书证据
从超级管理员网页向新建普通用户发送中文测试邮件。发件页面提交后返回列表,最初显示发送成功,但收件账号的收件箱和广告箱均未见该邮件。服务器 20:44 日志记录:
1. 连接 `47.108.78.12:25` 超时。
2. 587 回退使用隐式 TLS,返回 `first record does not look like a TLS handshake`;代码与当前 STARTTLS 端口语义不一致,需要单独整改。
3. 465 投递被 `x509: certificate signed by unknown authority` 拒绝。
发件箱手动刷新后显示发送失败,说明最终错误已落库;最初成功提示来自异步投递前的状态,不能作为投递成功依据。
原证书仅覆盖 `*.solit.cn`,安装校验因不覆盖主域名 `solit.cn` 而拒绝。测试改用服务器已有的 `custom.crt`、`custom.key`,覆盖主域名和通配域名,但属于自签名证书。当前公网服务仍使用该测试证书,浏览器提示证书不受信任。需要提供覆盖所需域名的受信任证书,不能将本轮功能检查当作生产 TLS 验收。
安装向导公网 IP 检测未成功;远程访问 `api.ipify.org:443` 失败,未修改外部 DNS,也未使用网页 DNS 解析结果冒充探测结果。
## 自动验证与限制
- `setup.test`、`config.test` 在远程以 `smail` 身份执行通过。
- `adminreset.test` 在远程以 `smail` 身份执行全部通过,覆盖调用身份、一次性挑战、防重放、过期、socket 权限、重置事务与凭据撤销。
- 配置测试曾因从 `/root` 继承工作目录而失败,改在服务账号可访问的测试目录执行后通过,没有放宽权限。
- 前端生产构建与 Linux Go 编译通过;构建有编辑器块超过 500 kB 的提示。
- 本次没有重新执行全部后端包、竞态测试或前端自动测试,不能沿用此前本机全量测试作为远程全量结论。
- 桌面浏览器已检查页面快照、截图和发件页控制台,所查控制台没有错误;未进行移动端检查。
- 键盘选择回归仅检查表单行为,未向不存在的选择测试地址发送邮件。
## 备份与保留
以下目录均位于远程服务器,包含敏感运行数据,不提交仓库:
- `/var/backups/smail-before-reset-20260916-201834`:第一轮清库前备份。
- `/var/backups/smail-before-reset-20260916-202943`:第二轮清库前备份。
- `/var/backups/smail-before-reset-20260916-205033`:前端修复升级前备份,本次未执行清库。
备份均对完整归档进行比较与 SHA 校验。两份数据库 inode 保持为 `smail.db=915735`、`smail-state.db=915727`。旧配置及迁移源已归档,没有删除其他项目文件,没有操作同机 Scert、MySQL 或 PostgreSQL 数据。
最新备份归档 SHA-256:
```text
f335099ca48fc2d224d31e949123f97b6ff0a00ee4b69b20bb2990a021d15bc4
```
测试用户与失败邮件保留用于后续复核,密码、密钥及会话凭据不写入记录。