如何在 Amazon SES 中阻止来自特定域或电子邮件地址的电子邮件?

3 分钟阅读
0

我不希望我的 Amazon Simple Email Service (Amazon SES) 身份接收来自特定域或电子邮件地址的电子邮件。

解决方法

要阻止特定域名或电子邮件地址,使其不向您的 Amazon SES 身份发送电子邮件,请完成以下步骤:

  1. 打开 Lambda 控制台
    **注意:**Lambda 函数必须位于您使用 Amazon SES 的 AWS 区域。

  2. 选择 Create function(创建函数)。

  3. 选择 Author from scratch(从头开始编写)。

  4. 对于 Function Name(函数名称),输入您的函数的名称。例如,您可以输入 SESReceiptRule

  5. 对于 Runtime(运行时),选择 Node.js 20.x

  6. Change default execution role(更改默认执行角色),对于 Execution Role(执行角色),请选择 Create a new role with basic Lambda permissions(创建具有基本 Lambda 权限的新角色)。

  7. 选择 Create function(创建函数)。

  8. Code source(代码源)下,输入以下代码:

    // 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. Environment variables(环境变量)下,对于 Key(密钥),输入 blockingList
    **注意:**您可以创建无限数量的环境变量。但是,该集合的总大小不能超过 4 KB。有关详细信息,请参阅创建 Lambda 环境变量

  10. 对于 blockingList 值,输入要阻止的电子邮件地址和域名的逗号分隔列表。例如,输入“example.com, JohnDoe@example.com”。
    **注意:**您无需更改 Lambda 函数代码即可编辑电子邮件地址和域名列表。

  11. 选择 Save(保存)。

创建 Amazon SES 接收规则

完成以下步骤:

  1. 打开 Amazon SES 控制台
  2. 在导航窗格中,选择 Email Receiving(电子邮件接收)。
  3. 选择 Create a Rule Set(创建规则集),输入规则集名称,然后选择 Create a Rule Set(创建规则集)。或者,选择现有的活动规则集。
    **注意:**如果您要创建一个新的规则集,请选择该规则集,然后选择 Set as Active Rule Set(设置为活动规则集)。
  4. 选择 View Active Rule Set(查看活动规则集)。
  5. 选择 Create Rule(创建规则)。
    **注意:**您也可以选择更新现有规则。
  6. 对于 Rule name(规则名称),输入规则的名称。然后,填写以下字段:
    对于 Status(状态),选择 Enabled(已启用)。
    (可选)配置传输层安全性协议 (TLS)垃圾邮件和病毒扫描
  7. 选择 Next(下一步)。
  8. Recipient conditions(收件人条件)下,选择Add new recipient condition(添加新收件人条件)。输入与您的 Amazon SES 身份关联的电子邮件地址或域。
    **重要事项:**输入您不想接收电子邮件的电子邮件地址或域名。请勿输入您要阻止从其发送电子邮件的电子邮件地址或域。例如,如果您的 Amazon SES 身份使用的电子邮件地址为“JaneRoe@example.net”,而您要阻止来自“example.com”的电子邮件,则应输入“JaneRoe@example.net”。
  9. 选择 Next(下一步)。
  10. Add actions(添加操作)下,对于 Add new action(添加新操作),选择 Invoke AWS Lambda function(调用 AWS Lambda 函数)。然后,填写以下字段:
    对于 Lambda 函数,选择您的函数。
    对于调用类型,选择 RequestResponse invocation(请求响应调用)。
    (可选)配置 SNS 主题
  11. 选择 Next Step(下一步)。
  12. 选择 Create Rule(创建规则)。
    注意:如果您看到缺少权限对话框,其中的消息为“无法访问 Lambda 函数”,则 Amazon SES 需要该函数的权限。选择 Add permissions(添加权限)以配置所需的权限。

查看该函数的 CloudWatch 日志

要验证该电子邮件是否已被阻止,请完成以下步骤:

  1. 打开 Amazon CloudWatch 控制台
  2. 在导航窗格中,选择 Logs(日志)。
  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 官方已更新 5 个月前