打开端口465 smtp在centos上的问题

我正在使用phpMailer发送购买确认使用谷歌应用程序地址/ smtp。 整个事情在开发盒上工作的很好,但是现在它已经开始运行了,似乎我使用的端口(465)被阻塞了。

所以我编辑iptables

-A INPUT -p tcp -dport 465 -j ACCEPT -A INPUT -p tcp -sport 465 -j ACCEPT 

我的理解是,这允许入站和出站连接465(纠正我,如果我错了)。 重新启动iptables后:

 iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:465 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:465 

但是,我仍然收到“无法连接到服务器:权限被拒绝”从phpMailerdebugging。 从我读到的,这通常表明,港口是封闭的, 显然是这样的。

任何提示如何进一步debugging? 任何帮助将不胜感激。

如果有帮助,这里的PHP:

 $mail = new PHPMailer(); $mail->IsSMTP(); $mail->SMTPDebug = 1; //!DEV $mail->SMTPAuth = true; $mail->SMTPSecure = 'ssl'; $mail->Host = 'smtp.gmail.com'; $mail->Port = 465; $mail->Username = $emailAddress; $mail->Password = $emailPassword; $mail->SetFrom($emailAddress, 'PURCHASE ORDER'); $mail->AddAddress($customerEmail); $mail->AddAddress($salesEmail); $mail->Subject = $subject; $mail->Body = $body; $mail->Send() or die('Error: ' . $mail->ErrorInfo); 

*编辑:邮件程序完美地在开发服务器上工作 – 任何关于如何比较可能不同的build议? 相同的操作系统,相同的PHP …我很难过!

你已经告诉你的服务器接受端口465上的传入连接,但是你也告诉它连接到smtp.gmail.com这是一个出站连接。

您将需要打开相同的端口,但在OUTPUT链上而不是INPUT端口上:

 -A OUTPUT -p tcp -dport 465 -j ACCEPT 

防火墙问题导致“连接已重置”或“连接超时”错误消息。 PHPMailer 可能会给你一个“权限被拒绝”的错误信息,而不是这两个中的一个,但这将是一个错误的错误信息 。 (这不会是我第一次看到坏的错误信息。)

如果错误消息“无法连接到服务器:权限被拒绝”是有帮助的,它表明您已经safe_mode或您已经不允许打开您的php.ini套接字。

这也可能是由SELinux造成的。 我不是很熟悉,告诉你该怎么做,以确定是否是这种情况或解决这个问题。