影片梗概:
我只管理几个网站灶神星,每个网站都有自己的域名,到目前为止运行良好。服务器位于利诺德。
我已经实现了一个非常简单的联系表在使用php的其中一个站点中mail()
:
$success = mail($EmailTo, $Subject, $Body, $headers);
对于 $headers,我经过反复尝试,使其变得更简单:$headers = 'From: '. $EmailFrom;
问题:
现在,我想发送的电子邮件当然是没有达到信息框或我的个人 Gmail 信箱。
测试:
所以我尝试通过SSH。首先,我配置了邮件日志,这样我就可以看到上面发布的那行,我通过 确认
phpinfo()
PHP 使用的是预期的 sendmail bin (/usr/sbin/sendmail
)。所以看起来这不是 PHP/php.ini
的错。然后我在 serverfault.com 上阅读并尝试以下操作简短的 sendmail 脚本(因为事实证明我不知道如何仅使用 CLI 发送电子邮件):
这次测试似乎进展顺利(有大量数据),并且它实际上正在达到我的个人 Gmail 信箱(当然是垃圾邮件文件夹):
#!/bin/sh
/usr/sbin/sendmail -i -v -- [email protected] <<
subject: testeando
asastest
END
但然后我运行相同的脚本,只是更改为[电子邮件保护]除了没有达到目的之外,脚本还说明了这一点:
LOG: MAIN
** [email protected]: Unrouteable address
LOG: MAIN
<= <> R=1XnGAV-0004VJ-UP U=Debian-exim P=local S=1113
LOG: MAIN
Completed
delivering 1XnGAV-0004VN-VO
LOG: MAIN
** root@linodecentral: Unrouteable address
LOG: MAIN
Frozen (delivery error message)
现在我陷入了困境。我不知道 gmail 是如何“可路由”的,但完美运行的 google-MX 域名却不行。另外,我不知道我的主机名 (linodecentral) 是否与此有关?
总结结果:
- 形式可以达到两者都不盒子。
- sendmail bash 脚本只能到达我的个人邮箱(及其从电子邮件很烂。
编辑:
这是尝试 info@goodsite 时 exim4 的主日志显示的内容:
2014-11-08 23:23:20 1XnEPg-0001bg-Hb <= pvc@LinodeCentral U=pvc P=local S=495
2014-11-08 23:23:20 1XnEPg-0001bg-Hb ** [email protected]: Unrouteable address
2014-11-08 23:23:20 1XnEPg-0001bk-IY <= <> R=1XnEPg-0001bg-Hb U=Debian-exim P=local S=1287
2014-11-08 23:23:20 1XnEPg-0001bg-Hb Completed
2014-11-08 23:23:20 1XnEPg-0001bk-IY ** pvc@linodecentral: Unrouteable address
2014-11-08 23:23:20 1XnEPg-0001bk-IY Frozen (delivery error message)
当我尝试使用我的个人收件箱(正确发送到)时出现以下情况:
2014-11-09 01:02:38 1XnFxm-00047Z-3L <= root@LinodeCentral U=root P=local S=320
2014-11-09 01:02:38 1XnFxm-00047Z-3L => [email protected] R=dnslookup T=remote_smtp H=gmail-smtp-in.l.google.com [2a00:1450:400c:c01::1b] X=TLS1.2:RSA_ARCFOUR_SHA1:128 C="250 2.0.0 OK 1415491358 ey11si10238321wid.16 - gsmtp"
2014-11-09 01:02:38 1XnFxm-00047Z-3L Completed
我不知道为什么它使用根发送到我的个人收件箱,并将 pvc(网站文件夹的用户所有者等)发送到其他地址。
PS:显然“goodiste.org”只是真实域名的占位符。
答案1
尝试检查 linode 主机是否看到目标域的正确 MX 记录...
dig MX good domain.org
这应该会显示 Google 的服务器。如果没有,则表示您遇到了较低级别的问题。
发送地址的域部分通常来自本地计算机的 /etc/hosts 中的内容。至少您希望这是 fqdn。您可以在 MTA 的配置中覆盖它。
Exim 日志应该会向您显示为什么传送到本地地址失败。