繁体   English   中英

Wordpress.org服务器:PHP无法访问SMTP端口,但telnet可以

[英]Wordpress.org server: PHP cannot access SMTP ports but telnet can

我一直在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 ARE已打开,其余端口已关闭(这很有意义,因为我现在正在查看www服务器),因此该脚本似乎工作正常。

我猜想PHP本身必须存在一些问题,不允许我通过任何SMTP端口出局(因为我可以从cmdline远程登录到这些端口)

我无法弄清楚PHP中可能出现的问题。 任何人有任何指示如何解决这个问题?

找到我自己的答案了:)每当我尝试从PHP访问任何SMTP端口时,audit.log都会输入条目,这是事实:SELinux是罪魁祸首。

暂时禁用SELinux使它再次工作:

echo 0 >/selinux/enforce

在证明有效之后,我使用以下命令重新启用了SELinux:

echo 1 >/selinux/enforce

...最后,我发现此cmd将配置SELinux以允许通过apache / PHP进行SMTP:

setsebool -P httpd_can_network_connect on

最后! 我花了至少8个小时进行故障排除,为什么我可以使用Shell而不是WordPress发送邮件。 这解决了我的问题!

 $ sudo setsebool -P httpd_can_sendmail 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM