我们在 EC2 上托管了 Web 应用程序。我们使用两台 Ubuntu 服务器:一台是 Web 服务器,另一台是数据库服务器。Web 服务器分配了公共弹性 IP。现在我们想从应用程序发送通知邮件(有关其他用户对系统所做的更改的通知)。最简单的解决方案是在 Web 服务器上安装 postfix SMTP 服务器,并在 Amazon 电子邮件服务器注册表中注册其弹性 IP(以便他们注册反向 DNS、删除邮件传输限制等)。我希望这应该不会有太大问题(如果我错了,请纠正我)。
如果 Web 服务器上的负载增加,我们计划启动带有 Web 服务器副本的附加 EC2 实例,在它们前面设置 Amazon 的负载均衡器,并将弹性 IP 重新映射到此负载均衡器 - 这样从外部看它仍然看起来像单个服务器。但是 SMTP 服务器怎么办?
我认为最好的解决方案是在每个 Web 服务器上运行本地 Postfix 服务器 - 这样,每个 Web 服务器上运行的应用程序始终通过 localhost 与本地 Postfix 服务器联系。不过,从外部看,它看起来像是一台正在运行的邮件服务器,因为有一个公共 IP。但我不是 SMTP 方面的专家,不知道发送邮件的过程如何工作等。
也许我没有意识到某些事情会导致这种设置被破坏。您觉得这种方法可以吗?
答案1
我的印象是,许多(所有?)AWS IP 已被列入黑名单,作为垃圾邮件来源,因此从它们发送的邮件的传递率不会很好。
此外,使用 AWS 主机作为邮件服务器对我来说似乎是一个糟糕的选择,因为它可能随时消失 - 连同未送达的电子邮件一起消失。
让每个 AWS 主机将邮件交给付费服务来处理您的出站邮件,或者由您控制的 VPS 或传统服务器(大约 24x7 全天候可用)会更有意义。这将使设置 SPF 记录等变得更加容易,从而最大限度地提高有人看到您的邮件的机会。
你可以看看针对大量邮件的 SMTP 服务的建议或者Sendmail 中继出 Amazon EC2?了解更多想法。
答案2
我想我已经知道答案了。这行不通,因为 smtp 服务器将直接发送邮件,而不是通过弹性负载均衡器进行隧道传输。因此,它们的 IP 将不同于分配给负载均衡器的公共 IP,并且反向 DNS 将不匹配,因此邮件可能会被标记为垃圾邮件。所以看起来我需要一台具有恒定 IP 的服务器来运行 SMTP 服务器。