AWS简单邮件服务在本地主机上可以运行,但在Amazon EC2生产服务器上却无法运行

4

我正在为我的网站开发邮件API。场景如下:

  1. 客户端连接到终端点。
  2. API终端点处理请求并使用基于AWS SDK的邮件服务发送电子邮件。
  3. API根据结果返回Ok / BadRequest。

当我在本地主机上运行我的API时,一切正常,我按预期在我的邮箱中收到了电子邮件。但是,当我将我的API服务运行在Amazon EC2实例上时,我遇到了以下问题:

响应状态代码未指示成功:404(未找到)

我仔细检查了我的本地主机和EC2实例(ubuntu 16.10)上都有.aws /凭据文件。因为我得到了BadRequest响应,所以我可以很好地访问在EC2实例上运行的API服务。问题出现在邮件服务尝试使用amazon SES发送电子邮件时。我相信这不是代码本身的问题,因为它在本地主机上运行良好。有什么想法吗?


记录一下,我已经更新了我的 API 代码,现在它使用 SMTP 协议发送电子邮件,而不是 AWS SDK,它的工作效果符合预期。所以这显然是 AWS SDK 或者是我这边缺少某种配置的问题。无论如何,我仍在寻找答案。 - Kamil N.
你能否成功调用其他API(例如ListTemplate())来确认你的凭证设置正确吗?你的配置文件或代码中region的值是多少? - John Rotenstein
@JohnRotenstein,其他的API调用都很正常。就像我之前写的那样,我已经切换到使用SMTP协议发送电子邮件,目前还没有出现任何问题。你所说的配置文件是什么类型的?AWS的那个吗?如果是的话,那么我没有使用任何一个。 - Kamil N.
1个回答

5
如果有其他人遇到相同的问题,将端口更改为587可以解决问题。
Ec2默认对端口25有非常严格的限制。您可以根据IP逐个填写正式请求来获得白名单,但如果您发送到SES,则我们建议使用端口587或2587。
有关EC2对端口25的限制的更多信息: https://aws.amazon.com/premiumsupport/knowledge-center/ec2-port-25-throttle/ 有关SES可用SMTP端口的更多信息: https://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-connect.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接