Amazon SES で特定のドメインまたはメールアドレスからのメールをブロックする方法を教えてください。
Amazon Simple Email Service (Amazon SES) の ID で特定のドメインまたはメールアドレスからのメールを受信しないようにしたいです。
解決策
特定のドメインまたはメールアドレスをブロックして Amazon SES ID にメールが送信されないようにするには、次の手順を実行します。
-
Lambda コンソールを開きます。
注: Lambda 関数は、Amazon SES で使用するのと同じ AWS リージョンにある必要があります。 -
[関数の作成] を選択します。
-
[最初から作成] を選択します。
-
[関数名] に、関数の名前を入力します。(SESReceiptRule など。)
-
[ランタイム] で [Node.js 20.x] を選択します。
-
[デフォルトの実行ロールの変更] の [実行ロール] で [基本的な Lambda アクセス許可で新しいロールを作成する] を選択します。
-
[関数の作成] を選択します。
-
[コードソース] に次のコードを入力します。
// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT-0 'use strict'; export const handler = async (event) => { 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. const blockingListString = process.env.blockingList; const blockingListArray = blockingListString.replace(/\s/g, '').split(","); // Check if the mail source matches with any of the email addresses or domains defined in the environment variable const isListed = () => { return blockingListArray.some(item => mail.source.endsWith(item)); }; console.log('Processing message:', messageId); // Processing the message if (isListed()) { console.log('Rejecting messageId: ', messageId, ' - Source: ', mail.source, ' - Recipients: ', receipt.recipients, ' - Subject: ', mail.commonHeaders['subject']); return { disposition: 'STOP_RULE_SET' }; } else { console.log('Accepting messageId:', messageId, ' - Source: ', mail.source, ' - Recipients: ', receipt.recipients, ' - Subject: ', mail.commonHeaders['subject']); return { disposition: 'CONTINUE' }; } };
-
[環境変数] の [キー] に blockingList と入力します。
注: 環境変数の作成数に制限はありません。ただし、セットの合計サイズは 4 KB を超えることはできません。詳細については、「Lambda 環境変数を作成する」を参照してください。 -
blockingList 値には、ブロックするメールアドレスとドメインをカンマ区切りのリストで入力します。入力例: "example.com, JohnDoe@example.com"
注: メールアドレスとドメインのリストを編集するために Lambda 関数コードを変更する必要はありません。 -
[保存] を選択します。
Amazon SES 受信ルールを作成する
次の手順を実行します。
- Amazon SES コンソールを開きます。
- ナビゲーションペインで、[E メール受信] を選択します。
- [ルールセットの作成] を選択し、ルールセット名を入力した後、[ルールセットを作成] を選択します。または、既存のアクティブなルールセットを選択します。
注: 新しいルールセットを作成する場合は、ルールセットを選択し、[アクティブなルールセットとして設定] を選択します。 - [アクティブなルールセットを表示] を選択します。
- [ルールの作成] を選択します。
注: 既存のルールを更新することもできます。 - [ルール名] に、ルールの名前を入力します。次に、下記のフィールドに入力します。
[ステータス] で [有効] を選択します。
(オプション) Transport Layer Security (TLS) や、スパムとウイルスのスキャンを設定します。 - [次へ] を選択します。
- [受信者条件] で [新しい受信者条件を追加] を選択します。Amazon SES の ID に関連付けられているメールアドレスまたはドメインを入力します。
重要: メールを受信しないメールアドレスまたはドメインを入力します。ブロックするメールアドレスやドメインは入力しないでください。例えば、Amazon SES の ID で "JaneRoe@example.net" というメールアドレスを使用していて、"example.com" からのメールをブロックする場合は、"JaneRoe@example.net" と入力します。 - [次へ] を選択します。
- [アクションの追加] の [新しいアクションを追加] で、[AWS Lambda 関数を呼び出す] を選択します。次に、以下のフィールドに入力します。
[Lambda 関数] でお使いの関数を選択します。
呼び出しタイプに [RequestResponse の呼び出し] を選択します。
(オプション) SNS トピックを設定します。 - [次のステップ] を選択します。
- [ルールの作成] を選択します。
注: 「アクセス許可がありません」というダイアログボックスが表示され、「Lambda 関数にアクセスできません」というメッセージが記載されている場合は、Amazon SES に関数へのアクセス許可が必要です。[アクセス許可を追加] を選択して、必要なアクセス許可を設定します。
関数の CloudWatch Logs を確認する
メールがブロックされていることを確認するには、次の手順を実行します。
- Amazon CloudWatch コンソールを開きます。
- ナビゲーションペインで、[ログ] を選択します。
- ロググループのリストから、該当する Lambda 関数のロググループを選択します。たとえば、/aws/lambda/name_of_your_function を選択します。
- 確認するログストリームを選択します。ログストリームには、Lambda 関数が処理したメールのメッセージとドメインが表示されます。
ログストリームの例: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
関連情報
関連するコンテンツ
- 質問済み 2年前lg...
- 質問済み 1ヶ月前lg...
- AWS公式更新しました 2年前
- AWS公式更新しました 1年前
- AWS公式更新しました 2年前
- AWS公式更新しました 1年前