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