用 Amazon SES 构建的大规模邮件发送基础设施 - 到达率优化与发送信誉管理
解说使用 SES 发送邮件的设置、DKIM/SPF 认证、退信与投诉处理以及发送信誉管理。
SES 概述
SES 是基于云的大规模邮件收发服务。它用于发送事务性邮件(订单确认、密码重置)、营销邮件(新闻通讯、营销活动)和通知邮件(告警、报告)。费用已于 2026 年 7 月 21 日改为价格方案制(Essentials / Pro / Enterprise)。新账户改为从 Essentials 方案开始(单价见后文的“SES 的费用”一节)。作为发送协议,SES 同时支持 SMTP 接口和 AWS SDK。通过 SDK 时使用当前一代 SES API v2 的 SendEmail(通过 content 切换 simple / raw / template)。(在旧一代的 v1 中,SendEmail 和 SendRawEmail 是分开的 API。)从现有邮件系统迁移时使用 SMTP,在新应用程序中集成时使用 SDK,按场景区分。SES 的基础设施在多个 AWS 区域运行,每个区域独立管理发送信誉。
到达率与发送信誉
要提高邮件的到达率,DKIM、SPF、DMARC 的认证设置必不可少。SES 通过 Easy DKIM 自动添加 2048 位的 DKIM 签名(无论 API 还是控制台,2048 位都是默认值),并借助自定义 MAIL FROM 域名通过 SPF 认证。通过将 DMARC 策略发布到 DNS 来保护域名免受伪造邮件的冒用。发送信誉的管理按两级阈值来考虑。退信率达到 5% 以上或投诉率达到 0.1% 以上时,账户会成为审核(under review)的对象。退信率达到 10% 以上或投诉率达到 0.5% 以上时,会导致发送暂停(sending paused)。账户状态按 Healthy / Under review / Pending end of review decision / Sending paused / Pending sending pause 的阶段显示。因此,超过 5% 或 0.1% 并不意味着立即停止发送,但如果在审核期间未能改善,就会进入暂停。SES 在账户仪表板的信誉指标中显示退信率和投诉率,接近阈值时可以通过 CloudWatch 告警发出通知。通过 SNS 通知实时接收退信和投诉,并构建用 Lambda 将其从发送列表中自动删除的工作流。退信分为硬退信(收件地址不存在)和软退信(邮箱已满等),硬退信立即登记到抑制列表,软退信在重试后再判断。
- 1. 监控在仪表板上查看退信率和投诉率。接近阈值(退信率 5%、投诉率 0.1%)时,通过 CloudWatch 告警发出通知。
- 2. 接收通过 SNS 通知实时接收退信和投诉。
- 3. 删除用 Lambda 将相应的地址从发送列表中自动删除。
- 4. 分类处理硬退信(收件地址不存在)立即加入抑制列表。软退信(邮箱已满等)在重试之后再判断。
模板与接收规则
SES 的邮件模板使用 Handlebars 语法嵌入动态内容。借助 SES API v2 的 SendBulkEmail(旧一代 v1 中为 SendBulkTemplatedEmail)批量发送大量个性化邮件。通过接收规则集自动处理接收的邮件,并可以设置保存到 S3、执行 Lambda、通知 SNS 以及与 Amazon WorkMail 集成。Virtual Deliverability Manager 在仪表板上可视化发送邮件的到达率,并提供改善退信率和投诉率的建议。配置集将邮件发送的事件(发送、送达、退信、投诉、打开、点击)分发到 CloudWatch、Amazon Data Firehose、Amazon EventBridge、SNS,执行发送分析。(Amazon Data Firehose 是在 2024 年 2 月之前名为 Kinesis Data Firehose 的服务。)
SES 的费用
(截至 2026 年 8 月 / 弗吉尼亚北部和东京)SES 的费用已于 2026 年 7 月 21 日改为价格方案制,目前由价格方案和传统的按量计费两种方式组成。价格方案有 Essentials / Pro / Enterprise 三种。Essentials 没有每月固定费用,每发送 1,000 封为 0.16 美元。每月超过 1,000 万封的部分降为每 1,000 封 0.14 美元,超过 1 亿封的部分降为 0.11 美元(弗吉尼亚北部和东京价格相同)。Pro 每发送 1,000 封为 0.22 美元(超过 1,000 万封为 0.17 美元,超过 1 亿封为 0.12 美元),此外每个账户与区域的组合每月收取 105 美元。方案中包含托管专用 IP 和 Virtual Deliverability Manager。Enterprise 每 1,000 封为 0.23 美元(超过 1,000 万封为 0.18 美元,超过 5,000 万封为 0.13 美元)+ 每月 500 美元。自 2025 年 6 月 1 日起没有 SES 计费使用量的账户与区域的组合,从 2026 年 7 月 21 日起从 Essentials 方案开始。按量计费是改版前就在使用的现有账户可以继续选择的方式,每发送 1,000 封为 0.10 美元(发送来源是否为 EC2 不影响单价)。SES 自有的免费套餐原为从开始使用起 12 个月、每月 3,000 message charges。但自 2026 年 7 月 21 日起不再向新客户提供,已并入 AWS Free Tier 的抵扣额度。附件与方案无关,每 GB 收取 0.12 美元。专用 IP 有两类,标准专用 IP 每个 IP 每月 24.95 美元。托管专用 IP 则是每个账户每月 15 美元 + 每发送 1,000 封 0.08 美元(超过 1,000 万封为 0.04 美元,超过 5,000 万封为 0.02 美元,超过 1 亿封为 0.004 美元)的另一套计费体系。Virtual Deliverability Manager 在按量计费方式下为每发送 1,000 封 0.02 到 0.07 美元。在 Essentials 和 Pro 方案中,可以在不支付额外费用的情况下使用。(将监控范围扩展到 SES 以外域名的 Global sending monitoring 是每月 1,250 美元的另一项订阅。)接收按 Mail Manager 中的邮件处理计费,用量阶梯独立于发送计算。按量计费方式的处理费用在弗吉尼亚北部和东京均为每 1,000 封 0.15 美元(截至 2026 年 8 月)。使用存档时,东京的存储每 GB 每月 0.19 美元,专用接收端点每月 50 美元,均另行收费。
设计最佳实践与常见陷阱
本节整理在生产环境中运行 SES 时经常出现的设计要点,以及容易忽视的陷阱。抑制列表的管理是最重要的。除了账户级别的抑制列表,还在应用程序一侧维护独立的抑制列表,彻底防止向已退信的地址再次发送。使用专用 IP 时需要预热,如果选择托管专用 IP,SES 会一边观察发送量一边自动推进预热。自行管理标准专用 IP 时,按照官方文档的预热计划逐步提高发送量(所需的时间和节奏因目标发送量和接收方的反应而异,因此无法用统一的天数来决定)。将配置集的事件通知目标设为 Amazon Data Firehose,并在 S3 中积累日志,可以分析到达率的长期趋势。在沙箱模式下只能向已验证的地址或域名(以及邮箱模拟器)发送,并且有每 24 小时 200 封 / 每秒 1 封的上限,因此在迁移到生产环境前提交解除发送限制的申请。支持团队的首次答复通常在 24 小时以内,如果 AWS 一侧需要额外确认,获得批准还要花更多时间。沙箱状态在每个区域相互独立,因此每增加一个发送区域都需要提出申请。DMARC 策略先以 p=none 进行监控,分析报告后再逐步加强到 p=quarantine 或 p=reject,这样是稳妥的做法。
与其他邮件发送服务的比较
将 SES 与其他邮件发送方式进行比较。与 SendGrid 和 Mailgun 不同,SES 的优势在于与 AWS 生态系统的原生集成(Lambda 触发器、S3 存储、CloudWatch 指标)。另一方面,SendGrid 具备完善的营销模板 GUI 编辑器和 A/B 测试等功能。与本地部署的 Postfix / SMTP 中继相比,SES 会自动完成 IP 信誉管理和退信处理,因此运维负担大幅降低。曾经是邮件发送选项之一的 Amazon Pinpoint 已于 2025 年 5 月 20 日停止受理新客户,并计划于 2026 年 10 月 30 日结束支持。对于邮件发送,AWS 建议迁移到 SES,而端点 / 细分 / 营销活动 / 旅程等互动功能则被引导迁移到 Amazon Connect 的外呼营销活动。因此,在新的设计中,事务性邮件和营销邮件都通过 SES 发送,细分管理和发送调度由应用程序一侧或 Amazon Connect 一侧负责。SNS 的 Email 订阅面向简易通知,仅用于不需要 HTML 模板和退信管理的简单通知。
总结
引入 SES 时,从沙箱模式下的发送测试开始,经过解除发送限制的申请后转入生产运行。要维持到达率,DKIM 和 SPF 的认证设置、构建退信与投诉的处理流程以及监控发送信誉都必不可少。基本做法是在退信率和投诉率达到审核阈值(5% / 0.1%)之前采取措施。通过 Virtual Deliverability Manager 的仪表板跟踪到达率的变化,及早发现问题的征兆。大量发送时,用专用 IP 地址隔离信誉,并经过预热逐步增加发送量(如果选择托管专用 IP,可以把预热交给 SES 一侧的自动控制)。
参考资料(AWS 官方)
本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。
如本页内容与官方文档不一致,请以官方文档为准。