Amazon WorkMailは、Eメールのフロールールを使用するときに AWS Lambda 関数を使用して組織のメールフローを制御できるようになりました。
*Amazon WorkMailはまだ東京リージョンではサポートされていません 以下のリージョンのみでサポートされています。 米国東部 (バージニア北部) 欧州 (アイルランド) 米国西部 (オレゴン)
メリット
- 完全にカスタマイズ可能な条件で強力なメールフロー制御システムを構築できる
- Lambdaを簡単に作成し特定の種類の受信または送信メールをブロックできる
- 送受信メールに受信者を追加、削除が可能になる
Amazon WorkMailでのLambdaアクションの構成
同期実行Lambda構成 フロールールに一致するメールメッセージは、送信または配信される前に処理のためにLambda関数に渡される 機密メールの配信のブロックなどのユースケースの受信または送信メールフローを制御する
非同期実行Lambda構成 フロールールに一致するメールメッセージは、送信または配信されている間に処理のためにLambda関数に渡される メール配信に影響を与えず、受信または送信メールメッセージのメトリックの収集に使用される
Lambda関数の作成
AWS Lambdaコンソールを使用して、Lambda関数を作成し、Eメールフローを制御します。
サンプルのLambda関数をAWSサーバーレスアプリケーションリポジトリからアカウントにデプロイします。
Amazon WorkMailで使用する独自のLambda関数を作成する場合は、AWS CLIを使用してアクセス許可を設定する必要があります。
aws --region REGION lambda add-permission --function-name MY_FUNCTION_NAME --statement-id AllowWorkMail --action "lambda:InvokeFunction" --principal workmail.REGION.amazonaws.com
MY_FUNCTION_NAMEをLambda関数の名前に置き換え、REGIONをAmazon WorkMailリージョンに置き換えます。
ラムダイベントデータ
Lambda関数は、次のイベントデータを使用してトリガーされます。
"summaryVersion": "2018-10-10", "envelope": { "mailFrom" : { "address" : "from@example.com" }, "recipients" : [ { "address" : "recipient1@example.com" }, { "address" : "recipient2@example.com" } ] }, "sender" : { "address" : "sender@example.com" }, "subject" : "Hello From Amazon WorkMail!", "messageId": "00000000-0000-0000-0000-000000000000", "invocationId": "00000000000000000000000000000000", "flowDirection": "INBOUND", "truncated": false }
同期実行Lambda応答スキーマ
同期のLambda実行アクションを含むEメールフロールールがEメールメッセージと一致する場合、Amazon WorkMailは設定されたLambda関数を呼び出し、応答を待ってからEメールメッセージでアクションを実行します。 Lambda関数は、アクション、アクションタイプ、適用可能なパラメーター、およびアクションが適用される受信者を,事前定義されたスキーマに従って応答を返します。
以下はメールメッセージから受信者を削除する例です
{ 'actions': [{ 'action' : {'type': 'DEFAULT'}, 'allRecipients': True }, { 'action' : {'type': 'DROP'}, 'recipients' : ['drop-recipient@example.com'] }] }
Lambda関数を作成するときに使用するその他のコード例はAmazon WorkMail Lambdaテンプレートにあります。