一些远程SMTP服务器我试图传递邮件拒绝从我的服务器接受HELO:
504 5.5.2 <localhost>: Helo command rejected: need fully-qualified hostname
显然,我的Exim4服务器发送localhost
作为其FQDN。 searchnetworking和一堆configuration文件,我知道在HELO期间作为FQDN发送的值是从primary_hostname
configurationvariables中提取的。
我的问题是:在Debian系统中更改这个variables的正确方法是什么? 我想我可以简单地对Exim4configuration文件中的值进行硬编码,但是恕我直言,如果该值自动对应于/etc/mailname
或其他一些集中的名称configuration,它似乎更有意义。
我有一种感觉,我的问题的答案可以在Debian wiki的本文中find :
EHLO / HELO中Exim使用的名称是从configuration选项
primary_hostname
提取的。 Debian的exim4默认configuration不会设置primary_hostname
。 然后,Exim默认使用uname()来查找主机名。 如果该调用仅返回一个组件,则使用gethostbyname()或getipnodebyname()来获取标准主机名。如果您的Exim HELO为localhost.localdomain,那么您很可能是由某些版本的Debian安装程序创build的错误configuration的/ etc / hosts。 在这种情况下,请修复/ etc / hosts。
不幸的是,我不熟悉Linux服务器pipe理知道这意味着什么这意味着:(
你的/ etc / hosts文件里至less应该有两条logging。 第一条logging应该是这样的forms:
<IP_ADDRESS> <HOST_FQDN> <HOSTNAME>
第二个应该是这样的forms:
127.0.0.1 localhost
您还需要确保您的/ etc / hostname文件包含服务器的FQDN,并且运行hostname -f
返回您的服务器FQDN。 如果您确定所有这些都是正确的,并重新启动Exim,您应该开始正确地看到HELO。
如果您使用单个configuration文件,请将PRIMARY_HOST_NAMEvariables设置为所需的名称:
例如在/etc/exim4/exim4.conf中:
PRIMARY_HOST_NAME = mybox.mydomain.com
或者如果使用分割文件configuration,则在update-exim4.conf.conf中设置MAIN_HARDCODE_PRIMARY_HOSTNAME
。
为了安全起见,重新启动exim。
在安装exim4期间会提示主要主机名。 您可以运行该命令
sudo dpkg-reconfigure exim4-config
再次通过提示。
据我所知,如果你已经在使用“分割configuration”(在/etc/exim4/conf.d下有很多小文件),并且在出现提示时select坚持,那么dpkg-reconfigure不应该覆盖您现有的configuration更改,而不是它所提示的设置,但是,您应该像以前一样首先进行备份以确保安全。
在/ etc / hosts中添加相同的string后, hostname -f将返回您的FQDN
我有同样的问题。 我需要更改邮件主机名,因为有些邮件发送失败。 怀疑这个错误:
host receiver.server.com [200.200.200.200]: 550 <[email protected]>: Sender address rejected: Domain not found
所以我把它改成/etc/exim.config
param primary_hostname
这个文件的一些代码:
smtp_connect_backlog = 50 smtp_accept_max = 100 #primary_hostname = myhostname.com deliver_queue_load_max = 3
在WHM转到Eximconfigurationpipe理器 – >高级编辑器
向下滚动,直到find“添加其他configuration设置”(一个大的蓝色button)并单击它。
在新行中,添加[primary_hostname] = [mydomain.com]
滚动到底部并点击保存。