使用 Amazon SES 配置 SMTP 邮件服务
您可以将 Amazon Simple Email Service(Amazon SES)配置为 NineData 组织的 SMTP 邮件服务,用于发送告警通知和 DevOps 任务状态邮件。本文介绍 SES 的准备工作,以及在 NineData 中填写认证信息、发件人地址和验证配置的方法。
前提条件
- 您已进入 NineData 组织,角色为系统管理员。本文适用于 SaaS 控制台的组织邮件配置。
- 您已准备 AWS 账号,并由具有相应 IAM 和 SES 权限的管理员管理发信身份及 SMTP 凭证。
- 您拥有可用于发信的邮箱或域名,并准备了一个可查看收件结果的测试邮箱。
- NineData 邮件服务所在网络能够连接目标区域的 SES SMTP 端点和所选端口。仅本地浏览器能够访问 AWS 控制台,不代表 SMTP 网络连接可用。
修改组织邮件服务会影响后续告警和 DevOps 通知。切换前,请按组织要求完成变更审批,并在安全位置保留原配置及可用凭证,以便失败时恢复。不要将 AWS 密钥、SMTP 密码或凭证文件写入文档、截图、工单或代码仓库。
准备 Amazon SES
1. 确定发信区域和端点
登录 Amazon SES 控制台,选定发信区域。在该区域查看 SMTP 设置,记录 SMTP 端点。SMTP 凭证、发信身份验证和端点必须对应同一区域。
SES 要求加密连接。常用的连接方式如下;不要选择未加密连接。
| SES 连接方式 | 常用端口 | 说明 |
|---|---|---|
| STARTTLS | 587 | 建立 SMTP 连接后升级为 TLS 加密连接。 |
| TLS Wrapper(SMTPS) | 465 | 建立连接时即使用 TLS 加密。 |
端点以所选区域的实际配置为准,连接方式和其他可用端口请参见 AWS SMTP 连接说明。
2. 验证发信身份
在所选区域创建邮箱或域名身份,并完成验证。邮箱身份需要通过收到的验证邮件完成确认;域名身份需要按 SES 提供的信息配置 DNS 记录。等待身份验证完成后再用于发信。更多信息,请参见 AWS 身份创建与验证。
请同时检查该区域的 SES 沙箱状态:
- 仍在沙箱中:测试收件地址或其域名也需要验证;AWS 邮箱模拟器是例外。
- 已获生产访问权限:收件人无需逐一验证,但发信身份仍须验证。
需要向未验证收件人发送组织通知时,先按 AWS 生产访问申请流程完成申请。生产访问权限按区域管理,不能根据另一区域的状态判断。
3. 获取 SMTP 凭证
您可以通过 SES 控制台创建专用 SMTP 凭证,或使用现有 IAM 用户的长期访问密钥派生凭证。具体操作请参见 AWS SMTP 凭证说明。
| 准备方式 | SMTP 用户名 | SMTP 密码 |
|---|---|---|
| 在 SES 控制台创建 SMTP 凭证 | 使用创建结果中的 SMTP 用户名。 | 使用创建结果中的 SMTP 密码。 |
| 从现有 IAM 访问密钥派生 | 使用该用户的 Access Key ID。 | 使用 Secret Access Key 和目标区域,按 AWS 提供的算法生成 SMTP 密码。 |
SMTP 密码不等于 Secret Access Key,也不等于 AWS 控制台登录密码。临时安全凭证不能用于派生 SES SMTP 凭证。请在受控环境中完成派生,并通过安全方式保管结果。
使用现有 IAM 用户时,由 AWS 管理员确认该用户具有 ses:SendRawEmail 权限。以下为 AWS 文档中的发信权限策略示例,可通过用户组授予专用发信用户:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ses:SendRawEmail",
"Resource": "*"
}
]
}
示例中的 Resource: "*" 不限定具体资源。请由 AWS 管理员按组织的授权范围审查策略;不要为 SMTP 发信用户直接授予管理员权限。
在 NineData 中配置
登录 NineData 控制台,进入需要配置邮件服务的组织。
在左侧导航栏,单击账户管理 > 组织信息。
找到消息通知配置区域,确认开关已开启,然后单击该区域的修改配置。
在邮件配置服务弹窗中填写以下参数。
参数 SES 配置说明 SMTP 服务地址 所选区域的 SMTP 端点主机名,不添加 https://。SMTP 端口 按连接方式填写端口,例如 587或465。SMTP 加密方式 使用 STARTTLS 时选择 TLS,使用 TLS Wrapper 时选择SSL。同时核对端口,不要选择None。发送邮件账号 SES SMTP 用户名;从 IAM 密钥派生时为 Access Key ID。这里用于认证,不填写发件邮箱地址。 发件人地址 填写已在同一区域验证的发件邮箱地址,例如 notifications@example.com。请替换为您自己的有效地址。SMTP 密码 SES SMTP 密码或按目标区域派生的 SMTP 密码,不填写原始 Secret Access Key。 收件人地址 填写可查看收件结果的测试邮箱。处于 SES 沙箱时,该邮箱或其域名也需通过验证。 备注SES 的认证用户名和发件邮箱用途不同。即使表单未将发件人地址标为必填,接入 SES 时也应明确填写已验证的发件邮箱,不能用 Access Key ID 代替邮箱地址。
单击测试发送与收件,检查页面提示,并到测试邮箱确认邮件是否收到。若页面报错,先按下文排查,不要保存失败的配置。发送成功提示和实际收件应分别确认。
确认测试结果后,单击确认保存。
常见问题
| 现象 | 检查方法 |
|---|---|
| SMTP 认证失败 | 检查用户名是否为 SMTP 用户名,密码是否为 SMTP 密码,以及凭证区域是否与端点一致。检查是否误用了原始 Secret Access Key 或临时凭证。 |
| 发信身份未验证或邮件被 SES 拒绝 | 检查发件人地址对应身份在当前区域是否完成验证。处于沙箱时,同时检查测试收件人身份。 |
| 没有发信权限 | 请 AWS 管理员检查发信用户的 ses:SendRawEmail 有效权限及适用的拒绝策略。 |
| 连接超时或 TLS 连接失败 | 检查端点、端口、加密方式及 NineData 服务端的网络出站规则。不要通过关闭加密来规避问题。 |
| 页面提示成功,但邮箱未收到 | 检查地址拼写、垃圾邮件、邮件隔离规则及 SES 退信情况。页面发送提示不能替代收件确认。 |
AWS 侧返回信息的解释请参见 SES SMTP 问题排查。
恢复配置与后续管理
若切换后通知异常,重新打开邮件配置弹窗,恢复切换前保存的服务地址、端口、加密方式、账号、发件地址和凭证,完成收件测试后再保存。不要先撤销旧凭证,以免失去恢复途径。
仅为验证创建的 AWS 身份、IAM 用户、用户组、策略和凭证,应在确认不再被任何服务使用后,由 AWS 管理员按组织流程清理。正式启用的发信身份和凭证需要保留,并按组织要求管理轮换。
有关通用 SMTP 配置,请参见配置邮件服务。