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。
在安装 exim4 期间会提示输入主主机名。你可以运行命令
sudo dpkg-reconfigure exim4-config
Run Code Online (Sandbox Code Playgroud)
再次通过提示。
据我所知,如果您已经在使用“拆分配置”(/etc/exim4/conf.d 下的许多小文件)并在出现提示时选择坚持使用,则 dpkg-reconfigure 不应覆盖任何您现有的配置更改而不是它提示您进行的设置,但是,与以往一样,您应该先进行备份以确保安全。