本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
获取 Amazon SES SMTP 凭证
您需要 Amazon SES SMTP 凭证才能访问 SES SMTP 接口。
您用于通过 SES SMTP 接口发送电子邮件的凭证在每个 AWS 区域都是唯一的。如果您使用 SES SMTP 接口在多个区域中发送电子邮件,那么您必须为计划使用的每个区域生成一组 SMTP 凭证。
您的 SMTP 密码与您的 AWS 私有访问密钥不同。有关凭证的更多信息,请参阅Amazon SES 凭证的类型。
注意
SMTP 端点目前在非洲(开普敦)、亚太地区(雅加达)、欧洲地区(米兰)、以色列(特拉维夫)和中东(巴林)不可用。
使用 SES 控制台获取 SES SMTP 凭证
要求
IAM 用户可以创建 SES SMTP 凭证,但该用户的策略必须授予这些凭证使用 IAM 自身的权限,因为 SES SMTP 凭证是通过使用 IAM 创建的。您的 IAM 策略必须允许您执行以下 IAM 操作:iam:ListUsers
、iam:CreateUser
、iam:CreateAccessKey
和 iam:PutUserPolicy
。如果您尝试使用控制台创建 SES SMTP 证书,但您的 IAM 用户没有这些权限,则会看到一条错误消息,指出您的账户 “无权执行 iam:” ListUsers。
重要
上面提到的 IAM 操作具有权限管理访问级别,这是最高 IAM 级别,因为它授予在服务中授予或修改资源权限的权限。因此,为了提高 AWS 账户的安全性,强烈建议您限制或定期监控这些包含权限管理访问级别分类的策略。
创建 SMTP 凭证
-
登录 AWS Management Console 并打开 Amazon SES 控制台,网址为https://console.aws.amazon.com/ses/
。 -
在左侧的导航窗格中选择 SMTP settings(SMTP 设置)- 这将打开 Simple Mail Transfer Protocol (SMTP) settings [简单邮件传输协议(SMTP)设置] 页面。
-
选择右上角的 Create SMTP Credentials(创建 SMTP 凭证)- IAM 控制台将打开。
-
(可选)如果您需要查看、编辑或删除已创建的 SMTP 用户,请选择右下角的 Manage my existing SMTP credentials(管理我现有的 SMTP 凭证)-IAM 控制台将打开。按照以下步骤给出了用于管理 SMTP 凭证的详细信息。
-
在为 SMTP 创建用户中,在 IAM 用户名字段中键入一个名称。或者,您可以使用此字段中提供的默认值。完成后,选择右下角的创建用户。
-
选择 SMTP 密码下的显示 - 您的 SMTP 凭证显示在屏幕上。
-
通过选择下载 .csv 文件以下载这些凭证,或将其复制并存储在安全的位置,因为您在关闭此对话框之后无法查看或保存凭证。
-
选择返回 SES 控制台。
您可以在 IAM 控制台的 Access management(访问管理)下查看使用此过程创建的 SMTP 凭证列表,并可以选择 Users(用户),然后使用搜索栏查找已分配 SMTP 凭证的所有用户。
您也可以使用 IAM 控制台来删除现有 SMTP 用户。要了解有关删除用户的更多信息,请参阅《IAM 入门指南》中的管理 IAM 用户。
如果您要更改 SMTP 密码,请在 IAM 控制台中删除现有 SMTP 用户。然后,要生成一组新 SMTP 凭证,请完成前面的过程。
通过转换现有 AWS 凭证获取 SES SMTP 凭证
如果您有使用 IAM 接口设置的用户,则可以从其证书中派生该用户的 SES SMTP AWS 证书。
重要
不要使用临时 AWS 证书来获取 SMTP 证书。SES SMTP 接口不支持从临时安全凭证生成的 SMTP 凭证。
使 IAM 用户能够使用 SES SMTP 接口发送电子邮件
-
按照以下步骤,使用本节中提供的算法,从用户 AWS 凭证中派生出用户的 SMTP 凭据。
由于您是从 AWS 凭据开始的,因此 SMTP 用户名与 AWS 访问密钥 ID 相同,因此您只需要生成 SMTP 密码即可。
登录 AWS Management Console 并打开 IAM 控制台,网址为https://console.aws.amazon.com/iam/
。 -
在访问管理下,选择策略,然后选择创建策略。
-
在策略编辑器中,选择 JSON,然后删除编辑器中的所有示例代码。
-
将下面的策略粘贴到编辑器中。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ses:SendRawEmail", "Resource": "*" } ] }
-
选择下一步,然后在策略名称字段中输入
AmazonSesSendingAccess
,接着选择创建策略。 -
在访问管理下,选择用户组,然后选择创建组。
-
在用户组名称字段中,输入
AWSSESSendingGroupDoNotRename
。 -
从将用户添加到组表中选择 SMTP 用户,即可将其添加到组中。
-
附加之前创建的
AmazonSesSendingAccess
策略,方法是从附加权限策略表中选择该策略,然后选择创建用户组。
有关将 SES 与 IAM 搭配使用的更多信息,请参阅Amazon 中的身份和访问管理 SES。
注意
尽管您可以为任何 IAM 用户生成 SES SMTP 凭证,但我们建议您在生成 SMTP 凭证时创建单独的 IAM 用户。有关为何说这是为特定目的创建用户的最佳实践的原因的信息,请参阅 IAM 最佳实践。
以下伪代码显示了将私有访问 AWS 密钥转换为 SES SMTP 密码的算法。
// Modify this variable to include your AWS secret access key key = "
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
"; // Modify this variable to refer to the AWS Region that you want to use to send email. region = "us-west-2
"; // The values of the following variables should always stay the same. date = "11111111"; service = "ses"; terminal = "aws4_request"; message = "SendRawEmail"; version = 0x04; kDate = HmacSha256(date, "AWS4" + key); kRegion = HmacSha256(region, kDate); kService = HmacSha256(service, kRegion); kTerminal = HmacSha256(terminal, kService); kMessage = HmacSha256(message, kTerminal); signatureAndVersion = Concatenate(version, kMessage); smtpPassword = Base64(signatureAndVersion);
一些编程语言包括可用于将 IAM 秘密访问密钥转换为 SMTP 密码的库。本节包含一个代码示例,您可以使用该示例使用 Python 将私有访问 AWS 密钥转换为 SES SMTP 密码。
注意
以下示例使用 Python 3.6 中推出的 f-string;如果使用较旧的版本,那么它们无法工作。
Python SDK(Boto3)目前正式支持 2.7 和 3.6(或更高版本)。然而,2.7 支持已被弃用,并且将在 2021 年 7 月 15 日删除,因此您需要至少升级到 3.6 版本。
将 SMTP 用户从现有内联策略迁移到组策略(安全建议)
重要
如果您在 2024 年 9 月 6 日之前创建了 SES SMTP 凭证,则已将内联策略和标签附加到您的 SMTP 用户。SES 不再使用内联策略,并出于安全建议,鼓励您也这样做。
在将 SMTP 用户从现有内联策略迁移到组策略之前,必须先创建一个具有 SES 权限策略的 IAM 用户组来取代内联策略。如果您已创建了此 IAM 用户组,或者它是从 2024 年 9 月 6 日起为您创建的 SMTP 凭证自动创建的,则可以直接跳到以下过程中的步骤 10。
从现有内联策略迁移到托管组
登录 AWS Management Console 并打开 IAM 控制台,网址为https://console.aws.amazon.com/iam/
。 -
在访问管理下,选择策略,然后选择创建策略。
-
在策略编辑器中,选择 JSON,然后删除编辑器中的所有示例代码。
-
将下面的策略粘贴到编辑器中。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ses:SendRawEmail", "Resource": "*" } ] }
-
选择下一步,然后在策略名称字段中输入
AmazonSesSendingAccess
,接着选择创建策略。 -
在访问管理下,选择用户组,然后选择创建组。
-
在用户组名称字段中,输入
AWSSESSendingGroupDoNotRename
。 -
从将用户添加到组表中选择 SMTP 用户,即可将其添加到组中。
-
附加之前创建的
AmazonSesSendingAccess
策略,方法是从附加权限策略表中选择该策略,然后选择创建用户组。现在,您已使用 SES 权限策略创建了 IAM 用户组,您可以按照其余步骤中所述,将 SMTP 用户从其当前的内联策略迁移到该组策略。
-
在访问管理下,选择用户,然后选择要迁移的 SMTP 用户。
-
选择组选项卡,然后选择将用户添加到多个组。
-
选择
AWSSESSendingGroupDoNotRename
组,然后选择将用户添加到组。 -
选择权限选项卡,确认在策略名称列中列出的两行均显示
AmazonSesSendingAccess
,其中一行在通过如下方式附加列中显示为内联,另一行显示为组AWSSESSendingGroupDoNotRename
。 -
仅选择策略名称列包含
AmazonSesSendingAccess
且通过如下方式附加列显示为内联的行,然后选择移除,接着确认移除策略。验证通过如下方式附加列中显示为组
AWSSESSendingGroupDoNotRename
的行仍然存在。 -
选择标签选项卡,然后选择管理标签。
-
选择 “键” 列和 SESConsole“值” 列InvokedBy中包含的行旁边的 “删除”,然后选择 “保存更改”。
重要
必须将 AmazonSesSendingAccess
策略(无论是作为内联策略还是组策略,或者两者兼有)保持附加到 SMTP 用户,以确保他们的发送不受影响。只有在将组策略附加到用户之后,才能移除内联策略。