mail()
我有一台运行 Ubuntu 14.04 的 DigitalOcean 服务器。我在从 PHP函数(内部使用)发送电子邮件时遇到问题sendmail
。
我认为问题可能与我的文件配置有关。以下是我目前hosts
所拥有的内容:/etc/hosts
127.0.0.1 localhost localhost.localdomain ip-xxx-xxx-xxx-xxx
并且etc/hostname
:
ip-xxx-xxx-xxx-xxx
(上面两行中,我将 IP 地址数字替换为x
)
现在我有一个指向该服务器的域,我们称之为mydomain.com
。
因此,当我的网站mydomain.com
发送电子邮件时,该电子邮件将被放入垃圾邮件文件夹。我进行了一次测试https://www.mail-tester.com它标记出的一个问题是:
我尝试mydomain.com
在文件中添加上面的行hosts
,但这导致电子邮件很长时间后才到达或根本没有到达。
以下是已接收的标头:
Received: from localhost.localdomain (unknown [xxx.xxx.xxx.xxx])
(using TLSv1.2 with cipher xxx (256/256 bits))
(No client certificate requested)
by mail-tester.com (Postfix) with ESMTPS id xxx
for <[email protected]>; Mon, 29 Apr 2019 18:35:18 +0200 (CEST)
Received: from localhost.localdomain (localhost [127.0.0.1])
by localhost.localdomain (8.15.2/8.15.2/Debian-3) with ESMTP id xxx
for <[email protected]>; Mon, 29 Apr 2019 17:35:18 +0100
Received: from mydomain.com (www-data@localhost)
by localhost.localdomain (8.15.2/8.15.2/Submit) with SMTP id xxx
for <[email protected]>; Mon, 29 Apr 2019 17:35:18 +0100
有人可以告知问题可能是什么以及如何解决吗?
答案1
没人关心您的基础设施内部的跳数以及经过了多少个本地主机。但一定要让您的外发服务器说“您好,我是 mail.domain.tld”,而不是“您好,我是 localhost.localdomain”,因为没有配置正确的服务器会有兴趣与未知的邮件服务器通信。
我在引用的标头中看到您用于postfix(1)
处理出站电子邮件。查找myhostname
您内部的变量main.cf
(通常位于/etc/postfix
或中/usr/local/etc/postfix
)并正确填充。示例:(myhostname=mail.domain.tld
将其替换为您的邮件服务器名称)。还要确保smtp_banner=
至少$myhostname
包含smtp_banner=$myhostname ESMTP Postfix
。
看这了解更多信息。