この記事について
準備編、受信編の続き
準備編
https://qiita.com/Sand-River/items/4c0dbb16b70e11ec594a
受信編
https://qiita.com/Sand-River/items/4b22f3d0369ab68cfb3f
送信定義
SES Dashboardの「Simple Mail Transfer Protocol (SMTP) settings」から「Create SMTP credentials」を選択
IAM User Nameだけ入力して「作成」
(必要なIAM Policyは自動でアタッチされる。ses:SendRawEmailのみ許可)
ユーザ作成の完了と共にSMTPの認証情報がダウンロードできる。
注意書きにもあるが、SMTP認証情報を取得できるのはSESからユーザを作成した__このタイミングのみ__で、失った場合はユーザを作り直す必要がある。
他のIAM Userのようにグループを作成してそれにSendRawEmailをAllowして……という手も使えない。
Gmailの設定
新規にGoogleアカウントを作成する
Googleアカウントを作成する。
「代わりに現在のメールアドレスを使用」からSESで登録したドメインのメールアドレスを登録。
S3からメールアドレス検証のメールを探し出して確認コードを入力すればOK。
Gmailの設定
Gmailの設定(右上の歯車マーク)→「すべての設定を表示」
「アカウント」タブの「名前:」にある「他のメールアドレスを追加」を選択
Fromの表示名とメールアドレスを指定する。
Amazon SESのSMTPサーバは email-smtp.<region>.amazonaws.com となる。
例)email-smtp.us-east-1.amazonaws.com
ポートはデフォルトの587でOK。
ユーザ名とパスワードはIAM Userを作成した際の認証情報に記述された情報を転記する。
「TLSを使用したセキュリティで保護された接続(推奨)」を選択(デフォルト)。
「認証情報を確認しています」と表示された後、画面遷移する。
指定したメールアドレスに確認コードが配信される。
受信編で正しく設定されていればS3にメールが溜まっているはずなのでそこから受信したメールのオブジェクトをダウンロードしてきて確認コードを入力する。
言語に日本語を指定してるとbase64でエンコードされていてテキストエディタで開いても読めない……コマンドラインでデコードを書くならこんな感じだろうか。<mailfile>の指定が2回入るのが美しくない。
grep -n -E "^\r" <mailfile> | awk -F ':' '{print $1}' | xargs -I{} sed 1,{}d <mailfile> | base64 -d
正しく確認コードが認証されればウィンドウが閉じ、名前の一覧に今追加したアドレスが追加されているはず。
補遺
なお、勘の良い方ならお気付きだろうが、Gmailに登録したメールアドレスは登録ドメインのものであれば任意である。ドメインを自分一人で使う場合であればそこまで気にする必要はないが、グループで使う場合などはSMTP用のIAM Userに制限を掛けて置く必要がある。サンプルとして以下を参照のこと。
(この例であればFromとして利用できるアドレスがfoo@example.comに限られる)
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"ses:SendRawEmail"
],
"Resource":"*",
"Condition":{
"StringEquals":{
"ses:FromAddress":"foo@example.com"
}
}
}
]
}
続き
SESで受信したメールを転送する処理を後回しにしていたので、そこをうまいこと作る。
……ちょいちょいとメールを別に送る処理をLambdaで作ればええだけやろ、と思ってた時代がありました。