发信日志里出现 550 5.7.1 relaying denied,认证是通的,只有发往外部域名的信被拒收。日志里能对上时间点,这种反而好排。
认证账号与 From 里的发件地址不属于同一域,服务器按防伪造规则拒绝替别人的域代发信件。这一点先确认清楚,后面就不用反复试。
swaks -t a@b.com -f you@example.com -s smtp.example.com # 看是否仍回 550 relaying denied
「SMTP 550 发件人被拒」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。改完隔一天再看一次,当场正常不代表能稳住。
处理上按这个顺序:把 From 换成认证账号同域地址;需要别名时在邮局里先加授权;确认 Reply-To 不参与这项校验。
结果对不对很好判断,外部地址能收到测试信,日志里不再出现 relaying denied。
