{SES}Amazon SES を使用した E メールの受信


https://www.yamamanx.com/ses-mail-recieve/

https://docs.aws.amazon.com/ja_jp/ses/latest/dg/receiving-email.html

E メールを受信する Amazon SES のエンドポイントは、IMAP または POP3 E メールサーバーではありません。
これらの URL を E メールクライアントの受信メールサーバーとして使用することはできません。

E メールの受信は下記リージョンでサポート

米国東部(バージニア北部)
米国西部 (オレゴン)
欧州 (アイルランド)

 

バージニア北部で実施


-- 1. コマンド等のインストール

-- 1.1 aws cli version 2 インストール

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version

 

-- 1.2 jqインストール
sudo yum -y install jq

 

-- 2. Identityの作成


aws ses verify-domain-identity \
--domain example.com


aws ses list-identities

aws ses get-identity-verification-attributes \
--identities example.com

aws ses verify-domain-dkim \
--domain example.com


-- 3. CNAMEレコード作成
aws route53 list-hosted-zones

    
    
    
vim cname.json

{
  "Comment": "CREATE/DELETE/UPSERT a record ",
  "Changes": [
    { "Action": "UPSERT",
      "ResourceRecordSet": { "Name": "xxxxxmj2sp4bl5az2ouevtlevmvrz2z5._domainkey.example.com.",
                             "Type": "CNAME",
                             "TTL": 10,
                             "ResourceRecords": [
                                 { "Value": "xxxxxmj2sp4bl5az2ouevtlevmvrz2z5.dkim.amazonses.com" }
                             ]
                           }
    },
    { "Action": "UPSERT",
      "ResourceRecordSet": { "Name": "yyyyycgbwfvlp35zfuw2knqkk7kmlxop._domainkey.example.com.",
                             "Type": "CNAME",
                             "TTL": 10,
                             "ResourceRecords": [
                                 { "Value": "yyyyycgbwfvlp35zfuw2knqkk7kmlxop.dkim.amazonses.com" }
                             ]
                           }
    },
    { "Action": "UPSERT",
      "ResourceRecordSet": { "Name": "zzzzz4muc47hvvjll5b6qsf6ho7dfzqk._domainkey.example.com.",
                             "Type": "CNAME",
                             "TTL": 10,
                             "ResourceRecords": [
                                 { "Value": "zzzzz4muc47hvvjll5b6qsf6ho7dfzqk.dkim.amazonses.com" }
                             ]
                           }
    }
  ]
}


aws route53 change-resource-record-sets \
--hosted-zone-id AAAAAAAAAAAAAAAAAAAAA \
--change-batch file://cname.json

 

aws route53 list-resource-record-sets \
--hosted-zone-id AAAAAAAAAAAAAAAAAAAAA


aws ses get-identity-verification-attributes \
--identities example.com


-- 4. MXレコード作成
aws route53 list-hosted-zones


vim mx.json

{
  "Comment": "CREATE/DELETE/UPSERT a record ",
  "Changes": [
    { "Action": "UPSERT",
      "ResourceRecordSet": { "Name": "example.com.",
                             "Type": "MX",
                             "TTL": 10,
                             "ResourceRecords": [
                                 { "Value": "10 inbound-smtp.us-east-1.amazonaws.com" }
                             ]
                           }
    }
  ]
}


aws route53 change-resource-record-sets \
--hosted-zone-id AAAAAAAAAAAAAAAAAAAAA \
--change-batch file://mx.json

 

aws route53 list-resource-record-sets \
--hosted-zone-id AAAAAAAAAAAAAAAAAAAAA

 


-- 5. S3 バケットを作成する


aws s3 mb s3://bucket123

aws s3 ls


-- 6. バケットポリシーの追加

vim s3_policy.json

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowSESPuts-0000000000000",
            "Effect": "Allow",
            "Principal": {
                "Service": "ses.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::bucket123/*",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceAccount": "999999999999"
                },
                "StringLike": {
                    "AWS:SourceArn": "arn:aws:ses:*"
                }
            }
        }
    ]
}


aws s3api put-bucket-policy \
--bucket bucket123 \
--policy file://s3_policy.json

aws s3api get-bucket-policy \
--bucket bucket123

 

-- 7. 受信ルールセット作成

aws ses list-receipt-rule-sets

aws ses create-receipt-rule-set \
--rule-set-name ruleset01


aws ses describe-receipt-rule-set \
--rule-set-name ruleset01

aws ses set-active-receipt-rule-set \
--rule-set-name ruleset01


-- 8. 受信ルール作成

aws ses create-receipt-rule \
--rule-set-name ruleset01 \
--rule '{
  "Name": "rule01",
  "Enabled": true,
  "TlsPolicy": "Optional",
  "Recipients": ["example.com"],
  "Actions": [
    {
      "S3Action": {
        "BucketName": "bucket123"
      }
    }
  ],
  "ScanEnabled": true
}'

aws ses describe-receipt-rule \
--rule-set-name ruleset01 \
--rule-name rule01

 

-- 9. 動作確認

aws ses send-email \
--from hoge@example.com \
--to hoge@example.com \
--subject "subject01" \
--text "text01"


aws s3 ls s3://bucket123 --recursive


aws s3 cp s3://bucket123/l5rlqa85g0gijvbg999lhdecjpvs242b7rbkxxo1   - 

 


-- 10. クリーンアップ

-- 受信ルール削除

aws ses list-receipt-rule-sets

aws ses delete-receipt-rule \
--rule-set-name ruleset01 \
--rule-name rule01

 

-- 受信ルールセット削除
aws ses list-receipt-rule-sets

aws ses set-active-receipt-rule-set


aws ses delete-receipt-rule-set \
--rule-set-name ruleset01

 

-- バケットの削除

aws s3 ls
aws s3 rb s3://bucket123  --force


-- MXレコード削除

-- CNAMEレコード削除
dkimの3件を削除

 

-- identityの削除

aws ses list-identities

aws ses delete-identity \
--identity example.com