当exim4发送HELO / EHLO时,如何configuration发送的主机名?

当接收服务器执行HELO检查时,系统中的邮件将被拒绝。 我相信我的系统发送错误的域名。 我正在运行exim4。 谷歌search关于exim4和域名的任何事情都会产生无关结果的噩梦。 同样,使用HELO拒绝search产生一大群需要打开SMTPauthentication的outlook用户。 我不能为我的生活找出这个简单的问题:哪个主机名是exim发送,我该如何改变它?

不幸的是,我看不到有什么exim通过线路发送,所以我无法自己debugging。 我希望有人有这个问题,只知道:)。

假设错误是抱怨HELO / EHLO数据,你想使用smtp传输上的helo_data选项。 缺省值是$ primary_hostname。

remote_smtp: driver = smtp helo_data = host.example.com 

更多信息可在手册中find 。

如果情况并非如此,那么您可能希望包含一些示例拒绝消息。 只是三位数的代码和string之后。

命令

 sudo dpkg-reconfigure exim4-config 

应该提示你input主要的主机名称。

在Debian(Lenny)上,我发现你在/etc/hostname设置了主机/etc/hostname但是直到重新启动后才能识别。

 $ hostname newhostname 

立即设置(但在重新启动时丢失,所以你必须做的两个)。

exim4好像和uname -n报告一样,我发现这是一个有用的方法来testing。

你想要的设置被称为primary_hostname 。

对于debugging你可以使用

 tcpdump -A port 25 

以ASCII格式观看SMTPstream量。

哪个主机名是exim发送?

可以在exim4的日志中findHELO的名字。 停止exim4守护进程,然后在启用debugging的情况下手动重启:

 /usr/sbin/exim4 -bd -d+all 2>&1 | egrep 'HELO|EHLO' 

2>&1|egrep 'HELO|EHLO'部分是可选的,它只是将stderrredirect到stdout,然后将日志传送到egrep ,这将过滤除HELO或EHLO之外的所有内容。

发送电子邮件,并且应该有一行或两行,格式如下:

 SMTP>> EHLO foobar.example.com 

HELO的名字是foobar.example.com

还有几个有用的在线检查工具可以提供这些信息(以及其他许多有用的信息),例如:

我如何改变它?

不是像David所build议的那样编辑传输文件,而是使用exim4常量定义(?),并在/etc/exim4/conf.d/main/00_local_settings (分割configuration)中设置名称,例如:

 REMOTE_SMTP_HELO_DATA=$sender_address_domain 

不要忘记在重启exim4之前运行update-exim4.conf

我在/etc/exim4/exim4.conf.template中设置了primary_hostname […]

正如大卫所说,这可能不是最好的主意。 在拆分configuration中,您可以通过添加来设置主要主机名

 MAIN_HARDCODE_PRIMARY_HOSTNAME = subdomain.example.com 

/etc/exim4/conf.d/main/00_local_settings 。 看来这将是PRIMARY_HOST_NAME在整体exim4configuration。