当 exim4 发送 HELO/EHLO 时,如何配置它发送哪个主机名?

当 exim4 发送 HELO/EHLO 时,如何配置它发送哪个主机名?

当接收服务器进行 HELO 检查时,来自我系统的邮件被拒绝。我认为我的系统发送了错误的域名。我正在运行 exim4。在 Google 上搜索有关 exim4 和域的任何内容,都会得到一长串不相关的结果。同样,在 Google 上搜索 HELO 拒绝,会得到一大群需要打开 SMTP 身份验证的 Outlook 用户。我无论如何也想不出这个简单的问题:exim 发送的是哪个主机名,我该如何更改它?

不幸的是,我无法看到 exim 通过网络发送了什么,所以我无法自己调试。我希望有人遇到过这个问题并且知道 :)。

答案1

假设错误是针对 HELO/EHLO 数据,则需要在 smtp 传输中使用 helo_data 选项。默认值为 $primary_hostname。

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

更多信息请访问手册

如果不是这种情况,您可能需要包含一些示例拒绝消息。只需三位数代码和其后的字符串即可。

答案2

命令

sudo dpkg-reconfigure exim4-config

应该提示您输入要使用的主主机名。

答案3

exim 发送的是哪个主机名?

可以在 exim4 的日志中找到 HELO 名称。停止 exim4 守护进程,然后在启用调试的情况下手动重新启动它:

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

(该2>&1|egrep 'HELO|EHLO'部分是可选的,它只是将 stderr 重定向到 stdout,然后将日志传输到egrep,它将过滤除包含 HELO 或 EHLO 的行之外的所有内容)。

发送一封电子邮件,其中应该有一到两行以下格式的内容:

SMTP>> EHLO foobar.example.com

HELO 名称是foobar.example.com

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

我该如何改变它?

/etc/exim4/conf.d/main/00_local_settings我不会按照 David 的建议编辑传输文件,而是宁愿使用 exim4 常量定义(?)并在(拆分配置中)设置名称,例如:

REMOTE_SMTP_HELO_DATA=$sender_address_domain

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

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

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

MAIN_HARDCODE_PRIMARY_HOSTNAME = subdomain.example.com

/etc/exim4/conf.d/main/00_local_settings它似乎它将采用PRIMARY_HOST_NAME单片 exim4 配置。

答案4

您想要的设置称为主主机名

对于调试你可以使用

tcpdump -A port 25

以 ASCII 格式观看 SMTP 流量。

相关内容