Amazon SES で特定のドメインまたは E メールアドレスからの E メールをブロックするにはどうすればよいですか?
Amazon Simple Email Service (Amazon SES) の ID で特定のドメインまたは E メールアドレスからメールを受信しないようにしたいと考えています。
簡単な説明
特定のドメインまたは E メールアドレスから Amazon SES の ID に E メールが送信されないようにするには、以下の手順を実行します:
- AWS Lambda 関数を作成します。受信メールを処理し、送信者を評価し、送信者が特定のドメインまたは E メールアドレスに一致する場合にメッセージをドロップする関数を構成します。
- すべての受信メールを Lambda 関数にルーティングする Amazon SES 受信ルールを作成します。
- 関数の Amazon CloudWatch Logs で、E メールがブロックされていることを確認します。
注: Amazon SES 受信ルールに Lambda アクションを追加すると、Amazon SES と Lambda の料金が発生します。
解決策
Lambda 関数を作成する
1. AWS Lambda コンソールを開きます。Amazon SES に使用する AWS リージョンを選択します。Lambda 関数は Amazon SES で使用するのと同じ AWS リージョンにある必要があります。詳細については、「Lambda 関数アクションを呼び出す」を参照してください。
2. [関数の作成] を選択します。
3. [最初から作成] を選択します。
4. [関数名] に、関数の名前を入力します。例えば、「SESReceiptRule」と入力します。
5. [ランタイム] で、関数の言語を選択します。この例では [Node.js 14.x] が選択されています。
6. [アーキテクチャ] で、関数コードのアーキテクチャを選択します。
7. [アクセス許可] で、[デフォルトの実行ロールの変更] を展開します。
8. [実行ロール] で、[基本的な Lambda アクセス許可で新しいロールを作成] を選択します。
9. [関数の作成] を選択します。
10. [コードソース] セクションの [index.js] タブで、次のコードを入力します:
// 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」と入力します。
注: E メールアドレスとドメインのリストを編集するために Lambda 関数コードを変更する必要はありません。
13. [ファイル] を選択し、[保存] を選択します。
Amazon SES 受信ルールを作成する
- Amazon SES コンソールを開きます。
- ナビゲーションペインで、[E メール受信] を選択します。
- 既存のアクティブなルールセットにルールを追加する場合は、ステップ 4 に進んでください。新しいルールセットを作成するには、[ルールセットの作成] を選択し、ルールセット名を入力して [ルールセットの作成] を選択します。
注: 新しいルールセットを作成する場合は、ルールセットを選択してから [アクティブなルールセットとして設定] を選択してください。 - [アクティブなルールセットを表示] を選択します。
- [ルールの作成] を選択します。
注: 既存のルールを、以下に説明する手順と同じ値で更新することもできます。 - [ルール設定の定義] に、次の情報を入力します:
[ルール名] に、ルールの名前を入力します。
[ステータス] で、[有効] ボックスをオンにして、ルールをアクティブなルールとして作成します。その後、[次へ] を選択します。 - [受信者の条件] で、[受信者の新しい条件の追加] を選択します。
- [受信者の条件] に、Amazon SES の ID に関連付けられている E メールアドレスまたはドメインを入力します。その後、[次へ] を選択します。
重要: 特定の送信者からの E メールを受信しないようにする E メールアドレスまたはドメインを入力します。ブロックする E メールアドレスやドメインは入力しないでください。例えば、Amazon SES の ID で「JaneRoe@example.net」という E メールアドレスを使用していて、「example.com」からの E メールをブロックする場合は、「JaneRoe@example.net」と入力します。 - [アクションの追加] 画面の [新しいアクションを追加] で、[AWS Lambda 関数の呼び出し] を選択します。次の情報を入力します:
[Lambda 関数] で、作成した関数を選択します。
[呼び出しタイプ] で、[RequestResponse の呼び出し] を選択します。
(オプション) ユースケースで必要な場合は、[SNS トピック] を設定します。このフィールドは空白のままにすることもできます。このフィールドの詳細については、「Lambda 関数アクションを呼び出す」を参照してください。その後、[次へ] を選択します。 - [ルールの作成] を選択します。
注: [アクセス許可がありません] ダイアログボックスに、「SES was unable to access the resource [your Lambda function].」というメッセージが表示される場合があります。 このエラーは、Amazon SES で関数に対するアクセス許可が必要であることを意味しています。[アクセス許可を追加] を選択して、必要なアクセス許可を設定します。
関数の 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: $LATEST14: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
関連情報
関連するコンテンツ
- 質問済み 2ヶ月前lg...
- 質問済み 8ヶ月前lg...
- 質問済み 1年前lg...
- AWS公式更新しました 2年前
- AWS公式更新しました 2年前
- AWS公式更新しました 1年前
- AWS公式更新しました 1年前