我一直在CentOS 6.6机器上安装Wordpress,我对这个东西很陌生。新安装所以所有最新版本的httpd,php,mySQL和Wordpress。
除了使用SMTP发送电子邮件外,现在一切正常。我在Wordpress中安装了几个插件来配置SMTP,但是发送测试电子邮件总是会导致SMTP connect()失败等错误。我做的不仅仅是确保我的凭据还可以。
从命令行我尝试了这些:
telnet smtp.gmail.com 25
和
openssl s_client -connect smtp.gmail.com:465
他们两个都把我连接到gmail的smtp而没有问题。由于Wordpress不允许连接的持续错误,最后我决定将Wordpress从等式中删除,我在我的服务器上创建了一个包含以下代码的测试php文件,该代码返回所有端口的“无响应”:
<?php
$host = 'smtp.gmail.com';
$ports = array(25, 465, 587);
foreach ($ports as $port)
{
$connection = @fsockopen($host, $port);
if (is_resource($connection))
{
echo '<h2>' . $host . ':' . $port . ' ' . '(' . getservbyport($port, 'tcp') . ') is open.</h2>' . "\n";
fclose($connection);
}
else
{
echo '<h2>' . $host . ':' . $port . ' is not responding.</h2>' . "\n";
}
}
将上面的PHP脚本改为www.gmail.com并添加端口80和443,整齐地显示80和443打开,其余部分关闭(这是有意义的,因为我现在正在看www服务器),所以脚本似乎工作正常。
我猜测它本身就是PHP中的一些问题,不允许我通过任何SMTP端口(因为我可以从cmdline telnet到这些端口)
我无法弄清楚PHP中的问题是什么。任何人都有任何指示如何解决这个问题?
答案 0 :(得分:1)
找到我自己的答案:)每当我尝试从PHP访问任何SMTP端口时,audit.log输入条目的事实响起了响铃:SELinux是罪魁祸首。
暂时禁用SELinux使其再次运行:
echo 0 >/selinux/enforce
在证明有效之后,我使用以下方法启用了SELinux:
echo 1 >/selinux/enforce
...最后我发现这个cmd会配置SELinux以允许SMTP通过apache / PHP:
setsebool -P httpd_can_network_connect on
答案 1 :(得分:1)
最后!我花了至少8个小时来解决为什么我可以使用shell而不是WordPress发送邮件。这解决了我的问题!
$ sudo setsebool -P httpd_can_sendmail 1