用户点忘记密码后页面显示邮件已发出,等十分钟没有任何消息,连点三次结果一样,服务器上 sendmail 进程根本没启动。日志里能对上时间点,这种反而好排。

重置邮件和激活信走同一条本机发信通道,传输代理没运行或队列卡死时请求被静默丢弃,页面依旧给出成功提示。这一点先确认清楚,后面就不用反复试。

mailq | tail -5
systemctl status postfix
# 队列长期堆积说明投递不出去

「密码重置邮件未收到」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

处理上按这个顺序:先确认本机传输代理是否在运行;改走带认证的外部 SMTP 通道;对重发做限流避免被收件方当成骚扰。

结果对不对很好判断,重置信一分钟内到达,mailq 队列清空不再持续堆积。

作者 9823189