如何在 Amazon SES 中封鎖某些網域或電子郵件地址的電子郵件?

2 分的閱讀內容
0

我不想要 Amazon Simple Email Service (Amazon SES) 身分去接收特定網域或電子郵件地址的電子郵件。

解決方法

若要封鎖特定網域或電子郵件地址,避免其傳送電子郵件至您的 Amazon SES 身分,請完成下列步驟:

  1. 開啟 Lambda 主控台
    **注意:**Lambda 函數必須位於與 Amazon SES 搭配使用的相同 AWS 區域中。

  2. 選擇建立函數

  3. 選取從頭開始撰寫

  4. 針對函數名稱,輸入函數的名稱。例如,可以輸入 SESReceiptRule

  5. 對於 執行時期,請選擇 Node.js 20.x

  6. 變更預設執行角色下,對於執行角色選擇使用基本 Lambda 權限建立新角色

  7. 選擇建立函數

  8. 程式碼來源下,輸入下列程式碼:

    // 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' };
        }
    };
  9. 環境變數下,針對索引鍵,輸入blockingList
    **注意:**您可以建立無限數量的環境變數。但是,規則集的大小總計不得超過 4 KB。如需詳細資訊,請參閱建立 Lambda 環境變數

  10. 針對 blockingList 的值,輸入您想要封鎖的電子郵件地址和網域的逗點分隔清單。例如,輸入「example.com、JohnDoe@example.com」。
    **注意事項:**您不需要變更 Lambda 函數程式碼,即可編輯電子郵件地址和網域的清單。

  11. 選擇儲存**。**

建立 Amazon SES 接收規則

完成下列步驟:

  1. 開啟 Amazon SES 主控台
  2. 在導覽窗格中,選擇「電子郵件接收」。
  3. 選擇建立規則集、輸入規則集名稱,然後選擇建立規則集。或者,選擇現有的作用中規則集。
    注意:如果您建立新的規則集,則選擇該規則集,然後選擇設定為作用中的規則集
  4. 選擇檢視作用中的規則集
  5. 選擇建立規則
    **注意:**您也可以選擇更新現有的規則。
  6. 針對規則名稱,輸入規則的名稱。然後,填寫下列欄位:
    對於狀態,選擇已啟用
    (選擇性) 設定 Transport Layer Security (TLS)垃圾郵件和病毒掃描
  7. 選擇下一步
  8. 收件者條件下,選擇新增新的收件者條件。請輸入與您的 Amazon SES 身分相關聯的電子郵件地址或網域。
    **重要:**輸入您不想接收電子郵件的電子郵件地址或網域。請勿輸入您想要封鎖其電子郵件的電子郵件地址或網域。例如,如果您的 Amazon SES 身分使用電子郵件地址 "JaneRoe@example.net",而您想要封鎖來自 "example.com" 的電子郵件,請輸入 "JaneRoe@example.net"。
  9. 選擇下一步
  10. 新增動作下,對於新增動作,選擇調用 AWS Lambda 函數。然後,完成下列欄位:
    對於 Lambda 函數,選擇您的函數。
    對於調用類型,選擇 RequestResponse 調用
    (選擇性) 設定 ** SNS 主題**。
  11. 選擇下一步
  12. 選擇建立規則
    注意:如果看到缺少權限對話方塊,其內訊息為「 無法存取 Lambda 函數」,則 Amazon SES 需要該函數的權限。選擇新增權限以設定必要權限。

檢查該函數的 CloudWatch 日誌

若要確認電子郵件是否被封鎖,請完成下列步驟:

  1. 開啟 Amazon CloudWatch 主控台
  2. 在瀏覽窗格中,選擇日誌
  3. 從日誌群組清單中,選擇 Lambda 函數的日誌群組。例如,選擇 /aws/lambda/name_of_your_function
  4. 選擇要檢查的日誌串流。日誌串流會顯示 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

相關資訊

Amazon SES 電子郵件接收概念和使用案例

調用 Lambda 函數動作

AWS 官方
AWS 官方已更新 1 個月前