首页 文章

Amazon SES电子邮件不再发送

提问于
浏览
8

我在使用Amazon SES发送电子邮件时遇到问题 . 我有一个Amazon EC2实例 .

它在前几天工作但我上周刚注意到所有电子邮件现在都失败了 . 我尝试使用Node和Amazon SES sdk以及从AWS中发送测试电子邮件 . 我在Node中有以下代码:

var aws = require('aws-sdk');

// load aws config
aws.config.loadFromPath('email_config.json');

// load AWS SES
var ses = new aws.SES({
    apiVersion: '2010-12-01'
});

ses.sendEmail({
    Source: from,
    Destination: {
        ToAddresses: to
    },
    Message: {
        Subject: {
            Data: 'Somebody registered'
        },
        Body: {
            Html: {
                Data: body,
            }
        }
    }
}, function(err, data) {

    console.log('email err is ', err, ' and data is ', data);

});

日志的结果是:

email err is  null  and data is  { ResponseMetadata: { RequestId: 'ad28f526-0b15-11e6-ad87-1108d652684a' },
MessageId: '010101544ebc41b3-f7bd43dd-0505-4eb2-a056-219ce6180fc5-000000' }

但电子邮件没有发送,我接到亚马逊的电子邮件说:

An error occurred while trying to deliver the mail to the following recipients: < my email address >

这包含带有以下文本的附件:

From: < my email address >
To: < my email address >
Subject: Somebody registered
MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit
Message-ID: <010101544ebc41b3-f7bd43dd-0505-4eb2-a056-219ce6180fc5-000000@us-west-2.amazonses.com>
Date: Mon, 25 Apr 2016 18:44:01 +0000
X-SES-Outgoing: 2016.04.25-54.240.27.56
Feedback-ID: 1.us-west-2.GkIUmTTEDEIC5VBoooumwcKSnMDcLT8S4Zd3/deS/BU=:AmazonSES
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple;
    s=gdwg2y3kokkkj5a55z2ilkup5wp5hhxx; d=amazonses.com; t=1461609841;
    h=From:To:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-ID:Date:Feedback-ID;
    bh=fHqQiK/2DJ+B7zddmElFttCiWFnADDSNj5umLJQCPJs=;
    b=ZI/358zmcRHVBKTdA6qbQky5nj5z/YWw215KvkZ+oD73N0booHbl+jx+O05FdcKR
    irDjmyEDppGkp7rToZSTt/NHDeRrbERixT/ZCjGo/KOxvShovD7Z5mnDViRmkS5sTz5
    qo0oO0NuRz1lGVPkT5ONHNhKhWs7ncC9id0ycm34=

当我实际登录AWS并通过控制台发送测试电子邮件时,我会遇到同样的错误 .

我已经验证了发件人的电子邮件地址,并且我已经批准了该地区的发送限制 .

任何想法可能是什么?

EDIT

我刚刚在我的AWS控制面板> SES主页>域中注意到它说我的域名正在“等待验证” . 这可能吗?它说我需要添加名称为xxx且值为yyy的TXT DNS记录 . 我已经在Register365上做了这个 . 也许我做错了? Register365不提供TXT记录的名称和值字段,只提供“结果”字段 . 所以我添加了一条带有'result'字段的TXT记录:xxx = yyy . 这是正确的方法吗?这是几个星期前的事情,它还在等待验证......

EDIT

我已经在我的Register 365控制面板中添加了TXT记录,但我的域名仍然无法验证 . 记录看起来像:

enter image description here

亚马逊为我提供了以下TXT记录来验证我的域名:

TXT Name*: _amazonses.mydomain.com
TXT Value: u1qHYT6/2KV9Kl1VLKsApXjwcPqVXKJ8KeXj50k=

因此,在Register 365控制面板“result”字段中,我添加了name = value形式的记录,即“_amazonses.mydomain.com = u1qHYT6 / 2KV9Kl1VLKsApXjwcPqVXKJ8KeXj50k =”

然后我运行nslookup来查找记录,但得到了消息:

server can't find _amazonses.mydomain.com: NXDOMAIN

我究竟做错了什么?

EDIT

我现在已将TXT记录更改为:

enter image description here

但是在3天之后我收到了来自亚马逊的另一封电子邮件,说他们未能验证域名 . 我现在完全不知所措,我一直试图验证它6周!

我的SES帐户不是沙盒模式 - 我已经被批准通过SES发送电子邮件 . 我还验证了我的发件人电子邮件地址 .

还有其他选择吗?亚马逊SES服务似乎非常可怕 .

当我跑的时候:

nslookup -type=TXT  _amazonses.redmatterapp.com ns-478.awsdns-59.com

我仍然看到:

server can't find _amazonses.redmatterapp.com: NXDOMAIN

当我跑:

nslookup -type=TXT  redmatterapp.com ns-478.awsdns-59.com

我明白了:

Can't find redmatterapp.com: No answer

为什么会这样?我的DNS与Register 365一起使用

EDIT

好像我在nslookup上使用的名称服务器是错误的 . 当我运行nslookup时,我知道得到:

_amazonses.redmatterapp.com text = "u1qN5cbTEDb/2EV9Bhd67YHT5jjqVXKJ8KeXj50k="

哪个看起来正确 . 然而,我的域名验证仍然失败......

4 回答

  • 4

    正如迈克尔,SQL Bot指出的那样,左边需要一个主机名(_amazonses),右边需要一个值 . 这将有助于验证域名 .

    但是,还有许多其他可能的失败原因 . SES仍处于沙盒模式吗?如果是这种情况,您需要验证TO和FROM电子邮件地址 .

    如果您无法使域验证正常工作,则可能更容易验证个别电子邮件地址 . 因此,在SES中创建它们,然后完成验证过程 . 一旦你创建了这些(或者,如果你设法得到域验证)创建一个向你发送电子邮件的SNS主题,然后配置该SNS主题的Bounce,Complaint和Delivery通知 - 你最终应该收到一封电子邮件交付尝试,无论是否成功 .

    最后要考虑的是您的电子邮件地址已添加到抑制列表中的可能性 . 如果您生成大量错误,SES会将您添加到“不发送电子邮件”列表中 . 可以在SES控制台中请求从此列表中删除 .

  • 3

    主机名部分是 _amazonses (左列,数字2旁边)

    值是 "u1qHY..."

  • 6

    我认为你在最后一张图片中走的正确,只有我相信主机名是_amazonses,并且u1qHYT6 / 2KV9Kl1VLKsApXjwcPqVXKJ8KeXj50k =是结果,而不是以“_amazonses.yourdomain.com =”的形式将所有内容放在结果字段中u1qHYT6 / 2KV9Kl1VLKsApXjwcPqVXKJ8KeXj50k =” . Iiuc,我的想法是AWS会卷曲_amazonses.yourdomain.com,期望你的密钥可以作为TXT文件服务,但是目前你正在提供一个TXT文件,内容为_amazonses.yourdomain.com = u1qHYT6 / 2KV9Kl1VLKsApXjwcPqVXKJ8KeXj50k =(I不能完全阅读,因为它切断了;原谅我的猜测,而不是在你的域名网站上 .

    我相信这是你存在的原因,如果你没有设置,这是有道理的为_amazonses.yourdomain.com提供TXT记录,而是设置http://yourdomain.com的txt记录,而不是使用值_amazonses.yourdomain.com = u1qHYT6 / 2KV9Kl1VLKsApXjwcPqVXKJ8KeXj50k = . 这也是其他两个答案似乎暗示的,这让我感到更自信 .

  • 2

    我最近验证了我成功工作的公司的域名,在我的域名DNS(作为TXT记录)中设置如下:

    Amazon SES DNS

    如果您仍有问题,可能值得您阅读Amazon's troubleshooting page .

    Adding to my answer:

    我刚刚访问了我的AWS控制台,如果您打开SES>域并单击您的域名 . 向下滚动然后单击DKIM,我必须在那里验证更多:

    AWS DKIM

    并将它们添加为CNAME记录,如下所示:

    DKIM DNS

    人们忘记这个过程的一件事是, Amazon requires you to leave the TXT record in place even after the verification. Otherwise they will revoke the domain.

    Hope this helps!


    Yet another edit (sorry)

    当我运行 nslookup -type=TXT _amazonses.redmatterapp.com ns-1471.awsdns-55.org 试图找到你的TXT记录时,它会回来:

    Server:     ns-1471.awsdns-55.org
    Address:    205.251.197.191#53
    
    ** server can't find _amazonses.redmatterapp.com: NXDOMAIN
    

    这表明TXT记录未正确设置 .

相关问题