补齐认证版本部署与远程隔离验收记录
Some checks are pending
Security Checks / security (push) Waiting to run

This commit is contained in:
smail 2026-09-17 15:21:42 +08:00
parent fac4c45aac
commit e14c538322
3 changed files with 39 additions and 4 deletions

View File

@ -10,7 +10,7 @@
12:39 已部署认证容量与前端重试版本 `review-d34ffdb7d1f6`。前端 23 个文件、182 项测试通过,旧版 958 项结果不得作为新版全量通过的依据。随后空数据副本通过正式初始化接口、HTTPS 登录、三协议授权码登录及中文附件收信,但真实 POP3 过载响应失败,不能将此前业务层测试等同于完整协议验收。
13:05,POP3 与 SMTP 错误分类修复的三包远程回归共 48 项通过,无跳过。候选版本 `review-b47f36643547` 正在进行部署前隔离验收,尚未替换线上程序;生产容量、资源规划和正式浏览器验收仍未通过。
13:05,POP3 与 SMTP 错误分类修复的三包远程回归共 48 项通过,无跳过。13:10 同版候选程序通过空数据副本初始化、真实协议及三轮混合认证过载恢复;随后完成备份部署,线上为 `review-b47f36643547`。13:12 部署后内部 SMTP 五项真实收信、产物摘要、双库和安全边界复核通过。生产容量、资源规划和正式浏览器验收仍未通过。
## 任务状态
@ -27,11 +27,11 @@
| PROD-009 | P1 | 备份与恢复演练 | [x] | 同机独立网络和挂载空间恢复、HTTPS、内部 SMTP 入库通过;异机恢复未演练 |
| PROD-010 | P1 | 内部 SMTP 与部署后安全回归 | [✓] | 五项真实收信、双库、产物、未认证 API 均通过 |
| PROD-011 | P1 | 全量测试、竞态、数据库兼容性和压测 | [~] | 60 包分批执行、958 个顶层用例通过;8 处跳过单列,竞态、真实跨库和容量验收未完成 |
| PROD-012 | P1 | 最新版本清库首次安装验收 | [~] | 空数据副本正式初始化 API 和协议收信通过;候选程序复测及真实浏览器首次安装待验收 |
| PROD-012 | P1 | 最新版本清库首次安装验收 | [~] | 新部署产物的空数据副本正式初始化 API、协议收信和认证过载恢复通过;真实浏览器首次安装待验收 |
| PROD-013 | P0 | 共享主机资源隔离与容量 | [!] | 首轮测试期间发生全机 OOM,MySQL 被终止后自动重启;必须补齐资源规划 |
| PROD-014 | P1 | 投递结果写库恢复 | [✓] | 12 项远程测试及源码复审通过;持久故障后的进程退出仍需人工核对,不代表生产故障演练通过 |
| PROD-015 | P1 | 跨平台证书路径与插件测试 | [✓] | Linux 拒绝异平台路径误解析;保持证书校验、托管导入和插件目录权限要求 |
| PROD-016 | P0 | 密码计算全局并发和过载处理 | [~] | 保留 Argon2id 64 MiB 参数;修复真实 POP3 响应被覆盖及 SMTP 错误凭据误报 454,48 项远程回归通过,候选程序过载复测进行中 |
| PROD-016 | P0 | 密码计算全局并发和过载处理 | [✓] | 48 项远程回归及新部署产物三轮真实混合认证过载恢复通过;区分 SMTP 535/454、IMAP UNAVAILABLE、POP3 SYS/TEMP,不代表生产容量或浏览器验收通过 |
状态含义:`[ ]` 未开始,`[~]` 进行中,`[x]` 已完成待复审,`[✓]` 指定范围复审通过,`[!]` 暂缓或存在阻塞。

View File

@ -443,3 +443,38 @@ TLS 前未公布 AUTH,主动尝试明文 AUTH 返回 523。未认证外域邮
启动前另有三次工具或环境失败:SSH 命令引号传递错误、可用内存低于 256 MiB 门槛被拒绝、Windows 归档解压后的三份测试程序缺少执行权限。均保留记录,前两次未启动用例,权限修正仅涉及明确的三份测试产物。没有降低内存门槛或停止其他服务。
候选程序已支持从受保护的暂存路径验收,校验 Linux ELF、SHA-256 和目录权限,测试后同时核对线上程序摘要及服务状态未改变。探测器逐轮保存过载证据,并新增真实 SMTP 错误凭据 535 断言。候选版本的隔离验收及部署结果待追加,不以三包回归代替全量或生产容量验收。
### 候选程序完整复测与部署
候选双程序从提交 `b47f366435475e4521ff6722f178fbee19fecdc6` 构建。首份本地产物的工具链元数据误读了根目录 Go 1.26.2,未上传或部署;改为从后端模块读取真实 Go 1.26.6 后,在独立 `out/release-review-b47f36643547-verified` 目录重建双程序,核对实际 Go 构建信息、Linux amd64 平台和构建前后源码指纹。
| 项目 | 值 |
| --- | --- |
| 版本 | `review-b47f36643547` |
| 构建时间 | `2026-09-17T05:07:01Z` |
| 源码指纹 | `5e932ea9ab882c591eeccffb1e16fc4e9c5607066f78808d25a52a1ed5de8565` |
| 主程序 SHA-256 | `956f7aeb64f8ad8b1672b58890dd64834a5fd088262e7942c1b9a07567c1fcb5` |
| 管理工具 SHA-256 | `9d80fe5d8ed901e1ddfca88fcb7aba4da4440fe3f51f480bc6aba2249f6b5f35` |
`/var/tmp/smail-review-runtime-20260917-130738` 的所有业务探测通过,随后汇总器将 SQLite `fetchall()` 元组与列表比较导致收尾失败。修正工具断言后,没有改动候选双程序,重新建立全新副本 `/var/tmp/smail-review-runtime-20260917-131021` 完整复测,探测器与汇总器均退出 0。
| 验收内容 | 最终结果 |
| --- | --- |
| 首次安装 | 空业务库、初始化令牌要求、正式配置接口、HTTPS 登录及会话通过 |
| 客户端认证 | SMTP、IMAP、POP3 完整邮箱与授权码登录通过,明文 SMTP AUTH 被拒绝 |
| 错误凭据 | 真实 SMTP 返回 `535 5.7.8`,不误报繁忙 |
| 内部收信 | `127.0.0.1:25` 中文正文和附件真实入库,唯一指定用户关联 |
| 三轮混合认证 | 每轮 4 个协议认证加 4 个 HTTP 登录;均观察到成功与繁忙,后续协议和网页 API 登录恢复 |
| 繁忙语义 | SMTP 454、IMAP UNAVAILABLE、POP3 SYS/TEMP;HTTP 503、AUTH_BUSY 和 Retry-After |
| 隔离证据 | 测试邮件不在线上库;线上主程序摘要和三服务 PID、重启计数均未变 |
| 资源和收尾 | 约 25.71 秒,副本峰值 79,089,664 字节,双库完整性均正常,新增 OOM 为 0;临时服务已停止 |
三轮均为一个认证成功、七个请求收到繁忙响应,成功认证约 1.15 至 1.41 秒,繁忙请求约 0.016 至 0.324 秒。该数据只说明给定限额下的过载拒绝与恢复,不是生产吞吐、延迟承诺或最大并发容量。
13:11 开始停服备份并部署上述已验收双程序。备份目录 `/var/backups/smail-before-outbox-20260917-131139`,归档 SHA-256 为 `cc7e712506e1eed26b92587147d9b7da4768653c3df16dc6bb7c2b811edf37d9`。保留线上双库,未清库或删除文件,未触发失败回滚;后续工具与文档提交不改变已部署产品源码。
13:12 在已部署实例内部 25 端口完成五项 TLS 1.3 收信检查:中文纯文本 ID 38、HTML/中文附件/双收件人 ID 39、管理员专属附件 ID 40、未知本域管理员兜底 ID 41、未认证外域管理员兜底 ID 42。正文、附件名称和字节、收件人归属均一致;外域用例没有出站记录。SMTP 前双库备份和结果保存在 `/var/backups/smail-internal-smtp-20260917-131256`。此项是保留数据部署回归,不冒充清库首次安装。
部署后 Smail `active/running`,PID `563364`、重启计数 0;MySQL PID `549584`、Scert PID `530794` 均未改变,重启计数仍为 1 和 0。双库完整性正常,迁移 23,队列为空,恢复 socket `0600`,未认证用户信息与邮件列表业务码均为 403。双程序摘要与上表一致,13:11 以后没有新增 OOM。
本轮完成协议错误分类、完整响应回归、空数据 API 安装与混合认证过载恢复、备份升级及内部 SMTP 回归。可信 TLS、真实浏览器安装和发信闭环、正式超管恢复交互及撤销、泄露凭据处置、生产资源预算、竞态及跨库、异机恢复等门槛仍未验收,不能签署生产放行。

View File

@ -136,7 +136,7 @@ def main():
(target / 'result.json').write_text(json.dumps(result, ensure_ascii=False, indent=2), encoding='utf-8')
print(json.dumps(result, ensure_ascii=False, indent=2))
assert result['live_unchanged'] and result['oom_events'] == 0
assert result['integrity'] == {'smail.db': [['ok']], 'smail-state.db': [['ok']]}
assert result['integrity'] == {'smail.db': [('ok',)], 'smail-state.db': [('ok',)]}
if __name__ == '__main__':