Amazon SES で特定のドメインまたは E メールアドレスからの E メールをブロックするにはどうすればよいですか?
使用している Amazon Simple Email Service (Amazon SES) アイデンティティで特定のドメインまたは E メールアドレスからの E メールを受信したくありません。これらの E メールをブロックする方法を教えてください。
簡単な説明
特定のドメインまたは E メールアドレスからご利用の Amazon SES アイデンティティに E メールが送信されないようにするには、以下の手順を実行します。
1. AWS Lambda 関数を作成して、受信メールを処理し、送信者を評価し、送信者が特定のドメインまたは E メールアドレスと一致した場合にメッセージをドロップします。
2. 受信するすべての E メールを Lambda 関数にルーティングする Amazon SES の受信ルールを作成します。
3. 関数の Amazon CloudWatch Logs をチェックして、ブロックされている E メールを確認します。
注意: Amazon SES 受信ルールに Lambda アクションを追加すると、Amazon SES と Lambda の料金が発生します。
解決方法
AWS Lambda 関数を作成する
2. ナビゲーションバーのリージョンセレクターで、Amazon SES で使用している AWS リージョンを選択します。Lambda 関数は、Amazon SES で使用しているのと同じリージョンに存在する必要があります。詳細については、「Lambda 関数アクションの呼び出し」を参照してください。
3. [Create function] を選択します。
4. [Author from scratch] を選択します。
5. [Function Name] に関数の名前を入力します。たとえば、「SESReceiptRule」と入力できます。
6. [Runtime] で、「Node.js 10.x」を選択します。
7. [Permissions] で、[Choose or create an execution role] を展開します。
8. [Execution Role] で、[Create a new role with basic Lambda permissions] を選択します。
9. [Create function] を選択します。
10. [Function code] で、以下のコードを入力します。
// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT-0 'use strict'; const AWS = require('aws-sdk'); exports.handler = (event, context, callback) => { console.log('Blocking email filter starting'); const sesNotification = event.Records[0].ses; const messageId = sesNotification.mail.messageId; const receipt = sesNotification.receipt; const mail = sesNotification.mail; // Convert the environment variable into array. Clean spaces from it. var blockingListString = process.env.blockingList; blockingListString = blockingListString.replace(/\s/g,''); var blockingListArray = blockingListString.split(","); // Check if the mail source matches with any of the email addresses or domains defined in the environment variable function isListed() { var length = blockingListArray.length; for(var i = 0; i < length; i++) { if (mail.source.endsWith(blockingListArray[i])) return true; } return false; } console.log('Processing message:', messageId); // Processing the message if (isListed()) { callback(null, {'disposition':'STOP_RULE_SET'}); console.log('Rejecting messageId: ', messageId, ' - Source: ', mail.source, ' - Recipients: ',receipt.recipients,' - Subject: ', mail.commonHeaders['subject']); } else { console.log('Accepting messageId:', messageId, ' - Source: ', mail.source, ' - Recipients: ',receipt.recipients,' - Subject: ', mail.commonHeaders['subject']); callback(); } };
11. [キー] の、[環境変数] に、「blockingList」を入力します。
注意: セットの合計サイズが 4 KB を超えない限り、作成できる環境変数の数に制限はありません。詳細については、「AWS Lambda 環境変数の使用」を参照してください。
12. 「blockingList」の [値] には、ブロックする E メールアドレスとドメインのリストを、カンマで区切って入力します。たとえば、「example.com, JohnDoe@example.com」と入力します。
注意: Lambda 関数コードを変更することなく、E メールアドレスとドメインのリストを編集できます。
13. [Save] (保存) を選択します。
Amazon SES 受信ルールの作成
1. Amazon SES コンソールを開きます。
2. ナビゲーションペインで、[Email Receiving]、[Rule Sets] の順に選択します。
3. 既存のアクティブなルールセットにルールを追加する場合は、ステップ 4 に進みます。新しいルールセットを作成するには、[Create a Rule Set (ルールセットの作成)] を選択し、ルールセットの名前を入力して、[Create a Rule Set (ルールセットの作成)] を選択します。
注意: 新しいルールセットを作成する場合は、ルールセットを選択し、次に [Set as Active Rule Set (アクティブなルールセットとして設定する)] を選択します。
4. [アクティブなルールセットを表示する] を選択します。
5. [Create Rule] (ルールの作成) を選択します。
注意: 次の手順で説明されている同じ値で既存のルールの更新を選択することもできます。
6. Recipients に、Amazon SES ID に関連付けられた E メールアドレスまたはドメインを入力します。
重要: 特定の送信者からの E メールの受信を回避したい E メールアドレスまたはドメインを入力します。E メールをブロックしたい E メールアドレスまたはドメインを入力しないでください。例えば、Amazon SES ID が E メールアドレス「JaneRoe@example.net」を使用して、「example.com」からの E メールをブロックする場合は、「JaneRoe@example.net」と入力します。
7. [Next Step] を選択します。
8. [Actions] の [Add action] で、Lambda を選択します。次に、以下のフィールドに入力します。
[Lambda function] で、作成した関数を選択します。
[Invocation type] で、RequestResponse を選択します。
(オプション)ユースケースの必要に応じて SNS トピックを設定します。または、このフィールドを空白のままにすることもできます。このフィールドの詳細については、Lambda アクションを参照してください。
9. [Next Step] を選択します。
10. [Rule Details] で、以下のフィールドに入力します。
[ルール名] に、ルールの名前を入力します。
[Enabled (有効)] で、ルールがアクティブなルールとして作成されるように、このチェックボックスが選択されていることを確認してください。
(オプション) ユースケースの必要性に応じて、[Require TLS (TLS が必要)] または [Enable spam and virus scanning (スパムとウイルスのスキャンを実行する)] を選択します。
[Rule set (ルールセット)] で、アクティブなルールセットが選択されていることを確認します。アクティブなルールセットは、名前に (Active) が含まれています。
[Insert after rule (次のルールの後に挿入)] リストで、ルールセット内でルールに使用する位置を選択します。
11. [Next Step] を選択します。
12. [Create Rule] (ルールの作成) を選択します。
注意: [Missing Permissions] ダイアログボックスに「 SES was unable to access the resource [your Lambda function]」というメッセージが表示された場合、Amazon SES にはその関数に対するアクセス許可が必要です。[Add permissions] を選択して、必要なアクセス許可を設定できます。
関数の Amazon CloudWatch Logs を確認する
Lambda 関数と Amazon SES ルールを設定した後、以下の手順に従って、ブロックされている E メールを確認します。
1. CloudWatch コンソールを開きます。
2. ナビゲーションペインで、[ログ] を選択します。
3. ロググループのリストから、Lambda 関数のロググループを選択します。たとえば、[/aws/lambda/name_of_your_function] を選択します。
4. 確認するログストリームを選択します。このログストリームには、次のような Lambda 関数によって処理されている E メールメッセージとドメインが表示されます。
14:08:25 START RequestId: aa939984-1b9b-11e7-83d2-efc6877bdc9b Version: $LATEST 14:08:25 2017-04-07T14:08:25.957Z aa939984-1b9b-11e7-83d2-efc6877bdc9b Blocking email filter starting 14:08:25 2017-04-07T14:08:25.958Z aa939984-1b9b-11e7-83d2-efc6877bdc9b Processing message: jc0iurgrtkrsrs7f5pk0rsmf4r3q0poikdjfdi01 14:08:25 2017-04-07T14:08:25.959Z aa939984-1b9b-11e7-83d2-efc6877bdc9b Rejecting messageId: jc0iurgrtkrsrs7f5pk0rsmf4r3q0poikdjfdi01 - Source: user@example.com - Recipients: [ 'user@domain.com' ] - Subject: This is an unwanted message 14:08:25 END RequestId: aa939984-1b9b-11e7-83d2-efc6877bdc9b
関連情報

関連するコンテンツ
- 質問済み 4年前lg...
- 質問済み 2ヶ月前lg...
- 質問済み 3ヶ月前lg...
- 質問済み 5年前lg...
- AWS公式更新しました 3ヶ月前
- AWS公式更新しました 6ヶ月前
- AWS公式更新しました 3年前
- AWS公式更新しました 6ヶ月前