Amazon CloudWatchにてSESの拒否のメトリクスを確認したく、
拒否イベントを発生させるのに苦労したEICAR テストファイルの保存についてをメモいたします。
#Amazon SESでの拒否イベント
Amazon SESにて、拒否イベントを発生させるには、送信した内容(メッセージ)にて
ウイルスを検出したと判断させる必要があります。
Amazon SES にはメールボックスシミュレーターが用意されており、
架空の E メールアドレスを作成せずに E メール送信アプリケーションをテストしたり、
1 日あたりの送信クォータに影響を与えずにシステムの最大スループットを確認することができますが、
拒否イベントをテストするためのアドレスは、現時点では含まれていません。
その為、ウイルスを検知させるためのEICARテストファイルをEメールに添付することで
拒否イベントのテストを行う必要があります。
【参考】 Amazon SES開発者ガイド
###EICARテストファイルとは
ウイルス対策ソフトの動作確認を目的に作成された、無害なテストファイルです。
ウイルス対策ソフトはこのファイルをウイルスとして取扱います。
##問題点
ウイルス対策ソフトが導入されているローカルPCやWorkSpace上に
EICARテストファイルを作成保存した時点でウイルス対策ソフトで検知され、
駆除(削除)されてしまうのでEメールに添付以前にファイル保存ができませんでした。
※他にやる方法があったのかもしれませんが・・・。
##対処方法
以下のようにEICARテストファイルをLambdaで一度S3上に作成し、
S3の作成したファイルを読込んで添付しSESにて送信する方法で対応いたしました。
この投稿では、LamdbaにてS3上にEICARテストファイル生成する部分(①)の
実装を記述したいと思います。
###Lambdaの処理
AWSにログインし、サービスからLambdaを選択 > 関数の作成を押下します。
「一から作成」を選択し、基本的な情報を入力します。(詳細は、割愛します。)
ランタイムは「Python3.6」を選択しております。
import boto3
def lambda_handler(event, context):
# オブジェクトを取得
s3 = boto3.resource('s3')
# バケット名を指定
bucket = 'your_backet_name'
# S3に保管するEICARテストファイル名(パス)
fileName = 'reject.txt'
# EICARテストファイルの内容
fileContents = 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
obj = s3.Object(bucket,fileName)
obj.put(Body=fileContents)
return
上記の関数コードを記述し、右上の「保存」ボタン押下後、テスト実行すると
S3の指定バケットにEICARテストファイルが作成されます。
##まとめ
ローカル上に保存できなくとも、S3に保存することで対応できます。
次の投稿では、実際にSESで拒否するまでの工程(②~③)を投稿したいと思います。