こんにちは。植松です。
AWSのリソースをCLIで管理するケースは往々にしてあると思います。
その際に異常を検知したらメールで通知を行う方法の一つとして、openssl + SESでメール通知を行う方法をご紹介します。
1)SESのSMTP設定を実施
普段SESを使う手順と同じです。
既に作成済みのユーザーを使うでもよし、新規にユーザーを作るでもよし。
2)アクセスキーとシークレットアクセスキーをbase64エンコード
ユーザーのcredentials.csvに記載してあるアクセスキーとシークレットアクセスキーをbase64形式にエンコードします。
アクセスキーをbase64エンコード
echo -n {アクセスキー} | base64
結果をメモっておく
シークレットアクセスキーをbase64 エンコード
echo -n {シークレットアクセスキー} | base64
結果をメモっておく
3)AWS SMTPサーバへのTLS接続&メール送信
openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.ap-northeast-1.amazonaws.com:587
250 Ok と表示されるので、以下入力
AUTH LOGIN
{base64エンコードしたアクセスキー}
{base64エンコードしたシークレットアクセスキー}
235 Authentication successful. と表示されるので、以下入力
MAIL FROM: {送信元メールアドレス}
RCPT TO: {送信先メールアドレス}
DATA
from:{送信元メールアドレス}
to:{送信先メールアドレス}
Subject: TestSubject
Test
.
QUIT
451 4.4.2 Timeout waiting for data from client.
read:errno=0
このように表示されたら、メールが届いているか確認
私は3)の部分をスクリプトにして使い回してます。
注意点など
受信メールサーバの設定によっては迷惑メール扱いになる可能性もあるので、opensslコマンドを利用したメール送信は商用としては利用しないほうがよいです。
451 Timeout waiting for data from clientと出てたので、うまく行ってないのか?と何度もトライしてましたが、迷惑メールフォルダに大量に溜まってました。。。