AWS SES含无效CC地址邮件发送逻辑咨询
结论先行:不会像部分传统SMTP服务那样正常发送,AWS SES的处理逻辑更严格
很多常规SMTP服务的做法是:只要主收件人(To)地址有效,会先把邮件投递到有效收件人的邮箱,然后单独给发件人退回一封包含无效CC/BCC地址的退信邮件。但AWS SES的规则不一样——它会在邮件提交的DATA命令阶段就对所有收件人(To/CC/BCC)做严格的域名有效性校验:
- 只要其中任何一个地址的域名不符合规范(比如你例子里的
no-reply.111.111.111.111,这是错误的域名格式,本质是把IP当作域名使用还多了一段),SES会直接拒绝整个邮件请求,返回554 Transaction failed类的错误,不会给任何有效收件人投递邮件。
你收到的错误日志就是典型的这种情况:
Jan 25 02:19:27 111-111-111-111 postfix/smtp[17111]: C2B522A17EB: to=, relay=email-smtp.us-west-2.amazonaws.com[111.111.111.111]:587, delay=1.6, delays=0.01/0.05/1/0.5, dsn=5.0.0, status=bounced (host email-smtp.us-west-2.amazonaws.com[111.111.111.111] said: 554 Transaction failed: Invalid domain name: 'no-reply.111.111.111.111'. (in reply to end of DATA command))
SES在DATA命令结束时检测到CC地址的域名无效,直接 bounce 了整个邮件,所以有效To地址cwo@facebook.com也收不到这封邮件。
这种严格校验是SES合规和反垃圾策略的一部分,目的是减少无效投递、维护发件人信誉,避免邮件被标记为垃圾邮件。
内容的提问来源于stack exchange,提问作者cwo

