获取你的亚马逊SES_SMTP凭证
更新日期(2014.8.13)
你需要一个Amazon SES SMTP用户名和密码才能访问亚马逊SES的SMTP界面。您可以使用同一组的SMTP认证在所有AWS的地区。
重要
您的SMTP用户名和密码都是不一样的您的AWS访问密钥和秘密密钥的访问。不要试图用你的AWS凭据自己对SMTP端点进行身份验证。有关凭据的详细信息,请参阅使用凭证与亚马逊SES。
有两种方法可以生成您的SMTP认证。您可以使用Amazon SES控制台或者您也可以通过您的AWS凭据您的SMTP认证。
使用Amazon SES控制台,如果产生您的SMTP认证:
你想用最简单的方法,让您的SMTP认证。
你不需要使用代码或脚本来自动化的SMTP凭证生成。
生成您的AWS凭据,如果您的SMTP认证:
您有一个现有的AWS身份和访问管理(IAM),您创建使用IAM的用户界面,并且您希望该用户能够发送使用亚马逊SES的SMTP界面的电子邮件。
您想使用的代码或脚本来自动化的SMTP凭证生成。
有关每个方法的信息,请参阅获取使用亚马逊SES控制台亚马逊SES SMTP凭证 ,并获得亚马逊SES SMTP凭证所转换的AWS凭据。
获得亚马逊SES SMTP凭证使用亚马逊SES控制台
当您通过使用亚马逊SES控制台生成的SMTP认证,亚马逊SES控制台创建具有适当的政策的IAM用户拨打亚马逊SES和为您提供了与该用户相关联的SMTP认证。
注
一个IAM的用户可以创建亚马逊SES的SMTP认证,但IAM用户的策略必须给他们允许使用IAM本身,因为亚马逊SES的SMTP认证通过IAM的创建。如果IAM的用户尝试使用控制台来创建亚马逊SES的SMTP凭据,他们没有IAM的权限,他们会得到一个错误,指出“......无权执行IAM:ListUsers ......”在这种情况下,root帐户拥有者的需求修改IAM用户的策略,以使他们能够访问以下IAM行动:“IAM:ListUsers”,“IAM:CREATEUSER”,“IAM:CreateAccessKey”和“IAM:PutUserPolicy”。
创建您的SMTP认证
登录到AWS管理控制台,并在打开的亚马逊SES控制台 https://console.aws.amazon.com/ses。
在导航窗格中,单击SMTP设置。
在内容窗格中,单击创建我的SMTP凭证。
在创建用户进行SMTP对话框中,您将看到一个SMTP用户名已经为您填写。您可以接受此建议的用户名或输入一个不同。要继续,请单击 创建。
为SMTP创建用户
点击查看用户SMTP凭证。您的SMTP认证将被显示在屏幕上; 复制它们,并将它们存放在安全的地方。您也可以点击下载证书下载包含您的凭证文件。
为SMTP创建用户
重要
这是,你将能够看到您的SMTP认证的唯一的一次!我们强烈建议您下载这些凭据和与他人分享他们不要。
点击关闭窗口。
如果你想删除您的SMTP认证,请在IAM控制台https://console.aws.amazon.com/iam/home 并删除与您的SMTP凭证所对应的IAM的用户名。要了解更多信息,请访问使用IAM指南。
如果你想改变你的SMTP密码,进入IAM控制台和删除现有的IAM的用户,然后去亚马逊SES控制台来重新生成您的SMTP认证。
获得亚马逊SES SMTP凭证通过将AWS凭据
如果你有设置使用IAM接口的IAM的用户,你需要做以下两个步骤,使用户使用亚马逊SES的SMTP接口发送的电子邮件:
使用本节中提供的算法,他们的AWS凭据获得用户的SMTP认证。用户的SMTP用户名相同的AWS访问密钥ID,所以你只需要生成SMTP密码。
适用于以下政策对IAM的用户:
{“声明”:[{
“效果”:“允许”,
“行动”:“SES:SendRawEmail”
“资源”:“*”
}]}
如需使用Amazon SES与IAM的更多信息,请参阅控制用户访问亚马逊SES。
注
虽然你可以生成亚马逊SES的SMTP认证的任何现有IAM的用户,我们推荐您为您将使用生成的SMTP密码的AWS凭据的单独用户的IAM安全原因。关于为什么它是很好的做法,创建用户用于特定用途的信息,请IAM的最佳实践。
下面的伪代码显示了转换一个AWS访问密钥,以亚马逊SES SMTP密码算法。
重点= AWS访问密钥;
消息=“SendRawEmail”;
versionInBytes = 0X02;
signatureInBytes = HmacSha256(消息密钥);
signatureAndVer =连接(versionInBytes,signatureInBytes);
smtpPassword = Base64编码(signatureAndVer);
下面是一个例子Java实现,转换一个AWS访问密钥,以亚马逊SES SMTP密码。在你运行的程序,把IAM用户的AWS访问密钥到名为AWS_SECRET_ACCESS_KEY的环境变量。该程序的输出是SMTP密码。该密码,以及在SMTP用户名(也就是相同的AWS访问密钥ID)是用户的亚马逊SES的SMTP认证。
进口javax.crypto.Mac;
进口javax.crypto.spec.SecretKeySpec;
进口javax.xml.bind.DatatypeConverter;
公共类SesSmtpCredentialGenerator {
私有静态最终字符串KEY_ENV_VARIABLE =“AWS_SECRET_ACCESS_KEY”; //把你的AWS访问密钥在此环境变量。
私有静态最后字符串消息=“SendRawEmail”; //用于生成HMAC签名。不要修改。
私有静态最后一个字节版本= 0X02; //版本号。不要修改。
公共静态无效的主要(字串[] args){
//从环境变量AWS_SECRET_ACCESS_KEY的AWS访问密钥。
字符串键= System.getenv(KEY_ENV_VARIABLE);
如果(键== NULL)
{
System.out.println(“错误:无法找到环境变量AWS_SECRET_ACCESS_KEY。”);
System.exit(0);
}
//创建从AWS访问密钥的原始字节的HMAC-SHA256键。
SecretKeySpec的SecretKey =新SecretKeySpec(key.getBytes(),“HmacSHA256”);
尝试{
//得到一个HMAC-SHA256 MAC实例,并与AWS访问密钥初始化。
苹果的mac = Mac.getInstance(“HmacSHA256”);
mac.init(的SecretKey);
//计算所输入的数据字节的HMAC签名。
byte []的rawSignature = mac.doFinal(MESSAGE.getBytes());
//前面加上版本号的签名。
byte []的rawSignatureWithVersion =新的字节[rawSignature.length + 1];
byte []的versionArray = {版本};
System.arraycopy(versionArray,0,rawSignatureWithVersion,0,1);
System.arraycopy(rawSignature,0,rawSignatureWithVersion,1,rawSignature.length);
//得到最终的SMTP密码,使用HMAC签名转换为基础64。
串smtpPassword = DatatypeConverter.printBase64Binary(rawSignatureWithVersion);
System.out.println(smtpPassword);
}
赶上(例外){
System.out.println(“错误发生SMTP密码:”+ ex.getMessage());
}
}
}