无法让php mail()在linux上运行ubuntu

时间:2012-06-12 18:16:30

标签: linux amazon-web-services postfix-mta php

我已按照on this page的说明在AWS linux ubuntu上设置mail(),但邮件功能无效。我知道我已经正确地编写了发送邮件脚本,所以我需要一些其他东西来使其工作吗?是否有特殊的网络邮件软件或我需要的东西?

修改

display_errors已开启。 PHP代码如下。 显示成功消息,但从未收到电子邮件。

$to = "myemail@gmail.com";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";

if (mail($to, $subject, $body))
{
    echo("Message successfully sent!");
} 
else
{
    echo("Message delivery failed...");
}

编辑2:

我尝试将其发送到由godaddy和gmail帐户托管的电子邮件中。两者都在错误日志中返回了以下相同的响应。

错误日志:

  

“8C029:主机smtp.secureserver.net [ ]拒绝与之交谈   我: - - *。 554您对此邮件系统的访问权限   由于发送MTA的声誉不佳而遭到拒绝。如果你相信   如果此故障有误,请联系目标收件人   通过替代方式。“

没关系,Gmail在15分钟后收到了该消息。我猜这两个错误都与godaddy托管的电子邮件有关。

1 个答案:

答案 0 :(得分:3)

  

没关系,Gmail在15分钟后收到了该消息。我猜这两个错误都与godaddy托管的电子邮件有关。

错误确实不是源于您的mail()代码或服务器设置 - 您的MTA从mail命令接收消息并尝试传递消息。

错误源自GoDaddy的接收邮件服务器(您的后缀正在尝试传递邮件的邮件服务器)。或者沿着该路由的一个SMTP中继服务器。

拒绝并不意外:您声明您的服务器正在AWS中运行。不幸的是,您不是唯一一个来自AWS实例的邮件。很多臭名昭着的垃圾邮件发送者都在你之前,破坏了AWS的IP地址作为值得信赖的邮件来源的可信度。这就是为什么许多ISP阻止来自AWS的传入邮件(这就是554错误:拒绝中继访问)。

使您的问题恶化:如果您继续使用此方法,AWS将自动阻止来自您实例的所有外发邮件,以试图解决垃圾邮件问题。手动验证您的意图后,他们应恢复您的邮寄权限。

您在AWS上可靠地发送电子邮件的最佳选择可能是使用他们自己的SES service,这可能会让您通过MTA中的大多数RBL次检查。但SES确实要花钱..