VPS 上所有域的 exim4 和不同 HELO

VPS 上所有域的 exim4 和不同 HELO

假设我在同一个 VPS 上有 domain.com、domain2.com、domain3.com,它们都发送邮件,但所有域的所有邮件的 Helo 都是 localhost,这会被某些邮件提供商拒绝。如何让 exim4 将 helo 设置为发送邮件的域名。比如,如果我从 domain.com 发送邮件,helo 应该是 domain.com。另一个问题是,这样做对吗?

更新型多巴胺我改变主意了。我只想将其设置为盒子的 FQDN。

答案1

smtp 传输有一个helo_数据设置。默认情况下,它设置为 $primary_hostname,这就是为什么如果你想将 primary_hostname 设置配置为单个有效主机名,第一个人的建议会很好用。由于你似乎想用动态主机名使其成为 HELO,你必须添加一些逻辑来确定它应该使用哪个名称。

您可以在 DATA acl 中的某个位置检测这些特定域并设置变量。这是一个非常简单的示例(您可以通过使用文件或数据库查找来增强):

warn  domains      = domain1.com : domain2.com : domain3.com
      set acl_m_special_dom = mail.$domain

查看日志以确定使用哪个 smtp 传输来发送此电子邮件。编辑该传输并添加 helo_data 行,该行检查该 acl 消息变量并调整 exim 将使用的主机名以用于 HELO/EHLO:

helo_data = ${if eq{$acl_m_special_dom}{}  \
                     {$primary_hostname}   \
                     {$acl_m_special_dom} }

测试检查变量是否为空。如果为空,它将使用 $primary_hostname。但如果不为空,则必须在上面的 ACL 条件中设置它,以便它在 EHLO 中使用该主机名。此变量是每个消息的变量,因此它会在每条消息之间被清除(如果一个连接中有多个消息)。

您必须确保此处使用的任何主机名都可以在公共 DNS 中解析(使用 Google 的 DNS 进行测试),并且它解析的 IP 也具有反向 DNS。反向 DNS 不需要与您使用的主机名匹配,但它需要解析为某物。如果它反向解析为看起来像电缆调制解调器或 DSL 线路之类的动态内容,则很可能仍然被大多数主要邮件提供商阻止或延迟。

回到您的描述,听起来您正在使用 Debian 拆分配置系统。他们有一个宏,可以根据连接到您的 exim 服务器的发件人 IP 地址来改变 HELO 主机名。但是,如果您的电子邮件来自一个公共服务器,这将对您不起作用,这意味着您需要根据发件人的域名来改变这个 HELO 主机名,如上所示。

答案2

执行此操作的“正确”方法是将 Exim 的“主主机名”设置为主机的完全限定的规范名称。很少有远程邮件服务器会开始关心From:邮件标头中的域部分,并且如果通过了诸如 SPF 验证之类的操作,大多数邮件服务器也不会再看一眼信封发件人的域部分。

精确的执行此操作的步骤取决于您的安装,但看起来只需将 Exim 的primary_hostname配置变量设置为解析回主机的公共 IP 地址的 FQDN 就可以了。

你可能会发现http://www.exim.org/exim-html-current/doc/html/spec_html/ch07.html有帮助。

答案3

默认为 uname 提供的服务器主机名,可通过 CLI 使用“hostname”命令进行更改。BSD 系统使用 hosts 文件来存储系统主机名。

如果您希望服务器主机名与 helo 名称有不同标识(例如我喜欢使用专用的第二个 IP 地址以及一些其他配置),您可以在 exim 配置中设置 $primary_hostname。由于 $helo_data 默认为 $primary_hostname,因此如果 $helo_data 保留为默认值,这将涵盖发送和接收配置。

了解此变量后,可能就有办法通过此设置来制作查找表,以实现每个域的设置更改。我在配置中看到过类似这样的情况:

${if exist{/etc/userdomains} {lsearch;/etc/userdomains} 失败}

相关内容