当接收服务器进行 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
。
还有几个有用的在线检查工具可以提供这些信息(以及许多其他有用的信息),例如:
- https://www.mail-tester.com(注意,每天仅限 3 次免费电子邮件检查);
- [电子邮件保护](自由的) ;
- [电子邮件保护](它的反馈大部分都不是免费的,但就这个目的而言它是免费的)。
我该如何改变它?
/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 配置。