From 6b83b56ea5cbdc3dd8bf37f13c2df61511874673 Mon Sep 17 00:00:00 2001 From: smail Date: Thu, 17 Sep 2026 21:53:52 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BD=95=E8=BF=9C=E7=A8=8B=E7=A9=BA?= =?UTF-8?q?=E5=BA=93=E9=AA=8C=E6=94=B6=E4=B8=8E=E5=86=85=E5=AD=98=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=95=B4=E6=94=B9=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/生产整改验收清单.md | 15 +++++++++++++ docs/生产资源部署说明.md | 10 +++++++++ docs/远程服务器测试记录.md | 34 +++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+) diff --git a/docs/生产整改验收清单.md b/docs/生产整改验收清单.md index 5c2166a..83d4f9a 100644 --- a/docs/生产整改验收清单.md +++ b/docs/生产整改验收清单.md @@ -2,6 +2,21 @@ ## 范围与结论 +### 最新复核:2026 年 9 月 17 日 21:51 + +本节优先于下方早期状态。已使用本次提供的访问凭据恢复受信任主机密钥校验的 SSH 连接,不再将 SSH 认证列为当前阻塞。凭据轮换、历史清理和访问审计仍未完成。 + +- [✓] 线上双程序摘要与 `review-2263779` 封存候选一致。 +- [✓] 新增资源策略 15 项 Python 回归和 Node 测试入口在远程受限单元通过,无跳过。 +- [✓] 最新程序在全新隔离副本通过正式初始化 API、HTTPS 登录会话、三协议授权码、内部 25 端口中文正文及附件入库、三轮混合认证过载恢复;双库完整性正常,无新增 OOM。 +- [✓] 停服备份后新增 systemd drop-in,运行进程确认 `GOMEMLIMIT=256MiB`;未修改原环境文件,未改变 384/512 MiB 内存限额。 +- [!] PROD-013:资源预检仍失败。21:51 可用内存约 312 MiB,服务增长至硬上限还需约 495 MiB,无法同时保留 128 MiB 系统预算。不能将小样本的约 84.1 MiB 峰值直接作为生产容量。 +- [!] PROD-006:当前证书为自签名,系统信任校验失败。 +- [ ] PROD-007、PROD-008、PROD-012:正式浏览器、网页持久投递闭环、完整本地 IPC 恢复撤销与浏览器首次安装未通过。服务器未检测到 Chromium/Chrome;没有改为本机测试或忽略证书错误。 +- [ ] 异机恢复、持续监控、生产容量及故障注入验收仍待完成。 + +结论:候选可继续隔离验收,不满足生产放行。线上数据库未清空;空数据副本用于本轮协议测试,不冒充线上清库或浏览器六步安装验收。详细证据见《远程服务器测试记录》最新章节。 + 本清单对应 2026 年 9 月 17 日 `D:\Desktop\Smail` 生产审查整改,验收服务器为 `47.108.78.12`。应用和自动测试只在该服务器执行,SMTP 按用户要求使用远程 `127.0.0.1:25`,不将公网 25 端口连通列为本轮通过条件。 当前版本已经完成凭据配置、SMTP 判定、MX 路由和网页持久投递队列的代码整改及针对性远程测试,但仍不建议直接生产上线。测试范围、版本摘要和备份位置以《远程服务器测试记录》最新章节为准。 diff --git a/docs/生产资源部署说明.md b/docs/生产资源部署说明.md index 8b1d3e4..00ad52b 100644 --- a/docs/生产资源部署说明.md +++ b/docs/生产资源部署说明.md @@ -2,6 +2,16 @@ ## 状态与边界 +### 2026 年 9 月 17 日 21:51 更新 + +以下早期“尚未远程执行”的描述已由本次证据更新:模板已部署,资源反例 15 项及 Node 入口已在 47 服务器通过;主服务通过新增 `/etc/systemd/system/smail.service.d/20-go-memory.conf` 设置 `Environment=GOMEMLIMIT=256MiB`,进程环境解析确认生效。原 `/etc/smail/smail.env` 未改动,仍为 `root:root`、`0600`;高水位、硬上限和系统保留预算未降低。 + +整改前资源预检的两项失败是缺少有效 Go 内存目标及主机余量不足;整改后仅剩主机余量不足。21:51 快照:可用内存 326,848,512 字节,服务当前控制组占用 18,100,224 字节,增长到 536,870,912 字节硬上限还需 518,770,688 字节,另需保留 134,217,728 字节。单次快照不能保障同机 MySQL、PostgreSQL、Scert 后续增长,不能据此宣布容量已通过。 + +停服备份位于 `/var/backups/smail-memory-20260917-2155`,归档已校验可读。配置回退应在维护窗口恢复已备份配置并停用本轮新增 drop-in,经 `daemon-reload`、重启及运行进程预检确认;不得自动删除备份或放宽硬限额。未触碰其他项目配置或数据。 + +完整远程记录位于 `/var/tmp/smail-review-acceptance-20260917-2140`。`resource-before.json` 与 `resource-after.json` 均为不通过证据,后一份对应工具退出码 1;`resource-tests-retry.log` 为测试通过证据。这些结果仍不等于生产批准。 + 本说明对应 2026 年 9 月 17 日的共享主机资源整改。以下配置和检查工具是待远程验收的候选变更,不表示已经部署到 47 服务器,也不是生产容量承诺。 - [x] 增加主服务资源上限、OOM 收尾与重启频率限制,等待远程复审。 diff --git a/docs/远程服务器测试记录.md b/docs/远程服务器测试记录.md index 8f61d1f..d4cee32 100644 --- a/docs/远程服务器测试记录.md +++ b/docs/远程服务器测试记录.md @@ -516,3 +516,37 @@ TLS 前未公布 AUTH,主动尝试明文 AUTH 返回 523。未认证外域邮 通用目录 `out/package/linux_amd64` 仍保留 9 月 6 日的旧 `release.json`,不得直接将该目录整体部署。没有删除旧文件;本轮以明确文件清单封存到新目录 `out/release-review-2263779-verified`,只包含双程序、当前回执和空 `config/ssl/data/log` 目录。封存名称中的 `verified` 仅表示静态核验,不代表生产验收。服务模板、安装脚本与资源预检仍应取自对应源码版本,不包含在该应用压缩包中。 待完成:恢复授权 SSH 访问;在远程执行新增测试和 systemd 策略核验;确认同机资源预算后备份、清理指定测试数据并部署;继续真实浏览器、内部 25 端口、恢复撤销、容量和备份恢复验收。发行打包脚本尚未自动拒绝错误目标架构或清除旧目录元数据,当前回执摘要不能替代部署前的平台和目录核验。 + +## 2026 年 9 月 17 日 21:28 至 21:54:远程续验与资源配置整改 + +### 范围和操作记录 + +本轮所有应用和测试均在 `47.108.78.12` 执行,本机只进行文件读取、Git 操作及配置和文档编辑。复核线上双程序摘要分别为 `f713bf71e1f21fae0d3cf31ca2d25771be6d207aea6e0ca3b791fd89ab46e5b9`、`390bdce2678dcbb6483a9b4f21db9297e207c4ea6244f429645e7c191e064656`,与封存候选一致,本轮没有重新构建或替换程序。 + +初始连接错误采用自动接受未知主机策略,后续改回仓库工具的已知主机校验并成功;该初始步骤不作为主机身份验收依据。21:31 错误使用主程序 `--version`,由于主程序未处理此选项而进入初始化,随后因本地控制目录属主不匹配退出。服务主 PID、重启计数及数据库属主未变,后续完整性检查不能证明此次初始化绝无逻辑数据影响;后续仅使用静态摘要取证。 + +### 远程测试结果 + +| 项目 | 结果 | +| --- | --- | +| 资源策略测试 | 15 项 Python 用例及 1 项 Node 入口通过,无跳过;远程单元硬限额 64 MiB | +| 首次测试启动 | 私有临时目录遮蔽 Node 路径,203/EXEC,未运行用例;通过只读绑定明确测试目录后重试通过 | +| 最新候选空库副本 | `/var/tmp/smail-review-runtime-20260917-214657`,正式初始化 API、令牌要求、HTTPS 登录与会话通过 | +| 三协议 | SMTP、IMAP、POP3 授权码登录通过;错误 SMTP 凭据返回 535;明文 AUTH 被拒绝 | +| 内部 SMTP | 隔离网络 `127.0.0.1:25` 收信,中文正文、中文文件名及附件内容一致,仅关联指定用户 | +| 认证过载 | 三轮各 8 请求,每轮 1 成功、7 繁忙,恢复成功;这是保护语义检查,不是容量承诺 | +| 资源 | 业务探测约 25.71 秒,副本峰值 88,178,688 字节,无新增 OOM | +| 隔离及收尾 | 线上不存在测试邮件;Smail、MySQL、Scert 的 PID 和重启计数在副本测试前后一致;临时服务已停止 | +| 副本双库 | `smail.db`、`smail-state.db` 完整性均为 `ok` | + +使用的新副本无原有业务库,测试没有清空线上数据库,也没有删除文件。证书由探测器显式信任且验证主机名,不能视为公开可信证书验收。没有执行真实浏览器、网页持久队列闭环、管理员 IPC 完整交互和异机恢复。 + +### 资源整改及备份 + +原备份 `/var/backups/smail-acceptance-20260917T130047Z/smail-state.tar.gz` 权限 0600,归档可读,SHA-256 与交接记录一致。新增停服备份 `/var/backups/smail-memory-20260917-2155/state.tar.gz` 可读、权限 0600,SHA-256 为 `84286aa0aacb0d3a9f9cab8e38cf9bc8093f2afbb2f50ca44b24348650334189`;同时保留原环境和 unit 文件。 + +新增 `/etc/systemd/system/smail.service.d/20-go-memory.conf`,仅配置 `GOMEMLIMIT=256MiB`。未编辑原环境文件,未减少高水位、硬上限或检查保留预算。重启后 PID 为 571735,Smail、MySQL、PostgreSQL、Scert 均 active。运行进程预检确认 Go 目标 268,435,456 字节、控制组 OOM 计数为零,unit 解析仅报告系统已忽略 CPUAccounting 的警告。 + +证据目录 `/var/tmp/smail-review-acceptance-20260917-2140` 保留整改前后资源报告及测试日志。整改后预检退出 1,仍有“服务增长到硬上限后,主机剩余预算不足”。当前约 312 MiB 可用内存,无法支持约 495 MiB 的剩余增长加 128 MiB 系统预算。未停止其他项目、创建交换空间或降低保留预算。 + +线上 `custom.crt` 的主题和颁发者均为 `solit.cn`,有效期为 2026 年 9 月 11 日至 2027 年 9 月 11 日,系统校验返回自签名错误 18。远程未检测到 Chromium/Chrome,未启动本地浏览器代替远程测试。生产仍受资源、可信 TLS、浏览器业务闭环、恢复撤销和持续运行证据缺失阻塞。