如何在 Amazon SES 中阻止来自特定域或电子邮件地址的电子邮件?
我不希望我的 Amazon Simple Email Service (Amazon SES) 身份接收来自特定域或电子邮件地址的电子邮件。
解决方法
要阻止特定域名或电子邮件地址,使其不向您的 Amazon SES 身份发送电子邮件,请完成以下步骤:
-
打开 Lambda 控制台。
**注意:**Lambda 函数必须位于您使用 Amazon SES 的 AWS 区域。 -
选择 Create function(创建函数)。
-
选择 Author from scratch(从头开始编写)。
-
对于 Function Name(函数名称),输入您的函数的名称。例如,您可以输入 SESReceiptRule。
-
对于 Runtime(运行时),选择 Node.js 20.x。
-
在 Change default execution role(更改默认执行角色),对于 Execution Role(执行角色),请选择 Create a new role with basic Lambda permissions(创建具有基本 Lambda 权限的新角色)。
-
选择 Create function(创建函数)。
-
在 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' }; } };
-
在 Environment variables(环境变量)下,对于 Key(密钥),输入 blockingList。
**注意:**您可以创建无限数量的环境变量。但是,该集合的总大小不能超过 4 KB。有关详细信息,请参阅创建 Lambda 环境变量。 -
对于 blockingList 值,输入要阻止的电子邮件地址和域名的逗号分隔列表。例如,输入“example.com, JohnDoe@example.com”。
**注意:**您无需更改 Lambda 函数代码即可编辑电子邮件地址和域名列表。 -
选择 Save(保存)。
创建 Amazon SES 接收规则
完成以下步骤:
- 打开 Amazon SES 控制台。
- 在导航窗格中,选择 Email Receiving(电子邮件接收)。
- 选择 Create a Rule Set(创建规则集),输入规则集名称,然后选择 Create a Rule Set(创建规则集)。或者,选择现有的活动规则集。
**注意:**如果您要创建一个新的规则集,请选择该规则集,然后选择 Set as Active Rule Set(设置为活动规则集)。 - 选择 View Active Rule Set(查看活动规则集)。
- 选择 Create Rule(创建规则)。
**注意:**您也可以选择更新现有规则。 - 对于 Rule name(规则名称),输入规则的名称。然后,填写以下字段:
对于 Status(状态),选择 Enabled(已启用)。
(可选)配置传输层安全性协议 (TLS) 或垃圾邮件和病毒扫描。 - 选择 Next(下一步)。
- 在 Recipient conditions(收件人条件)下,选择Add new recipient condition(添加新收件人条件)。输入与您的 Amazon SES 身份关联的电子邮件地址或域。
**重要事项:**输入您不想接收电子邮件的电子邮件地址或域名。请勿输入您要阻止从其发送电子邮件的电子邮件地址或域。例如,如果您的 Amazon SES 身份使用的电子邮件地址为“JaneRoe@example.net”,而您要阻止来自“example.com”的电子邮件,则应输入“JaneRoe@example.net”。 - 选择 Next(下一步)。
- 在 Add actions(添加操作)下,对于 Add new action(添加新操作),选择 Invoke AWS Lambda function(调用 AWS Lambda 函数)。然后,填写以下字段:
对于 Lambda 函数,选择您的函数。
对于调用类型,选择 RequestResponse invocation(请求响应调用)。
(可选)配置 SNS 主题。 - 选择 Next Step(下一步)。
- 选择 Create Rule(创建规则)。
注意:如果您看到缺少权限对话框,其中的消息为“无法访问 Lambda 函数”,则 Amazon SES 需要该函数的权限。选择 Add permissions(添加权限)以配置所需的权限。
查看该函数的 CloudWatch 日志
要验证该电子邮件是否已被阻止,请完成以下步骤:
- 打开 Amazon CloudWatch 控制台。
- 在导航窗格中,选择 Logs(日志)。
- 在日志组列表中,选择您的 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
相关信息

相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 3 年前