使用 Amazon SES 和 Exim4 在一个实例上从多个主机发送邮件

使用 Amazon SES 和 Exim4 在一个实例上从多个主机发送邮件

假设我在 Amazon EC2 中运行一些实例:

 somehost.example.com

此实例托管了其他域的一些应用程序或网站:

 www.example.com
 web.example.org
 etc.

此主机配置为使用 exim4 与 Amazon SES 交互以发送邮件。在 Amazon SES 中,每个域都被单独允许作为有效发件人:

www.example.com
web.example.org
etc.

然而,正如人们所料,实例的 FQDN 和执行用户被用作每封电子邮件的发件人,因此所有电子邮件似乎都来自:

[email protected]

我当然可以配置 Amazon SES 以允许来自 somehost.example.com 的邮件,并且还可以在应用程序级别向电子邮件添加信封。'From: "Whoever" <[email protected]>'

我想知道的是,(a) 这是一个可接受的解决方案吗?如果不是,(b) 我可以探索哪些配置来显示每个域(例如 example.com)的邮件似乎直接来自“something.example.com”服务器而不是实际主机。我假设这涉及创建一个 hostname.example.com DNS 条目并将其指向服务器,但除此之外,我不知道如何设置 exim 或应用程序以允许这样做。

答案1

您可以配置 exim 以在外发邮件中隐藏本地邮件名称。此外,您还应配置主 exim 服务器以使用智能主机,在本例中为 amazon SES。

假设每个网站都在自己的虚拟服务器上运行,www.example.com192.0.2.1) 和web.example.com192.0.2.2)并且你的电子邮件服务器位于另一个虚拟服务器上,smtp.example.com192.0.2.10)。

要重新配置 exim4,您可以运行:

dpkg-reconfigure exim4-config

在主电子邮件服务器 smtp.example.com 上进行如下配置(我只列出了相关的):

  • 邮件配置的一般类型:通过 smarthost 发送的邮件;通过 SMTP 或 fetchmail 接收

  • 系统邮件名称:smtp.example.com

  • 中继邮件的机器:192.0.2.1;192.0.2.2

  • 传出智能主机的 IP 地址或主机名:AMAZON_SES_IP 地址

  • 在外发邮件中隐藏本地邮件名称?是

  • 本地用户可见的域名:example.com

在其他服务器上像这样配置 exim,使用 www.example.com 作为示例主机:

  • 常规邮件配置类型:智能主机发送的邮件;无本地邮件

  • 系统邮件名称:www.example.com

  • 接受邮件的其他目的地:保留空白 <-- 这将导致“隐藏外发邮件中的本地邮件名称的选项已启用”

  • 本地用户可见的域名:www.example.com

  • 传出智能主机的 IP 地址或主机名:192.0.2.10

如果您只有一台服务器,则请忽略第二步。您的主服务器应发送隐藏本地服务器名称的电子邮件,并将其作为来自 example.com 的电子邮件发送出去。

答案2

您是否想隐藏电子邮件来自 EC2 实例的事实?简而言之,您不能。标Received:头将包含电子邮件通过网络的路径的相当完整的跟踪。幸运的是,几乎没有人会查看它们。

如果您只是希望收件人看到From:标题中的合理内容,那么只需From:在发送电子邮件时在标题中放置一些合理的内容即可。

相关内容