接收电子邮件在Amazon SES中不起作用

sac*_* DK 8 amazon-s3 amazon-web-services amazon-ses

我试图访问电子邮件,并试图将电子邮件存储在S3存储桶中,但是它不起作用。

SES配置:

  • 域已验证
  • 电子邮件地址已验证
  • 在收件人中提供的规则集中创建的规则集
  • 在给定的S3动作存储桶名称中
  • AMAZON_SES_SETUP_NOTIFICATION已收到。

之后,如果我收到来自特定收件人的任何电子邮件,则该电子邮件不会存储在S3中。

小智 8

只需确保您的规则集显示在“活动规则集”中即可。创建规则后,默认情况下它会进入“非活动规则集”,您需要将其标记为“设置为活动规则集”,一旦执行此操作,它将进入“活动规则集”部分单击“查看活动规则集”按钮即可看到它。


Yev*_*yev 7

如果您使用 Route53 进行域管理,您可能忘记设置MX record它。

这是有关如何操作的说明。

https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-mx-record.html


ado*_*out 7

如果其他人的注册商有一个令人困惑的设置菜单:

在 SES 设置菜单中,它们显示 MX 记录名称 = 您的域,值 = 10 inbound-smtp.us-east-1.amazonaws.com。“10”是优先级,我只是将它直接复制/粘贴到我的注册商的服务器字段中,这导致记录无效。


Mei*_*bay 7

TL; 博士

不要将 AWS 的 MX 记录添加到现有的 MX 记录中;您需要使用当前未用于电子邮件的域创建新的 MX 记录。

背景

我并不完全熟悉 MX 记录和 SES,而且我已经在 AWS Route53 中有一个 MX 记录集,我正在使用 GMAIL (G Suite)。

所以我遵循了所有必要的步骤——SES-Receive-Inbound-Emails AWS 博客文章——但我仍然不明白为什么我在我的 S3 存储桶中没有看到新的电子邮件;我只能AMAZON_SES_SETUP_NOTIFICATION在桶里看到。

正如之前的答案中已经提到的,您必须添加 AWS 的 MX 记录才能接收电子邮件,该记录最终将存储在您的 S3 存储桶中。

学过的知识

在同一个记录集中有多个 MX 记录仅用于备份目的。如果服务器无法访问,它会移动到列表中的下一条记录。不要期望所有 MX 记录都会收到电子邮件,这永远不会发生。

糟糕的解决方案

1 ASPMX.L.GOOGLE.COM
5 ALT1.ASPMX.L.GOOGLE.COM
5 ALT2.ASPMX.L.GOOGLE.COM
10 ALT3.ASPMX.L.GOOGLE.COM
10 ALT4.ASPMX.L.GOOGLE.COM
10 inbound-smtp.eu-west-1.amazonaws.com # <-- added this one
Run Code Online (Sandbox Code Playgroud)

我还尝试将 AWS MX 的优先级从 10 更改为 1,这很愚蠢,因为我仍然希望通过 GMAIL 将电子邮件接收到我的邮箱。

好的解决方案

创建一个新的别名子域并将其用于 SES。

就是这样:

  1. 假设我拥有mydomain.com并且我的电子邮件地址是willy@mydomain.com,我想使用别名子域ses.mydomain.com
  2. 在您的 GSuite 中添加别名域 - 使用管理员帐户登录并转到管理控制台 > 域 >按照步骤操作- 添加域别名 > 验证并确认所有权 > 域名提供商 = 其他
  3. 根据上一步中的指南在AWS Route53中创建一个TXT记录;这将验证您是否拥有别名子域
  4. 回到 AWS,在 Route53 中创建一个新的记录集
    - Name:  ses.mydomain.com # replace 'ses' if necessary
    - Type:  MX
    - Value: # this is temporary, we'll change it in the next steps
    1 ASPMX.L.GOOGLE.COM
    5 ALT1.ASPMX.L.GOOGLE.COM
    5 ALT2.ASPMX.L.GOOGLE.COM
    10 ALT3.ASPMX.L.GOOGLE.COM
    10 ALT4.ASPMX.L.GOOGLE.COM
    
    Run Code Online (Sandbox Code Playgroud)
  5. 将 SES 设置为 S3 - 按照步骤操作 - SES-Receive-Inbound-Emails AWS 博客文章
    • 验证别名子域ses .mydomain.com
    • 验证电子邮件地址 -willy@ses.mydomain.com检查您的常规收件箱willy@mydomain.com打开来自 AWS 的电子邮件并通过单击验证链接来验证此电子邮件地址
    • 创建规则并添加willy@ses.mydomain.com为收件人
  6. 编辑之前在 Route53 中创建的 MX 记录集
    - Name:  ses.mydomain.com
    - Type:  MX
    - Value: 10 inbound-smtp.${AWS_REGION}.amazonaws.com  # replace ${AWS_REGION}
    
    Run Code Online (Sandbox Code Playgroud)
  7. 发送电子邮件(从任何邮箱)到willy@ses.mydomain.com- 您将在 S3 存储桶中看到该电子邮件!对象名称经过哈希处理,您需要下载并将其扩展名更改为.eml

我希望这有帮助。我在这个问题上敲了几个小时的头。

  • aws 官方指南没有提到您在此处列出的一半内容。https://docs.aws.amazon.com/ses/latest/dg/receiving-email-setting-up.html (2认同)

小智 5

对我来说,问题是我没有使规则集处于活动状态。我对设置的细节失去了理智,但它们都是正确的。

确保转到“查看活动规则集”并确保其中列出了您创建的入站规则。


小智 0

我不是专家,但根据我的经验,在 SES 可以写入元素之前,您可能必须向存储桶分配权限,我一开始也遇到类似的问题,所以我在配置规则时在操作选择中选择了创建存储桶选项,然后使用正确方式配置的权限自动创建存储桶。