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

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

我尝试向其传递邮件的某些远程 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 维基

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

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

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

答案1

您的 /etc/hosts 文件中应至少包含两条记录。第一条记录应采用以下格式:

<IP_ADDRESS> <HOST_FQDN> <HOSTNAME>

第二个应该是这样的形式:

127.0.0.1 localhost

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

答案2

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

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

PRIMARY_HOST_NAME = mybox.mydomain.com

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

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

答案3

在安装 exim4 时会提示输入主主机名。您可以运行以下命令

sudo dpkg-reconfigure exim4-config

再次浏览提示。

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

答案4

在 /etc/hosts 中添加相同的字符串后,主机名 -f将返回您的 FQDN

相关内容