smtp-transport-config.php

20260916-201504 轮 · 看它的历史
  ✔ 隔离库 jnc_ma_e2e_h8 就绪(105 张表,缺列 0)
假 SMTP:chat=127.0.0.1:51052  silent=127.0.0.1:25259
A · smtpTransportConfig() 的回落与值域
  ✅ A1 两行都不存在 → 465 / ssl(老库行为不变)
  ✅ A2 587 / tls 原样读到
  ✅ A3 非法值 port='0' secure='ssl' → null
  ✅ A3 非法值 port='70000' secure='ssl' → null
  ✅ A3 非法值 port='abc' secure='ssl' → null
  ✅ A3 非法值 port='587' secure='foo' → null
  ✅ A3 非法值 port='' secure='ssl' → null
  ✅ A3 非法值 port='587' secure='' → null
B · 不加密 + 自定义端口:真发一封到假服务器
  ✅ 🔴 B1 _send_mail 返 true
  ✅ B2 假服务器收到连接 + EHLO
  ✅ B3 AUTH LOGIN 用的是库里的账号
  ✅ B4 AUTH LOGIN 用的是库里的密码(getCorpSecretRaw 解密后的明文)
  ✅ B5 MAIL FROM 是发件人
  ✅ B6 RCPT TO 是收件人
  ✅ B7 DATA 段里有 Subject
  ✅ 🔴 B8 「不加密」下没有发 STARTTLS(机会式升级已关)
  ✅ B9 耗时 < 10 秒(实得 0.07s)
C · STARTTLS:与 B 只差 smtp_secure 一格
  ✅ C1 假服务器不支持 TLS → _send_mail 返 false
  ✅ 🔴 C2 客户端发了 STARTTLS 命令(加密方式那一格真的被读了)
  ✅ C3 没有走到 AUTH(升级失败就停了,凭据没有明文送出)
D · SSL/TLS:一上来就握手
  ✅ D1 明文服务器上 TLS 握手失败 → _send_mail 返 false
  ✅ D2 服务器看到连接,但没有任何可读的 SMTP 命令(客户端在握手就断了)
  ✅ D3 耗时 < 10 秒(实得 0.04s)
E · 超时:对方 accept 了但一个字节都不回
  ✅ E1 _send_mail 返 false
  ✅ 🔴 E2 耗时落在 [10, 60] 秒(实得 15s;改前是 300 秒)
  ✅ E3 假服务器确实收到了那次连接
F · 存量非法值 fail-closed
  ✅ F1 smtp_port=0 → _send_mail 返 false
  ✅ F2 根本没有去连服务器(日志无新 CONNECT)
  ✅ 🔴 F3 jnc_log 里有一条「_send_mail 拒发」(不是静默回落 465)
G · 管理端「凭证与密钥」页
  ✅ G1 页面渲染出 SMTP 端口格且值来自库(2525)
  ✅ G2 加密方式下拉选中的是「不加密」
  ✅ G3 另外两项没被选中
  ✅ G4 POST 587 + tls → 提示修改成功
  ✅ 🔴 G5 库里 smtp_port=587
  ✅ 🔴 G6 库里 smtp_secure=tls
  ✅ G7 端口 70000 被拒,提示点名端口范围
  ✅ G8 被拒时库里仍是 587
  ✅ G9 加密方式 foo 被拒
  ✅ G10 被拒时库里仍是 tls
  ✅ G11 守卫:老表单(不带这两格)保存成功
  ✅ G12 守卫:老表单不动 smtp_port
  ✅ G13 守卫:老表单不动 smtp_secure
  ✅ G14 再渲染:587 + STARTTLS 选中
H · 用户入口:注册发码链
  ✅ 🔴 H1 不加密 + 自定义端口下,用户看到「验证码已发送」(info=1)
  ✅ H2 响应文案是「验证码已发送」
  ✅ H3 假服务器收到给该邮箱的信
  ✅ H4 SSL 对明文服务器 → 用户看到发送失败(info=0)
  ✅ H5 响应文案是「验证码发送失败」
清理:
  ✅   配置 7 个 name 逐字节还原(含 update_time)
  ✅   假服务器文件已清

────────────────────────────────
PASS=50  FAIL=0
  ✔ 已销毁 jnc_ma_e2e_h8