smtp-transport-config.php
✔ 隔离库 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