Smail/docs/加密端口配置优化.md
smail f98814d1cb
Some checks are pending
Security Checks / security (push) Waiting to run
优化加密配置端口自动联动并完成运行验收
2026-09-06 14:15:46 +08:00

48 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 加密端口配置优化
## 需求确认
- SMTP 中继选择加密方式后自动填写端口,不要求用户记忆常用端口。
- 网页加密方式联动内置 HTTPS 开关和端口,反代模式继续停用 Smail 自动证书签发与续期。
- 读取配置不覆盖自定义端口;SMTP 主动切换加密方式后填写推荐值,允许再次手动调整。
- 使用可视化表单,不新增 JSON 编辑入口,不修改当前业务数据库或邮件数据。
- 重新编译并运行项目,确认实际运行的是更新后的前端。
## 任务状态
- [✓] 检查当前分支、工作区与运行状态,提交并推送修改前检查点。
- [✓] 完成 SMTP 加密方式与推荐端口联动。
- [✓] 完成网页访问方式与 HTTPS 端口联动。
- [✓] 提供推荐值说明和一键恢复入口,保留手动输入。
- [✓] 63 项前端测试,以及配置、验证邮件、HTTP 服务三个后端包测试通过。
- [✓] 前端和后端构建完成,普通权限启动成功,浏览器实际操作验收通过。
## 配置规则
| 配置方式 | 推荐端口 | 行为 |
| --- | --- | --- |
| SMTP STARTTLS | 587 | 主动切换时自动填写 |
| SMTP 隐式 TLS / TLS 兼容模式 | 465 | 主动切换时自动填写 |
| SMTP 本机不加密 | 25 | 仅限回环地址;远程明文拒绝通过校验 |
| 内置 HTTPS | 443 | 自动开启内置监听;缺少端口时补全,保留有效的自定义端口 |
| 内置模式 HTTP | 80 | 缺少端口时补全 |
| 反代模式 HTTP | 8080 | 缺少端口时补全;已有监听端口不强制修改,HTTPS 端口归零 |
一键使用推荐端口只修改当前草稿,仍需完成校验、保存候选与应用流程。它不会立即重启服务,也不会更改反代服务器的配置。
邮件服务端口与 SMTP 中继端口不是同一组设置。本次不把收信端口 25 替换为客户端提交端口 465/587,也不把已有固定 TLS 监听伪装成可切换的加密模式。
## 验收范围
自动测试在 `test-log/` 下的独立空目录运行,不连接实际业务数据库。开发服务沿用根目录 `config/` 下的现有运行配置。本次不执行清空真实账号、邮件、凭据或密钥的操作,不将表单交互验收等同于外部邮件投递或生产反代验收。
## 验收记录
- 前端测试:`node test/run.mjs frontend`,63 项通过。
- 后端定向回归:`node test/run.mjs backend -count=1 ./config ./services/verification ./listen/http_server`,三个包通过。
- 构建:`powershell -NoProfile -ExecutionPolicy Bypass -File deploy/build.ps1`。
- 浏览器确认内置 HTTPS 自动补全、反代字段切换、四种 SMTP 选项的端口联动、自定义输入、恢复推荐值、远程明文错误提示。
- 重启后刷新保持登录;浏览器控制台无错误或警告,候选配置为空,当前配置未被测试草稿覆盖。
- 测试日志和交互记录位于 `test-log/`。本次未运行完整后端全量回归、真实邮件投递或生产反代端到端验收。
- 构建仍有部分资源包超过 500 kB 的体积警告,不影响构建成功;未将其描述为已消除。