如何在 Debian 机器上更改 Exim4 的 primary_hostname?

Jør*_*ode 26 debian hostname exim

我试图向其发送邮件的某些远程 SMTP 服务器拒绝接受来自我的服务器的 HELO:

504 5.5.2 <localhost>: Helo command rejected: need fully-qualified hostname

显然,我的 Exim4 服务器localhost作为其 FQDN发送。搜索网络和一堆配置文件,我了解到在 HELO 期间作为 FQDN 发送的值是从primary_hostname配置变量中提取的。

我的问题是:在 Debian 系统中更改此变量的正确方法是什么?我想我可以简单地在 Exim4 配置文件中硬编码一个值,但恕我直言,如果该值自动对应于/etc/mailname或其他一些集中的名称配置,它似乎更有意义。

我有一种感觉,我的问题的答案可以在 Debian wiki 的这篇文章中找到:

Exim 在 EHLO/HELO 中使用的名称是从配置选项中提取的primary_hostname。Debian 的 exim4 默认配置没有设置primary_hostname. 然后 Exim 默认使用 uname() 来查找主机名。如果该调用仅返回一个组件,则使用 gethostbyname() 或 getipnodebyname() 来获取完全限定的主机名。

如果您的 Exim HELO 为 localhost.localdomain,那么您很可能是某些版本的 Debian 安装程序创建了错误配置的 /etc/hosts。在这种情况下,请修复您的 /etc/hosts.conf 文件。

不幸的是,我对 Linux 服务器管理不够熟悉,无法确切地知道这一切意味着什么:(

Pau*_*rop 23

您的 /etc/hosts 文件中应该至少有两条记录。第一个记录应该是以下形式:

<IP_ADDRESS> <HOST_FQDN> <HOSTNAME>
Run Code Online (Sandbox Code Playgroud)

第二个应该是以下形式:

127.0.0.1 localhost
Run Code Online (Sandbox Code Playgroud)

您还需要确保您的 /etc/hostname 文件包含服务器的 FQDN,并且运行会hostname -f返回您的服务器 FQDN。如果您确保所有这些都正确,并重新启动 Exim,您应该开始正确地看到 HELO。


小智 9

如果您使用单个配置文件,请将 PRIMARY_HOST_NAME 变量设置为所需的名称:

例如在 /etc/exim4/exim4.conf 中:

PRIMARY_HOST_NAME = mybox.mydomain.com
Run Code Online (Sandbox Code Playgroud)

MAIN_HARDCODE_PRIMARY_HOSTNAME在 update-exim4.conf.conf 中设置,如果您使用拆分文件配置。

为了安全起见,重新启动 exim。


Dav*_*rth 5

在安装 exim4 期间会提示输入主主机名。你可以运行命令

sudo dpkg-reconfigure exim4-config
Run Code Online (Sandbox Code Playgroud)

再次通过提示。

据我所知,如果您已经在使用“拆分配置”(/etc/exim4/conf.d 下的许多小文件)并在出现提示时选择坚持使用,则 dpkg-reconfigure 不应覆盖任何您现有的配置更改而不是它提示您进行的设置,但是,与以往一样,您应该先进行备份以确保安全。

  • 它似乎只要求“邮件名称 [which] 应该是单一的、完全限定的域名 (FQDN)”。然而,这个设置已经是正确的,而且 HELO 似乎仍然在说“localhost”。 (2认同)