【问题标题】:Outbound port open on firewall, how to unblock for PHP?在防火墙上打开出站端口,如何解除对 PHP 的阻止?
【发布时间】:2015-12-25 22:38:12
【问题描述】:

目标是使用 PHP 通过 SMTP 从我的共享主机向 Mandrill 发送出站电子邮件,我与主机系统管理员有充分的合作。

目前情况:

  • ✅ PHP 可以连接到 smtp.mandrillapp.com 端口 443(用于 HTTPS)
  • ❌ PHP 无法连接到 smtp.mandrillapp.com 端口 587(用于 SMTP)
  • ✅ PHP 可以连接到 portquiz.net 端口 443(用于 HTTPS)
  • ❌ PHP 无法连接到 portquiz.net 端口 587(用于 SMTP)
  • ✅ Telnet 可以连接到 smtp.mandrillapp.com 端口 443
  • ✅ Telnet 可以连接到 smtp.mandrillapp.com 端口 587

Telnet 由他们以 root 登录并运行 telnet HOST PORT 进行测试。使用下面的脚本测试 PHP。

PHP 的哪个配置选项可能会导致端口 587 上的出站连接被阻止?我们如何才能扭转这种配置?

<?php
// Test outbound server connections

// https://mandrill.zendesk.com/hc/en-us/articles/205582167-What-SMTP-ports-can-I-use-
$servers = array(
    array("ssl://www.google.com", 443),
    array("ssl://smtp.mandrillapp.com", 465),
    array("smtp.mandrillapp.com", 25),
    array("smtp.mandrillapp.com", 587),
    array("smtp.mandrillapp.com", 2525),
    array("smtp.mandrillapp.com", 443)
);

foreach ($servers as $server) {
    list($server, $port) = $server;
    echo "<h1>Attempting connect to <tt>$server:$port</tt></h1>\n";
    flush();
    $socket = fsockopen($server, $port, &$errno, &$errstr, 10);
    if(!$socket) {
      echo "<p>ERROR: $server:$portsmtp - $errstr ($errno)</p>\n";
    } else {
      echo "<p>SUCCESS: $server:$port - ok</p>\n";
    }
    flush();
}
?>

【问题讨论】:

  • 错误编号是多少?
  • 你有一张支票到了 587 端口。它没有被阻止出去。您实际上并没有检查端口 586 上的任何内容。
  • @JasonK 谢谢,我已经更新了这个问题中的 586/587 错字
  • @PrestonS 错误是:警告:fsockopen() [function.fsockopen]:无法连接到 /home/heroanswers/ 中的 ssl://smtp.mandrillapp.com:465(连接超时) public_html/smtptest.php 第 22 行错误:ssl://smtp.mandrillapp.com: - 连接超时 (110)
  • @FullDecent 错误消息不是针对相关端口的,端口 587 的错误是什么?

标签: php port firewall


【解决方案1】:

据我所知,无法使用 PHP 阻止任何特定端口。 (也许使用 suhosin,但我从未听说过这个选项。)

能否询问您的托管服务提供商是否启用了 SELinux? SELinux 允许操作系统拒绝某些用户/进程绑定/连接到某个端口。这可能是他们可以使用 telnet 以 root 身份连接到 SMTP 服务器的原因,但是您自己用户下的 PHP 进程却不能。我经历过 CentOS 服务器,在其中我无法使用 PHP/Apache 连接到端口 80,但是当我以 root 身份执行 curl/wget 时,一切都很好。

【讨论】:

  • Apache 有额外的限制。似乎他们能够为我做出这个例外。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-02
相关资源
最近更新 更多