如何强制 sendmail 使用 SMTP 而不是内部中继?

Ben*_*old 4 sendmail

我有一个从发送电子邮件,因为它是在回应列入黑名单的Web服务器SMTP HELOlocalhost.localdomain而不是我的服务器的域名(我们就叫它example.com)。通过从我的文件中删除,我能够让服务器响应HELOwith 。但是,现在每当我尝试向具有相同域名的地址发送电子邮件时,sendmail 都会尝试在本地传递消息,而不是通过 SMTP 将其发送到我们实际的邮件服务器(托管在 Rackspace)。example.comlocalhost.localdomain/etc/hosts

我遵循了这里的建议:为什么 sendmail 正在接受本地主机名文件中不存在的主机名的邮件?跑了

echo '$=w' | sendmail -bt
Run Code Online (Sandbox Code Playgroud)

并得到:

[mail]
[162.243.XX.XXX]
mail
[mail.example.com]
mail.example.com
localhost
[127.0.0.1]
example.com
Run Code Online (Sandbox Code Playgroud)

据我了解,sendmail 将所有这些域视为本地域。我DontProbeInterfaces=True在我的sendmail.cf文件中设置。现在当我跑

sendmail -bt
$=w
Run Code Online (Sandbox Code Playgroud)

我得到:

localhost
[127.0.0.1]
example.com
Run Code Online (Sandbox Code Playgroud)

我也尝试删除example.comfrom /etc/mail/local-host-names,但 sendmail 仍然认为这example.com是本地的。如何让 sendmail 停止尝试为example.com电子邮件地址发送本地邮件?

编辑:

echo '$j' | sendmail -bt
Run Code Online (Sandbox Code Playgroud)

产生

example.com

编辑:

我尝试将主机名从 更改example.comexample,但现在我的SMTP HELO回复是localhost,发送电子邮件需要几分钟时间。根据这个:https : //www.digitalocean.com/community/questions/sendmail-is-slow-to-send-mailsendmail期望hostname是 FQDN,但有人告诉我它永远不应该是 FQDN。是哪个?

这是在我的mail.log

Jul 28 16:40:01 localhost sm-msp-queue[1679]: My unqualified host name (localhost) unknown; sleeping for retry
Jul 28 16:41:01 localhost sm-msp-queue[1679]: unable to qualify my own domain name (localhost) -- using short name
Run Code Online (Sandbox Code Playgroud)

Mic*_*ton 5

修复服务器的主机名。任何服务器都不应该有一个与裸域名相同的主机名;这只是您执行此操作时出现的众多问题之一。