SES子域名无法接收邮件:Terraform配置故障排查求助
AWS SES邮件接收配置故障排查
Terraform配置代码
locals { emails-chat-replies-domain = "dev.chat.mydomain.com" ses-smtp-domain = "inbound-smtp.eu-west-1.amazonaws.com" } resource "aws_ses_domain_identity" "chat-replies" { provider = aws.eu-west-1 domain = local.emails-chat-replies-domain } resource "aws_route53_record" "chat-replies-amazonses-verification-record" { provider = aws.eu-west-1 zone_id = data.aws_route53_zone.mydomain.zone_id name = "_amazonses.${aws_ses_domain_identity.chat-replies.id}" type = "TXT" ttl = "600" records = [aws_ses_domain_identity.chat-replies.verification_token] } resource "aws_ses_domain_identity_verification" "chat-replies-verification" { provider = aws.eu-west-1 domain = aws_ses_domain_identity.chat-replies.id depends_on = [aws_route53_record.chat-replies-amazonses-verification-record] } resource "aws_route53_record" "chat-replies-mx" { provider = aws.eu-west-1 zone_id = data.aws_route53_zone.mydomain.zone_id name = local.emails-chat-replies-domain type = "MX" ttl = "600" records = ["10 ${local.ses-smtp-domain}."] } resource "aws_ses_receipt_rule_set" "chat-replies" { provider = aws.eu-west-1 rule_set_name = "chat-replies" } resource "aws_ses_receipt_rule" "chat-replies" { provider = aws.eu-west-1 name = "${local.deployment-name}-chat-replies-store" rule_set_name = aws_ses_receipt_rule_set.chat-replies.id recipients = [local.emails-chat-replies-domain] enabled = true scan_enabled = true lambda_action { position = 1 function_arn = aws_lambda_function.ses-chat-replies.arn invocation_type = "Event" } }
邮件投递错误信息
地址未找到
你的邮件无法投递到azerty@dev.chat.mydomain.com,因为该地址不存在或无法接收邮件。报告邮件传输代理:dns; googlemail.com
来源邮件传输代理:dns; me@mycompany.com
到达时间:2023年3月10日 星期五 00:56:52 (PST,西八区)
原始邮件ID:aa10938b-34c1-febd-5fcc-8f2130f46d5c@mycompany.com最终收件人:rfc822; azert@dev.chat.mydomain.com
操作:失败
状态:5.1.1
远程邮件传输代理:dns; inbound-smtp.eu-west-1.amazonaws.com. (54.155.140.59,域名dev.chat.mydomain.com的服务器)
诊断代码:smtp; 550 5.1.1 请求操作未执行:邮箱不可用
最后尝试时间:2023年3月10日 星期五 00:56:53 (PST,西八区)
DNS MX记录查询结果
; <<>> DiG 9.18.12 <<>> dev.chat.mydomain.com MX ;; 全局选项:+cmd ;; 收到响应: ;; ->>头部<<- 操作码:QUERY,状态:NOERROR,ID:21674 ;; 标志:qr rd ra;查询数:1,回答数:1,授权数:0,附加数:1 ;; OPT伪段: ; EDNS:版本:0,标志:;UDP:1472 ;; 查询段: ;dev.chat.ninefive.io. IN MX ;; 回答段: dev.chat.mydomain.com. 600 IN MX 10 inbound-smtp.eu-west-1.amazonaws.com. ;; 查询耗时:21毫秒 ;; 服务器:192.168.0.254#53(192.168.0.254) (UDP) ;; 查询时间:2023年3月11日 星期六 12:35:33 CET(中欧时间) ;; 接收消息大小:101
排查提示
- 确认规则集是否为活跃状态:SES不会自动使用新建的规则集,必须将
chat-replies规则集设置为默认活跃规则集。可添加以下Terraform资源实现:resource "aws_ses_active_receipt_rule_set" "chat-replies-active" { provider = aws.eu-west-1 rule_set_name = aws_ses_receipt_rule_set.chat-replies.id } - 检查域名验证状态:登录AWS控制台SES服务,查看
dev.chat.mydomain.com的验证状态是否为"已验证"。验证未完成的话,SES会拒绝接收该域名的邮件。 - 添加Lambda调用权限:SES需要被授权调用目标Lambda函数,否则无法触发。添加以下权限配置:
resource "aws_lambda_permission" "ses_chat_replies" { provider = aws.eu-west-1 statement_id = "allow_ses_invoke" action = "lambda:InvokeFunction" function_name = aws_lambda_function.ses-chat-replies.function_name principal = "ses.amazonaws.com" source_arn = aws_ses_receipt_rule.chat-replies.arn } - 查看SES接收日志:在CloudWatch Logs中找到SES的接收日志组(通常命名为
/aws/ses/receiving),查看具体的邮件处理日志,可定位规则不匹配、权限不足等问题。 - 确认收件规则配置:检查收件规则的
enabled属性是否为true,recipients列表是否正确包含dev.chat.mydomain.com,同时确认没有其他规则拦截该域名的邮件。 - 检查区域一致性:确认所有SES资源(域名验证、规则集、收件规则)都部署在eu-west-1区域,且MX记录指向的是该区域的SES inbound服务器。
内容的提问来源于stack exchange,提问作者GlinesMome
相关产品推荐
相关产品推荐

