【发布时间】:2008-09-17 19:48:29
【问题描述】:
我在发送主机和中继主机上都使用 exim,发送主机似乎提供:
HELO foo_bar.example.com
回复:
501 Syntactically invalid HELO argument(s)
【问题讨论】:
我在发送主机和中继主机上都使用 exim,发送主机似乎提供:
HELO foo_bar.example.com
回复:
501 Syntactically invalid HELO argument(s)
【问题讨论】:
【讨论】:
下划线在互联网主机名中实际上是无效的,尽管有些人仍然使用它们。一个健全的 DNS 服务器不应该让你有他们的记录。
更改您系统的主机名,使其有效,希望这会解决它。
【讨论】:
在花了这么多小时试图解决这个问题之后,在我的情况下,这个问题只是从无到有,我最终找到了一个解决方案。在我的例子中,只有部署到 Suse 操作系统的系统突然停止发送电子邮件,而不是那些(相同)在 Ubuntu 上运行的系统。在用尽并消除了这个问题的所有建议possibilities,甚至考虑更改这些机器的操作系统后,我发现发送电子邮件服务以某种方式对主机的主机名是敏感的。在 Ubuntu 机器中,文件 /etc/hosts 只有以下一行:
127.0.0.1 localhost
停止发送电子邮件的 Suse 机器也是如此。从 Suse 机器编辑 /etc/hosts 到
127.0.0.1 localhost proplad
其中 proplad 是机器的主机名,错误消失了。似乎某些安全策略(可能来自 smtp 服务)使用通过 API 携带的主机名信息,这在 Ubuntu 机器上被忽略,但在 Suse 机器上却没有。希望这对其他人有所帮助,避免在互联网上进行大量研究。
【讨论】:
Diago 的回答帮助我解决了我一直试图解决的问题。
我们的 Suse 操作系统也突然停止工作。尝试了我在这里和谷歌上找到的每一个建议。没有任何效果。尝试将我们的域添加到 etc/hosts 但没有帮助。
使用 hostname 命令获取服务器的主机名。就像 Digao 建议的那样,将该主机名添加到 etc/hosts 文件中。
127.0.0.1 localhost susetest
我保存了更改,然后运行 postfix stop,postfix start。现在就像一个魅力。
【讨论】:
HELO 的参数应该是主机名或 IP 地址。 foo_bar.example.com 既不是 IP 地址也不是主机名(下划线在主机名中是非法的),因此错误消息是正确的,没有什么可修复的。
【讨论】:
使用 qmail 我遇到了这个问题。我意识到这是因为之前未完成的安装。
1) 发送电子邮件时,qmail 会用“HELO ...”向其他 SMTP 服务器宣布自己,然后添加文件中的内容:/var/qmail/control/me
(有时文件位于/var/qmail/control/helohost)
2) 该文件的主机名应包含有效的 DNS 条目。
我的没有(none),这就是无法发送邮件的原因。
【讨论】:
我发现我的本地开发服务器突然停止发送电子邮件(使用外部 SMTP)并且在我发现的服务器日志中:
从 cpc96762-*******.net [..**.68] 拒绝 EHLO:语法上无效的参数:127.0.0.1:8888/app_dev.php
127.0.0.1:8888/app_dev.php 是我的本地 URL,我使用的是 Docker、Symfony 和 Swift Mailer。
对我的情况有帮助的唯一解决方案是添加参数:
local_domain = "localhost"
到我的 Swift Mailer 配置。这解决了所有问题。
请参阅 Swift Mailer local_domain 选项的文档:https://symfony.com/doc/current/reference/configuration/swiftmailer.html#local-domain
【讨论】: