AWS SES邮件接收「投递至S3」功能异常排查求助
AWS SES接收邮件存S3失败排查指南
可能遗漏的配置项
- 单个规则未激活:即使规则集显示激活,需确认对应的收件规则本身是否处于启用状态(SES控制台→接收邮件→规则集,查看规则的启用状态)。
- 区域不匹配:MX记录指向
ap-southeast-2区域的SES端点,但接收规则必须创建在同一区域——SES接收服务是区域级的,跨区域规则无法触发。 - 桶策略占位符未替换:你的S3桶策略中包含
<region>、<RECEIPT-RULE-SET>、<RECEIPT-RULE>等占位符,需替换为实际值(比如region改为ap-southeast-2,规则集/规则名称与控制台一致),否则条件校验失败,SES无法写入S3。 - 域名未开启接收功能:在SES控制台→已验证的身份,确认
sub.domain.com的接收邮件选项已开启(部分场景下验证域名后默认仅启用发送功能)。 - 收件人模式匹配问题:检查规则中的收件人模式
*@sub.domain.com是否与实际收件地址完全匹配,比如是否存在拼写错误(如sub.domain.com是否为已验证的身份)。
额外调试步骤
- 查看SES接收日志:
- 进入SES控制台→监控→邮件流,查看是否有目标邮箱的接收记录,排查是否存在拒绝/丢弃原因。
- 开启SES接收日志到CloudWatch:在SES控制台→配置→接收日志,指定CloudWatch日志组,可获取详细的邮件接收、规则匹配、S3写入过程日志。
- 内部邮件测试:使用SES控制台的「发送测试邮件」功能,直接发送到
test@sub.domain.com——绕过外部邮件服务器,验证规则是否能触发S3写入。若内部测试成功,问题大概率出在外部邮件服务器的DNS解析或投递逻辑。 - 重新生成桶策略:在SES控制台的规则编辑页面,选择S3动作时点击「生成桶策略」,直接复制生成的策略覆盖现有S3桶策略,避免手动编写的语法或变量错误。
- 检查SPF记录:虽然不是接收必需,但部分邮件服务器会拒绝SPF记录不包含SES的邮件。确保
sub.domain.com的SPF TXT记录包含include:amazonses.com。 - 验证IAM角色(若使用):如果配置了IAM角色而非桶策略,确认角色的信任策略允许
ses.amazonaws.com扮演该角色,且角色拥有s3:PutObject权限到目标S3桶。 - 检查账户接收限制:新AWS账户可能存在SES接收额度限制,可在SES控制台→限制页面查看是否需要申请提升额度。
内容的提问来源于stack exchange,提问作者Shahryar Faraji
相关产品推荐
相关产品推荐

