AWS SES 中的收件人地址通配符支持

Fel*_*ira 1 email amazon-web-services

问题与类似;

通过 SES 接收电子邮件时,在生成接收规则时提供一些基本的通配符支持会很有帮助。

我们有一个依赖动态标签的用例,例如:user+{nonce}-{app}@domain.com

地址的 {app} 组件用于路由到不同的应用程序进行处理。

来自 AWS 论坛的那个问题在 3 年后仍未得到答复,因此请在此处询问以防万一发生变化或有解决方法。

基本上,我需要的是创建许多(可能有数千个)地址,{someEntityId}@example.com这样用户就可以将内容发送到这些地址(SES 在这里有一些非常低的限制,因此它不是一种选择)

或者

receiving-stuff-{someEntityIdWildcardHere}@example.com所以如果我收到一封电子邮件,以receiving-stuff-auHKs5On5@example.com我知道该怎么做。

额外信息:另一个选项是someEntityId从电子邮件发件人处获取(这已经完成),但它还有其他问题,例如必须为每个实体创建一个电子邮件。我也在使用 WorkMail,所以我无法设置域级别的接收规则,因为 WorkMail 会停止工作(我已经看到这种情况发生)。

MLu*_*MLu 6

SES 规则支持通常的加号符号,例如user+ something @example.com

所以你可以做的是:

  1. 为您的地址创建SES 规则receiving-stuff@example.com。这将捕获所有电子邮件receiving-stuff+{something}@example.com

    • 第一个Action可以是您的Lambda或将电子邮件存储到S3
    • 第二个操作停止规则集- 这对于停止receiving-stuff@WorkMail转发电子邮件很重要。
  2. 下一个SES 规则是整个域的原始 WorkMail 规则。

有了这些,任何电子邮件receiving-stuff+{something}@都将被 Lambda 拦截,所有其他电子邮件将直接发送到 WorkMail。

最后你的配置应该类似于这个(我用lambda@...而不是receiving-stuff@...):

SES 规则集

我还可以验证我ses-inbound-lambda是否被调用:

def lambda_handler(event, context):
    print(event['Records'][0]['ses']['receipt']['recipients'][0])
Run Code Online (Sandbox Code Playgroud)

打印出来:lambda+some-extra-text@{example}.com

并且还可以验证WorkMail是否仍然适用于其他用户:

亚马逊工作邮箱

希望有帮助:)