mail-send-failure

20260916-181749 轮 · 看它的历史
靶子 容器=wt_h8_tp8(端口 20098)

=== T0 · 前置:投毒生效(不生效的话下面每一条都在验"发信成功",方向正好相反) ===
  PASS  smtp_host 已被临时改成 127.0.0.1


                                                                                            
  [think\db\exception\PDOException]                                                         
  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'jnc_ma.jnc_log' doesn't exist  
                                                                                            


Exception trace:
 () at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:867
 think\db\PDOConnection->getPDOStatement() at /var/www/html/vendor/topthink/think-orm/src/db/connector/Mysql.php:68
 think\db\connector\Mysql->getFields() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:444
 think\db\PDOConnection->getTableFieldsInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:401
 think\db\PDOConnection->getCachedSchemaInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:363
 think\db\PDOConnection->getSchemaInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:430
 think\db\PDOConnection->getTableInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:482
 think\db\PDOConnection->getPk() at /var/www/html/vendor/topthink/think-orm/src/db/Query.php:327
 think\db\Query->getPk() at /var/www/html/vendor/topthink/think-orm/src/db/concern/WhereQuery.php:43
 think\db\BaseQuery->where() at /var/www/html/app/CorpDb.php:74
 app\CorpDb::base() at /var/www/html/app/common.php:3031
 corpCount() at Standard input code:1




                                                                                            
  [think\db\exception\PDOException]                                                         
  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'jnc_ma.jnc_log' doesn't exist  
                                                                                            


Exception trace:
 () at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:867
 think\db\PDOConnection->getPDOStatement() at /var/www/html/vendor/topthink/think-orm/src/db/connector/Mysql.php:68
 think\db\connector\Mysql->getFields() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:444
 think\db\PDOConnection->getTableFieldsInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:401
 think\db\PDOConnection->getCachedSchemaInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:363
 think\db\PDOConnection->getSchemaInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:430
 think\db\PDOConnection->getTableInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:482
 think\db\PDOConnection->getPk() at /var/www/html/vendor/topthink/think-orm/src/db/Query.php:327
 think\db\Query->getPk() at /var/www/html/vendor/topthink/think-orm/src/db/concern/WhereQuery.php:43
 think\db\BaseQuery->where() at /var/www/html/app/CorpDb.php:74
 app\CorpDb::base() at /var/www/html/app/common.php:2992
 corpSelect() at Standard input code:1



=== T1 · 换绑链(登录后):发信失败必须据实报错 ===
  PASS  响应 info==0(不再无条件 success)
  PASS  文案是「验证码发送失败…」
  PASS  没发出去就不写验证码缓存(不给用户一枚永远等不到的码)

=== T2 · 🔴 _send_mail 自己留下了观察点 ===


                                                                                            
  [think\db\exception\PDOException]                                                         
  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'jnc_ma.jnc_log' doesn't exist  
                                                                                            


Exception trace:
 () at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:867
 think\db\PDOConnection->getPDOStatement() at /var/www/html/vendor/topthink/think-orm/src/db/connector/Mysql.php:68
 think\db\connector\Mysql->getFields() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:444
 think\db\PDOConnection->getTableFieldsInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:401
 think\db\PDOConnection->getCachedSchemaInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:363
 think\db\PDOConnection->getSchemaInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:430
 think\db\PDOConnection->getTableInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:482
 think\db\PDOConnection->getPk() at /var/www/html/vendor/topthink/think-orm/src/db/Query.php:327
 think\db\Query->getPk() at /var/www/html/vendor/topthink/think-orm/src/db/concern/WhereQuery.php:43
 think\db\BaseQuery->where() at /var/www/html/app/CorpDb.php:74
 app\CorpDb::base() at /var/www/html/app/common.php:3031
 corpCount() at Standard input code:1


  FAIL  jnc_log 多了「_send_mail 发信失败」行(NaN → NaN)


                            
  [Error]                   
  Undefined constant "NaN"  
                            


Exception trace:
 () at Standard input code:1


  FAIL  日志内容是发信失败(且是本次运行新产生的行)  → (本次没有新行)
  FAIL  记了收件**域名**(排障要的那半)  → 
  FAIL  🔴 没记收件人本地部分(PII 不进 jnc_log)  → (本次没有新行)

=== T5 · 🔴 守卫:找回密码链**仍然**回统一文案(刻意的不对称,别改齐) ===
  PASS  匿名链响应仍是 info==1 的统一文案
  PASS  T5 前置:取得到服务端那句统一文案(取不到的话下面这条会恒真)
  PASS  🔴 没有把发信失败告诉匿名调用方,回的就是那句统一文案(否则开一条枚举通道)


                                                                                            
  [think\db\exception\PDOException]                                                         
  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'jnc_ma.jnc_log' doesn't exist  
                                                                                            


Exception trace:
 () at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:867
 think\db\PDOConnection->getPDOStatement() at /var/www/html/vendor/topthink/think-orm/src/db/connector/Mysql.php:68
 think\db\connector\Mysql->getFields() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:444
 think\db\PDOConnection->getTableFieldsInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:401
 think\db\PDOConnection->getCachedSchemaInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:363
 think\db\PDOConnection->getSchemaInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:430
 think\db\PDOConnection->getTableInfo() at /var/www/html/vendor/topthink/think-orm/src/db/PDOConnection.php:482
 think\db\PDOConnection->getPk() at /var/www/html/vendor/topthink/think-orm/src/db/Query.php:327
 think\db\Query->getPk() at /var/www/html/vendor/topthink/think-orm/src/db/concern/WhereQuery.php:43
 think\db\BaseQuery->where() at /var/www/html/app/CorpDb.php:74
 app\CorpDb::base() at /var/www/html/app/common.php:3031
 corpCount() at Standard input code:1


  FAIL  但运维侧照样看得到:jnc_log 又多一行(NaN → NaN)

=== T7 · 还原 ===
  PASS  smtp_host 已从库里重载回真值

=== T6/T8 · 守卫:还原后两条链都能正常发出(防把发信改成恒失败) ===
  PASS  换绑链恢复正常(真发 1 封)
  PASS  找回密码链恢复正常(真发 1 封)

PASS 10  FAIL 5