接收电子邮件在Amazon SES中无效

时间:2017-09-08 09:33:22

标签: amazon-web-services amazon-s3 amazon-ses

我尝试访问该电子邮件并尝试将电子邮件存储在S3存储桶中,但它无效。

SES配置:

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

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

10 个答案:

答案 0 :(得分:2)

如果您使用Route53进行域管理,则可能会忘记为其设置MX记录。

这里是有关操作方法的说明。

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

如果还有其他问题,请检查以下内容:

  1. 所有“零件”都位于同一区域(S3存储桶,Route53托管区域,SES配置)
  2. SES有权写入S3存储桶(see this tutorial
  3. 存储桶名称与您的域名相同
  4. Route53托管区域具有MX记录,这些记录由SES配置自动注入。设置时只需注意

答案 3 :(得分:1)

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

答案 4 :(得分:1)

您将要验证正在使用的规则集是否处于活动状态。转到SES,然后点击侧边栏中电子邮件接收部分下方的“规则集”。单击“查看活动规则集”按钮。确保这是您当前期望使用的规则集。要从“规则集”屏幕激活规则集,请单击规则集旁边的复选框,然后单击“设置为活动规则集”。

答案 5 :(得分:1)

对我来说,问题在于我没有使规则集处于活动状态。我对设置的细节一无所知,但它们都是正确的。

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

答案 6 :(得分:0)

我不是专家,但在我的经验中,你可能需要在SES可以编写元素之前为特权提供特权,我在开始时遇到了类似的问题,所以我在动作选择中选择了创建Bucket的选项。配置规则,然后自动创建存储桶,并以正确的方式配置权限。

答案 7 :(得分:0)

起初我有同样的问题。但是我注意到“拒绝访问”不是配置问题,而是与直接在浏览器中访问此信息有关的东西。通过Visual Studio Code中的终端通过“ Aws Cli”下载文件后,我可以读取数据。请注意激活规则-在SES面板中-因为那里的通知消息有问题。 ;)

答案 8 :(得分:0)

MX记录的主机名必须以“。”结尾。像这样:

10 inbound-smtp.us-east-1.amazonaws.com。

否则,记录的主机名将以您的域名作为后缀,

答案 9 :(得分:0)

TL; DR

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

背景

我对MX记录和SES并不十分熟悉,并且我已经在AWS Route53中拥有MX记录集,我正在使用GMAIL(G Suite)。

所以我遵循了所有必要的步骤-SES-Receive-Inbound-Emails AWS Blog Post-我仍然不明白为什么我在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

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

好的解决方案

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

方法如下:

  1. 假设我拥有mydomain.com,并且我的电子邮件地址是willy@mydomain.com,我想使用别名子域ses.mydomain.com
  2. 在您的GSuite中添加别名域-使用管理员帐户登录,然后转到管理控制台>域> Follow the steps-添加域别名>验证并确认所有权>域名提供商=其他
  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
    
  5. 将SES设置为S3-请按照以下步骤操作-SES-Receive-Inbound-Emails AWS Blog Post
    • 验证别名子域 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}
    
  7. (从任何邮箱中)发送电子邮件到willy@ses.mydomain.com-您将在S3存储桶中看到该电子邮件!对象名称已散列,您需要下载并将其扩展名更改为.eml

我希望这会有所帮助。我为此花了几个小时。