我有一个Web服务器被列入黑名单发送电子邮件,因为它与localhost.localdomain而不是我的服务器(我们称之为example.com )域名响应SMTP HELO 。 我可以通过从/etc/hosts文件中删除localhost.localdomain来使服务器通过example.com响应HELO 。 然而,现在我每次尝试发送电子邮件到具有相同域名的地址,sendmail都试图在本地发送邮件,而不是通过SMTP发送到我们的实际邮件服务器(托pipe在Rackspace)。
我遵循这里的build议: 为什么sendmail接受邮件的主机名不存在本地主机名文件? 跑了
echo '$=w' | sendmail -bt
得到:
[mail] [162.243.XX.XXX] mail [mail.example.com] mail.example.com localhost [127.0.0.1] example.com
据我所知,sendmail认为所有这些域是本地的。 我在sendmail.cf文件中设置了DontProbeInterfaces=True 。 现在当我跑步
sendmail -bt $=w
我得到:
localhost [127.0.0.1] example.com
我也尝试从/etc/mail/local-host-names删除example.com ,但是sendmail仍然认为example.com是本地的。 我怎样才能让sendmail停止尝试本地邮件传递example.com电子邮件地址?
编辑:
echo '$j' | sendmail -bt
产生
example.com
编辑:
我尝试将example.com的主机名更改为example ,但是现在,我的SMTP HELO响应是localhost ,发送电子邮件需要几分钟的时间。 据此: https : //www.digitalocean.com/community/questions/sendmail-is-slow-to-send-mail sendmail希望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
修复你的服务器的主机名。 没有服务器应该有一个主机名等于裸域名 ; 这只是当你这样做时发生的许多问题之一。
在你的情况下,Sendmail将自动configuration的“这个主机(电子邮件)名称”( $j )添加到本地电子邮件域列表( $=w )。 Sendmail使用hostname --fqdn报告的名称。
推荐的修正:
不要使用“命名的域”作为主机名(如迈克尔回复中所build议的)
要么
将sendmail使用的名称更改为“此主机邮件名”
看到@poige的评论后,我的理智恢复了:
删除sendmail 。 安装postfix 。 这里有一个很好的教程: https : //www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only-smtp-server-on-ubuntu-14- 04
然后编辑/etc/postfix/main.cf并从mydestination参数中删除完全限定的域名。