用途:配置 Amazon SES 接收入站邮件,并通过 SNS 以 HTTPS webhook 投递,常用于 AI 邮件代理、邮件转工单系统和入站邮件解析 API。
前提条件:已安装 AWS CLI(brew install awscli 或 pip install awscli);具备 SES 和 SNS 权限的 AWS 凭证;拥有可配置 DNS(MX 记录)的域名。凭证可通过环境变量 AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_DEFAULT_REGION 设置,或用 aws configure --profile ses-admin 后 export AWS_PROFILE=ses-admin。缺少凭证时应询问用户并停止。
区域限制:SES 入站邮件仅支持 us-east-1、us-west-2、eu-west-1。
主要流程:用 aws ses verify-domain-identity 验证域名并添加 TXT 记录;用 aws ses verify-domain-dkim 获取 3 个 DKIM token 并添加 CNAME;用 aws sns create-topic 创建主题;用 aws ses create-receipt-rule-set 和 aws ses create-receipt-rule 创建规则集与转发到 SNS 的规则;用 aws ses set-active-receipt-rule-set 激活规则集;用 aws sns subscribe 订阅 HTTPS 端点,注意使用 --notification-endpoint 而非 --endpoint。还需添加 MX 记录指向 inbound-smtp.<region>.amazonaws.com。
完成信号:规则集处于活动状态且 SNS 显示已确认订阅。等待 DNS 验证或订阅确认时继续;权限失败或凭证无效时报错。
webhook 需处理 SNS 订阅确认请求(检测 SubscriptionConfirmation 并 GET SubscribeURL),通知消息中 Message 字段含原始 MIME 邮件内容,需用 mailparser 或 email 等库解析。生产环境应验证 SNS 签名。可用 aws ses get-identity-verification-attributes 等命令检查状态,并用 dig 排查 DNS 问题。