# 单数据库云端测试报告 ## 范围与结论 测试日期:2026 年 9 月 20 日。 本次要求是每套部署在 SQLite、MySQL、PostgreSQL 中三选一,业务数据与配置历史共用同一个数据库,不再附带独立 SQLite 状态库。域名和账户仅作为本次测试参数,不作为产品默认值或验收条件。 - [✓] 首次启动不提前创建数据库,远程数据库不可用时不回退 SQLite。 - [✓] 配置历史使用所选数据库中的 `config_records`,配置提交恢复使用文件事务日志。 - [✓] 旧双库历史导入、故障阶段恢复、冲突校验与重复启动回归。 - [✓] 云端三种真实数据库的第 1~24 版迁移、历史读写、保留策略与重新打开检查。 - [✓] 最新程序编译部署、清理后首次初始化、配置保存、服务重启与浏览器会话恢复。 - [✓] 专用测试数据库、账号和远程测试目录清理;其他项目保持运行。 ## 本地自动化验证 最终执行 `node test/run.mjs all -p 1 ./...`,退出码为 0。该入口同时执行前端、部署和带测试覆盖层的后端测试;单独执行普通 Go 测试不能替代此入口。 证据位于本地忽略目录 `test-log/cloud-clean-20260920`: - `single-database-release-final.log`:最终全量测试。 - `single-database-final-targeted.log`:配置、迁移及路径保护定向测试。 - `live-three-database.log`:SQLite、MySQL、PostgreSQL 实机测试均为通过。 - `build-latest.log`:前后端与部署工具构建。 通用测试中未提供外部环境的用例仍按自身条件跳过,不能把跳过当成实机通过。三种数据库的实机结论仅来自独立的云端测试日志。 ## 清理与真实初始化 按本次授权只清理 Smail 测试环境,没有额外备份,没有停止共享数据库或其他项目。保留原有证书材料,清空并复用 `/opt/smail/data/smail.db`,文件 inode 清理前后均为 `1185535`。旧 `smail-state.db` 已移除。 部署构建版本为 `single-db-20260920`。真实桌面浏览器通过独立 Chrome MCP 完成数据库、管理员、域名、DNS 与证书初始化。首次配置入口通过 SSH 隧道访问;正式登录与刷新访问真实域名,不使用浏览器强制域名解析。 初始化完成后使用正常配置接口将本次 Nginx 反向代理的公网 HTTPS 端口设置为 443,内部 HTTPS 端口保持 8002。第一次初始化自动跳转曾指向内部端口;设置公网端口后,正式入口不再依赖该端口。 配置保存后 `config_records` 出现一条历史记录。服务重启后检查结果: - `PRAGMA integrity_check` 返回 `ok`。 - 业务表、用户、会话、邮件和配置历史位于同一个 `smail.db`。 - 运行目录中只有一个数据库文件,没有再次生成 `smail-state.db`。 - 历史记录保留,浏览器刷新后仍显示已登录的超级管理员。 证据:`clean-deploy.log`、`live-final-runtime.log`、`live-restart-mail.log`。 ## 域名、证书与邮件边界 本次主域和后台域配置正确。公共 DNS 查询确认根域、后台及随机子域均指向测试服务器;现有 MX、SPF、DKIM、DMARC 保留,没有为了匹配向导示例覆盖既有邮件路由。DKIM 公钥与初始化页面展示值一致。 证书 SAN 包含根域和泛域,TLS 主机名与信任链校验通过。Nginx 上游证书校验保持启用,项目证书同步服务执行成功,监视单元已恢复。 本机系统 DNS 曾返回代理使用的地址,命令行 HTTPS 握手失败;独立浏览器通过正常域名成功打开并登录。二者属于不同访问路径,不能据此宣称所有本机网络客户端均已通过。 邮件冒烟测试验证了本机 SMTP 接收、邮件与用户关联落库、后台列表展示,以及 SMTP TLS、IMAP TLS、POP3 TLS 的证书验证和协议欢迎响应。测试邮件最终状态为“已删除”,不在收件箱;本次未单独审计该分类策略原因,也没有放宽安全策略来制造成功结果。 本次没有验证外部收件服务的最终到达,也没有执行三种数据库各自完整的浏览器初始化、完整真实跨库切换链或 IMAP/POP3 身份认证收信,不将上述内容列为已通过。 ## 清理与其他项目 本轮专用 MySQL、PostgreSQL 测试数据库和账号已删除,查询确认均不存在;远程 `/opt/smail-single-db-test` 已移除。没有清理正式测试部署的唯一业务数据库。 核对后 Scert、FDM、MySQL、PostgreSQL、Nginx 主进程 PID 与清理前一致,均处于运行状态。Smail 服务及证书同步监视单元正常。 证据:`test-resource-cleanup.log`。原有 `云端全项目测试报告.md` 的未提交修改未覆盖,本报告单独记录本轮范围。 ## 旧部署升级说明 旧双库部署必须停服升级。导入并验证成功后,旧状态文件保留为不再打开的迁移原件 `data/migration-history/smail-state.retired`,不是第二个运行数据库。全新部署不生成该原件。本次未针对旧进程并发运行进行升级测试,不能跳过停服要求。