Amazon Simple Email Service (SES) は AWS におけるメール送受信サービスです。基本的な使い方を記載します。
SES API Action には v1 (classic) と v2 が存在しています。「ドキュメント」「aws cli」が v1 と v2 用にそれぞれ存在します。
補足: 「Web コンソール」にも二つのバージョンが存在しますが、これは API のバージョンとは関係のない UI の刷新です。
項目 | v1 (classic) | v2 |
---|---|---|
API Action | APIReference | APIReference-V2 |
Policy | resources and condition keys | resources and condition keys |
ドキュメント | DeveloperGuide | dg |
aws cli v1 | ses | sesv2 |
aws cli v2 | ses | sesv2 |
注意点: API Action は v1 であっても v2 であっても "ses:" に属します。また、v1 と v2 で扱うリソースは共通です。例えば、Email Identity を作成および削除するための API Action は、
ses:VerifyEmailIdentity
と ses:DeleteIdentity
でありses:CreateEmailIdentity
と ses:DeleteEmailIdentity
ですが、v1 で作成した Email Identity を v2 で削除することができます。その逆も可能です。
最新バージョンの aws cli v1 と aws cli v2 を使っている限りにおいて、それらの差異は SES 利用という観点からは基本的にありません。ただし、aws cli v1 のバージョンが最新でない場合は、sesv2 に対応していない可能性があることに注意します。
aws sesv2 help
例えば sesv2 に関して以下のディレクトリが存在しています。
$ find . -name sesv2
./tests/functional/sesv2
最新のコミットを確認します。
$ git log ./tests/functional/sesv2
commit 3e88e154af61c8bd213cc27e87896454b7deb3f2
Author: Kenneth Daily <kdaily@users.noreply.github.com>
Date: Fri Oct 23 15:35:24 2020 -0700
add test.
コミットを含むタグは 1.18
以降です。それよりも古いバージョンの aws cli v1 は sesv2 に対応していない可能性があります。
$ git tag --contains=3e88e154af61c8bd213cc27e87896454b7deb3f2 | head
1.18.183
1.18.184
1.18.185
1.18.186
1.18.187
1.18.188
1.18.189
1.18.190
1.18.191
1.18.192
詳細は aws-cli が依存する botocore の実装を確認します。
$ git grep boto setup.py
setup.py: 'botocore==1.21.26',
ses:SendEmail
が必要となり、Raw メールを送信する場合は ses:SendRawEmail
が必要となります。ある API Action が Allow となるか Deny となるかは、ポリシーで判断されます。ポリシーは IAM Policy (Identity-based policy) の他に Resource-based policy や Organization SCP でも設定されます。
Determining whether a request is allowed or denied within an account
関連資料
2021/8/30 時点において、
一般に、VPCE はネットワーク的に接続された別の VPC からも利用できます。別の VPC からであっても、VPCE と同じ VPC からであっても、Policy を設定できないため、他の AWS アカウントの IAM 認証情報を用いた VPCE 利用を制限することはできません。
関連資料
API Action によっては Resource を指定できません。その場合は Resource を省略せずに "*" を指定する必要があります。
注意点: 不正な Resource を指定すると Effect で指定した Allow および Deny が機能しなくなります。
{
"Id": "MyPolicy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "MyStatement",
"Effect": "Allow",
"Action": [
"ses:VerifyEmailIdentity"
],
"Resource": "*"
}
]
}
ある API Action において指定できる Resource はドキュメントに記載されています。
Condition には Key と Value を記載します。記載できる Key には、
が存在しています。
aws ses verify-email-identity --email-address abc@gmail.com
aws sesv2 create-email-identity --email-identity abc@gmail.com
aws ses list-identities
aws sesv2 list-email-identities
aws ses delete-identity --identity abc@gmail.com
aws sesv2 delete-email-identity --email-identity abc@gmail.com
DeleteEmailIdentity
については Resource 指定が可能です。
注意: DeleteIdentity
はドキュメント上は可能と記載がありますが、実際には機能しません。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ses:VerifyEmailIdentity",
"ses:CreateEmailIdentity",
"ses:ListIdentities",
"ses:ListEmailIdentities",
"ses:DeleteIdentity"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ses:DeleteEmailIdentity"
],
"Resource": "arn:aws:ses:ap-northeast-1:123412341234:identity/*"
}
]
}
Policy の Condition を設定する例を記載します。以下の例では v2 の API Action のみを記載しています。TagResource
の権限も必要です。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ses:ListEmailIdentities"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ses:TagResource",
"ses:CreateEmailIdentity"
],
"Resource": "*",
"Condition": {
"ForAllValues:StringEquals": {
"aws:TagKeys": ["mytag1", "mytag2"]
},
"StringEquals": {
"aws:RequestTag/mytag1": ["a", "b"],
"aws:RequestTag/mytag2": ["c", "d"]
}
}
},
{
"Effect": "Allow",
"Action": [
"ses:DeleteEmailIdentity"
],
"Resource": "arn:aws:ses:ap-northeast-1:123412341234:identity/*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/mytag1": ["a", "b"],
"aws:ResourceTag/mytag2": ["c", "d"]
}
}
}
]
}
動作検証のためのコマンド
aws sesv2 create-email-identity --email-identity abc@gmail.com --tags 'Key=mytag1,Value=a' 'Key=mytag2,Value=c'
aws sesv2 delete-email-identity --email-identity abc@gmail.com
Evaluation logic for conditions with multiple keys or values
--tags
で 0 個以上のタグが指定され得ります。
CreateEmailIdentity
ForAllValues:StringEquals
aws:TagKeys
→ --tags
で指定されたタグの key が condition の value として取得できます。すべての tag-key (condition-value) が mytag1
または mytag2
であることを求めています。ForAllValues
の仕様として、指定されたタグの個数が 0 である場合も True となります。StringEquals
aws:RequestTag/mytag1
→ mytag1
タグの value が condition の value として取得できます。tag-value (condition-value) が a
または b
であることを求めています。指定されたタグの個数が 0 の場合は False となります。aws:RequestTag/mytag2
→ mytag2
タグの value が condition の value として取得できます。tag-value (condition-value) が c
または d
であることを求めています。指定されたタグの個数が 0 の場合は False となります。DeleteEmailIdentity
StringEquals
aws:ResourceTag/mytag1
→ Resource が持つ mytag1 タグの value が condition の value として取得できます。tag-value (condition-value) が a
または b
であることを求めています。aws:ResourceTag/mytag2
→ Resource が持つ mytag2 タグの value が condition の value として取得できます。tag-value (condition-value) が c
または d
であることを求めています。aws:TagKeys
が複数の value を返すのに対して、aws:RequestTag/xxx
および aws:ResourceTag/xxx
が一つの value しか返さないことがポイントです。
aws sesv2 send-email \
--from-email-address abc@gmail.com \
--destination ToAddresses=abc@gmail.com \
--content '{
"Simple": {
"Subject": {
"Data": "MySubject",
"Charset": "UTF-8"
},
"Body": {
"Text": {
"Data": "MyBody",
"Charset": "UTF-8"
}
}
}
}'
aws ses send-email \
--from abc@gmail.com \
--destination ToAddresses=abc@gmail.com \
--subject MySubject2 \
--text MyBody2
--feedback-forwarding-email-address
を指定していない、上記例における FeedbackAddress
は abc@gmail.com
となります。--destination
を a <abc@gmail.com
とした場合は、FromDisplayName
は "" ではなく "a" となります。ses:SendRawEmail
と ses:SendTemplatedEmail
権限が必要になります。{
"Effect": "Allow",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail",
"ses:SendTemplatedEmail"
],
"Resource": "arn:aws:ses:ap-northeast-1:123412341234:identity/*",
"Condition": {
"StringEquals": {
"ses:FeedbackAddress": "abc@gmail.com",
"ses:FromAddress": "abc@gmail.com",
"ses:FromDisplayName": ""
},
"ForAllValues:StringEquals": {
"ses:Recipients": "abc@gmail.com"
}
}
}
Recipients
は複数の value を返すため ForAllValues
または ForAnyValue
を併用します。StringEquals
等について: Condition operators
SES には Sandbox という概念があり、これが有効になっていると verify された宛先にしかメールを送信できず、送信できるメールの数にも強い制限がかかります。v2 の API を用いて設定を確認できます。
aws sesv2 get-account
出力例
{
"DedicatedIpAutoWarmupEnabled": true,
"EnforcementStatus": "HEALTHY",
"SendQuota": {
"Max24HourSend": 200.0,
"SentLast24Hours": 15.0,
"MaxSendRate": 1.0
},
"SuppressionAttributes": {
"SuppressedReasons": [
"BOUNCE",
"COMPLAINT"
]
},
"ProductionAccessEnabled": false, ← sandbox 状態
"SendingEnabled": true
}
aws sesv2 put-account-details --mail-type TRANSACTIONAL \
--website-url https://www.qoosky.io \
--use-case-description 'Emails for testing purposes of SES functionalities.' \
--contact-language JA \
--production-access-enabled
オプション --production-access-enabled
を指定すると、AWS サポートが対応するためのケースが起票されます。上記のように十分な情報が記載されていないと却下されます。
aws sesv2 put-account-sending-attributes --sending-enabled
一般に、メールサーバが送信したメールが BOUNCE および COMPLAINT されるとメールサーバの IP の信頼性が落ちます。これを避けるために SES では suppression list が用意されています。suppression list には global のものと account-level のものが存在します。account-level の suppression list について、BOUNCE および COMPLAINT されたメールアドレスを自動で含めるかどうかの設定が可能です。2019/11/25 以降、既定の挙動が変更されており、BOUNCE および COMPLAINT が含まれるように初期設定されています。
aws sesv2 put-account-suppression-attributes --suppressed-reasons 'COMPLAINT' 'BOUNCE'
関連資料:
{
"Effect": "Allow",
"Action": [
"ses:GetAccount",
"ses:PutAccountDetails",
"ses:PutAccountSendingAttributes",
"ses:PutAccountSuppressionAttributes"
],
"Resource": "*"
}
Value at 'websiteURL' failed to satisfy constraint...
上記のようなエラーが出力されることがあります。こちらの Pull Request で修正されています: https://github.com/aws/aws-cli/pull/5663
最新のバージョンの awscli にアップグレードすることで修正を取り込みます。
$ python -m pip list | grep awscli
awscli 1.18.147
$ sudo yum install python-pip
$ python -m pip install --upgrade pip
$ python -m pip install --upgrade awscli
$ python -m pip list | grep awscli
awscli 1.19.112
aws sesv2 list-suppressed-destinations
aws sesv2 get-suppressed-destination --email-address abc@gmail.com
aws sesv2 put-suppressed-destination --email-address abc@gmail.com --reason COMPLAINT
aws sesv2 delete-suppressed-destination --email-address abc@gmail.com
{
"Effect": "Allow",
"Action": [
"ses:ListSuppressedDestinations",
"ses:GetSuppressedDestination",
"ses:PutSuppressedDestination",
"ses:DeleteSuppressedDestination"
],
"Resource": "*"
}
aws ses list-templates
aws sesv2 list-email-templates
aws ses create-template --template TemplateName=mytemplate,SubjectPart=MySubject,TextPart=MyText
aws sesv2 create-email-template --template-name mytemplate2 --template-content Subject=MySubject2,Text=MyText2
aws ses get-template --template-name mytemplate
aws sesv2 get-email-template --template-name mytemplate
aws ses update-template --template TemplateName=mytemplate,SubjectPart=MySubject3,TextPart=MyText3
aws sesv2 update-email-template --template-name mytemplate2 --template-content Subject=MySubject4,Text=MyText4
aws ses delete-template --template mytemplate
aws sesv2 delete-email-template --template mytemplate2
aws ses test-render-template --template-name mytemplate3 --template-data '{"name":"a","favoriteanimal":"b"}'
aws sesv2 test-render-email-template --template-name mytemplate3 --template-data '{"name":"a","favoriteanimal":"b"}'
v1 と v2 で操作するテンプレートリソースは共通ですが、コマンドおよび API は別々に存在します。v2 の API の一部は Resource 指定が可能です。
{
"Effect": "Allow",
"Action": [
"ses:ListTemplates",
"ses:GetTemplate",
"ses:CreateTemplate",
"ses:UpdateTemplate",
"ses:DeleteTemplate",
"ses:TestRenderTemplate",
"ses:ListEmailTemplates",
"ses:CreateEmailTemplate"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ses:GetEmailTemplate",
"ses:UpdateEmailTemplate",
"ses:DeleteEmailTemplate",
"ses:TestRenderEmailTemplate"
],
"Resource": "arn:aws:ses:ap-northeast-1:123412341234:template/*"
}
aws ses send-templated-email \
--source abc@gmail.com \
--destination ToAddresses=abc@gmail.com \
--template mytemplate \
--template-data '{}'
aws sesv2 send-email \
--from-email-address abc@gmail.com \
--destination ToAddresses=abc@gmail.com \
--content '{
"Template": {
"TemplateName": "mytemplate",
"TemplateData": "{}"
}
}'
aws ses send-bulk-templated-email \
--source abc@gmail.com \
--template mytemplate \
--default-template-data '{}' \
--destinations Destination={ToAddresses=abc@gmail.com}
aws sesv2 send-bulk-email \
--from-email-address abc@gmail.com \
--default-content '{
"Template": {
"TemplateName": "mytemplate",
"TemplateData": "{}"
}
}' \
--bulk-email-entries Destination={ToAddresses=abc@gmail.com}
SendTemplatedEmail
は v1 と v2 で共通です。v1 の SendBulkTemplatedEmail
には Resource と Condition を設定できますが、v2 の SendBulkEmail
には設定できません。
{
"Effect": "Allow",
"Action": [
"ses:SendTemplatedEmail",
"ses:SendBulkTemplatedEmail"
],
"Resource": "arn:aws:ses:ap-northeast-1:123412341234:identity/*",
"Condition": {
"StringEquals": {
"ses:FeedbackAddress": "abc@gmail.com",
"ses:FromAddress": "abc@gmail.com",
"ses:FromDisplayName": ""
},
"ForAllValues:StringEquals": {
"ses:Recipients": "abc@gmail.com"
}
}
},
{
"Effect": "Allow",
"Action": [
"ses:SendBulkEmail"
],
"Resource": "*"
}
関連資料: テンプレートメールに動的に値を埋め込む設定 Using templates to send personalized emails with the Amazon SES API
Email Identity または Domain Identity の利用を、他のアカウントの同じリージョンに許可することができます。これは SES における resource-based policy であり、S3 バケットポリシーと同様に policy は resouce が持ちます。
注意: 別のアカウントに対して resource-based policy を与えた場合、与えられたアカウント側でも policy を利用するための IAM 設定が必要となります。
関連資料
v1:list-identity-policies
v1:get-identity-policies
v1:put-identity-policy
v1:delete-identity-policy
v2:get-email-identity-policies
v2:create-email-identity-policy
v2:update-email-identity-policy
v2:delete-email-identity-policy
v1:ListIdentityPolicies
v1:GetIdentityPolicies
v1:PutIdentityPolicy
v1:DeleteIdentityPolicy
v2:GetEmailIdentityPolicies
v2:CreateEmailIdentityPolicy
v2:UpdateEmailIdentityPolicy
v2:DeleteEmailIdentityPolicy
API を実行した後に、ドメインの DNS レコード設定が必要になります。
補足: v2 の create-email-identity
は Email Identity だけでなく Domain Identity 作成にも対応しています。
v1:verify-domain-identity
v1:get-identity-verification-attributes
v1:get-identity-mail-from-domain-attributes
v1:set-identity-mail-from-domain
v2:put-email-identity-mail-from-attributes
v1:verify-domain-dkim
v1:get-identity-dkim-attributes
v1:set-identity-dkim-enabled
v2:put-email-identity-dkim-attributes
v2:put-email-identity-dkim-signing-attributes
v1:VerifyDomainIdentity
v1:GetIdentityVerificationAttributes (注意: ドキュメントに記載の resource 指定は機能しません)
v1:GetIdentityMailFromDomainAttributes (注意: ドキュメントに記載の resource 指定は機能しません)
v1:SetIdentityMailFromDomain (注意: ドキュメントに記載の resource 指定は機能しません)
v2:PutEmailIdentityMailFromAttributes
v1:VerifyDomainDkim (注意: ドキュメントに記載の resource 指定は機能しません)
v1:GetIdentityDkimAttributes (注意: ドキュメントに記載の resource 指定は機能しません)
v1:SetIdentityDkimEnabled (注意: ドキュメントに記載の resource 指定は機能しません)
v2:PutEmailIdentityDkimAttributes
v2:PutEmailIdentityDkimSigningAttributes
Email Identity を作成する際の確認メールをカスタマイズするための API です。verify-email-identity
および create-email-identity
ではなく send-custom-verification-email
を利用して Email Identity を登録します。その際、利用するテンプレートを指定します。
関連資料: Using custom verification email templates
v1,v2共通:send-custom-verification-email
v1,v2共通:list-custom-verification-email-templates
v1,v2共通:get-custom-verification-email-template
v1,v2共通:create-custom-verification-email-template
v1,v2共通:update-custom-verification-email-template
v1,v2共通:delete-custom-verification-email-template
v1,v2共通:SendCustomVerificationEmail
v1,v2共通:ListCustomVerificationEmailTemplates
v1,v2共通:GetCustomVerificationEmailTemplate
v1,v2共通:CreateCustomVerificationEmailTemplate
v1,v2共通:UpdateCustomVerificationEmailTemplate
v1,v2共通:DeleteCustomVerificationEmailTemplate
一部の AWS リージョンは SES を用いたメール受信に対応しています。2021/9/1 時点: us-east-1, us-west-2, eu-west-1
一般のメールサーバのように POP や IMAP には対応しておらず、メール受信時に Lambda 実行や S3 保存が可能です。
Amazon SES email receiving concepts and use cases
関連資料: Receiving email with Amazon SES
v1:describe-receipt-rule
v1:create-receipt-rule
v1:update-receipt-rule
v1:delete-receipt-rule
v1:list-receipt-filters
v1:create-receipt-filter
v1:delete-receipt-filter
v1:list-receipt-rule-sets
v1:describe-receipt-rule-set
v1:describe-active-receipt-rule-set
v1:set-active-receipt-rule-set
v1:create-receipt-rule-set
v1:clone-receipt-rule-set
v1:delete-receipt-rule-set
v1:reorder-receipt-rule-set
v1:set-receipt-rule-position
v1:send-bounce
v1:DescribeReceiptRule
v1:CreateReceiptRule
v1:UpdateReceiptRule
v1:DeleteReceiptRule
v1:ListReceiptFilters
v1:CreateReceiptFilter
v1:DeleteReceiptFilter
v1:ListReceiptRuleSets
v1:DescribeReceiptRuleSet
v1:DescribeActiveReceiptRuleSet
v1:SetActiveReceiptRuleSet
v1:CreateReceiptRuleSet
v1:CloneReceiptRuleSet
v1:DeleteReceiptRuleSet
v1:ReorderReceiptRuleSet
v1:SetReceiptRulePosition
v1:SendBounce
SES には configuration-set というリソースが存在します。configuration-set はメール送信時の設定群です。大別すると以下の二つの設定を記載可能です。
メール送信時に都度指定することで configuration-set を利用します。Identity に対して default の configuration-set を指定しておくこともできます。
Managing configuration sets in Amazon SES: v1, v2
aws ses list-configuration-sets
aws ses create-configuration-set --configuration-set Name=myconf
aws ses delete-configuration-set --configuration-set-name myconf
aws ses describe-configuration-set --configuration-set-name myconf \
--configuration-set-attribute-names eventDestinations trackingOptions deliveryOptions reputationOptions
aws sesv2 list-configuration-sets
aws sesv2 create-configuration-set --configuration-set-name myconf
aws sesv2 delete-configuration-set --configuration-set-name myconf
aws sesv2 get-configuration-set --configuration-set-name myconf
v1,v2共通:ListConfigurationSets
v1,v2共通:CreateConfigurationSet
v1,v2共通:DeleteConfigurationSet
v1:DescribeConfigurationSet
v2:GetConfigurationSet
aws ses create-configuration-set-event-destination \
--configuration-set-name myconf \
--event-destination Name=mydest,Enabled=true,MatchingEventTypes=[send,bounce,complaint,delivery],SNSDestination={TopicARN=arn:aws:sns:ap-northeast-1:123412341234:mytopic}
aws sesv2 create-configuration-set-event-destination \
--configuration-set-name myconf \
--event-destination-name mydest \
--event-destination Enabled=false,MatchingEventTypes=[SEND,BOUNCE,COMPLAINT,DELIVERY],SnsDestination={TopicArn=arn:aws:sns:ap-northeast-1:123412341234:mytopic}
aws sesv2 get-configuration-set-event-destinations --configuration-set-name myconf
aws ses update-configuration-set-event-destination --configuration-set-name myconf \
--event-destination Name=mydest,Enabled=true,MatchingEventTypes=[send,bounce,complaint,delivery],SNSDestination={TopicARN=arn:aws:sns:ap-northeast-1:123412341234:mytopic}
aws sesv2 update-configuration-set-event-destination --configuration-set-name myconf \
--event-destination-name mydest \
--event-destination Enabled=true,MatchingEventTypes=[SEND,BOUNCE,COMPLAINT,DELIVERY],SnsDestination={TopicArn=arn:aws:sns:ap-northeast-1:123412341234:mytopic}
aws ses delete-configuration-set-event-destination --configuration-set-name myconf --event-destination-name mydest
aws sesv2 delete-configuration-set-event-destination --configuration-set-name myconf --event-destination-name mydest
v1,v2共通:CreateConfigurationSetEventDestination
v2:GetConfigurationSetEventDestinations
v1,v2共通:UpdateConfigurationSetEventDestination
v1,v2共通:DeleteConfigurationSetEventDestination
メール送信時に都度指定
aws ses send-email \
--from abc@gmail.com \
--destination ToAddresses=abc@gmail.com \
--subject MySubject \
--text MyBody \
--configuration-set-name myconf
Email Identity または Domain Identity に default 値を指定
注意: put-email-identity-configuration-set-attributes
は比較的新しいバージョンの awscli に実装されています。また "email-identity" ですが domain identity にも対応しています。
aws sesv2 put-email-identity-configuration-set-attributes --email-identity abc@gmail.com \
--configuration-set-name myconf
v2:PutEmailIdentityConfigurationSetAttributes
SNS Topic に通知されるメッセージ例: Examples of event data that Amazon SES publishes to Amazon SNS
v1:update-configuration-set-sending-enabled
v2:put-configuration-set-sending-options
v1:create-configuration-set-tracking-options
v1:delete-configuration-set-tracking-options
v1:update-configuration-set-tracking-options
v2:put-configuration-set-tracking-options
v1:put-configuration-set-delivery-options
v2:put-configuration-set-delivery-options
v1:update-configuration-set-reputation-metrics-enabled
v2:put-configuration-set-reputation-options
v2:put-configuration-set-suppression-options
v1:UpdateConfigurationSetSendingEnabled
v2:PutConfigurationSetSendingOptions
v1:CreateConfigurationSetTrackingOptions
v1:DeleteConfigurationSetTrackingOptions
v1:UpdateConfigurationSetTrackingOptions
v2:PutConfigurationSetTrackingOptions
v1,v2共通:PutConfigurationSetDeliveryOptions
v1:UpdateConfigurationSetReputationMetricsEnabled
v2:PutConfigurationSetReputationOptions
v2:PutAccountSuppressionAttributes
SES における Bounce, Complaint, Delivery イベントの処理方法としては、以下の二種類が存在します。
関連資料:
aws ses get-identity-notification-attributes --identities abc@gmail.com
aws ses set-identity-feedback-forwarding-enabled --identity abc@gmail.com --forwarding-enabled
aws sesv2 put-email-identity-feedback-attributes --email-identity abc@gmail.com --email-forwarding-enabled
aws ses set-identity-notification-topic --identity abc@gmail.com \
--notification-type Delivery \
--sns-topic arn:aws:sns:ap-northeast-1:123412341234:mytopic
aws ses set-identity-headers-in-notifications-enabled --identity abc@gmail.com --notification-type Delivery --enabled
補足: Notification に Subject 等のヘッダー情報を含めるためには set-identity-headers-in-notifications-enabled
を利用します。
v1:GetIdentityNotificationAttributes (注意: ドキュメントに記載の resource 指定は機能しません)
v1:SetIdentityFeedbackForwardingEnabled (注意: ドキュメントに記載の resource 指定は機能しません)
v2:PutEmailIdentityFeedbackAttributes
v1:SetIdentityNotificationTopic
v1:SetIdentityHeadersInNotificationsEnabled (注意: ドキュメントに記載の resource 指定は機能しません)
Forwarding を有効化
aws ses set-identity-feedback-forwarding-enabled --identity qoosky.io --forwarding-enabled
qoosky.io
ドメインで bounce メールを受信できない場合は return-path に verify 済みの Identity を指定します。
補足: bounce@simulator.amazonses.com
を利用すると、アカウントの reputation に影響を与えずに設定を検証できます: Testing email sending in Amazon SES
aws ses send-email --from hello@qoosky.io \
--destination ToAddresses=bounce@simulator.amazonses.com \
--subject MySubject --text MyBody \
--return-path abc@gmail.com
Feedback メールは「メール受信」機能とは別です。東京リージョンでも利用できます。