除了 80 之外,还需要哪些端口才能通过 SSL 使用 phpmailer 向 gmail 发送(仅发送)电子邮件?

除了 80 之外,还需要哪些端口才能通过 SSL 使用 phpmailer 向 gmail 发送(仅发送)电子邮件?

使用phpmailer当我从我的网络服务器发送电子邮件时,我总是收到 110 超时和“无法连接到主机”的错误提示。

身份验证详细信息是正确的,并且它们在我的另一台服务器上有效(登录、密码、端口等以及在 465 上为 SSL 连接设置的 gmail 帐户),但它在我的新服务器上失败了。

防火墙: 我在 INPUT 上允许相关/已建立、端口 80 和 SSH 端口,然后在 OUTPUT 上允许此端口:

7906  474K DROP       tcp  --  any    any     anywhere             anywhere            tcp dpt:smtp  
0     0 ACCEPT     tcp  --  any    any     localhost.localdomain  yw-in-f109.1e100.net tcp dpt:submission  
0     0 ACCEPT     tcp  --  any    any     localhost.localdomain  gx-in-f109.1e100.net tcp dpt:ssmtp  
0     0 DROP       tcp  --  any    any     anywhere             anywhere            tcp dpt:submission  
9   540 DROP       tcp  --  any    any     anywhere             anywhere            tcp dpt:ssmtp 

此输出链在我的其他服务器上有效,禁用它也无法传递邮件。

网络服务器: Varnish (80) > Nginx (8088) > Drupal 7 > PHP5-FPM > APC > MySQL 除外发电子邮件外,所有功能均运行正常。

还有什么呢?
我理解 phpmailer 不需要本地 MTA 或 procmail(这有点道理 - 我不希望在我的 Web 服务器上使用功能齐全的 MTA 带来安全或管理开销)。我错了吗?我也需要 MTA 吗?

哪些本地端口和程序用于通过 SSL 进行身份验证以及使用 phpmailer 路由邮件?

非常感谢任何想法 - 已经在这些无稽之谈上浪费了一天的时间!

答案1

如果远程 smtp 不可用,则最好使用本地 mta 对消息进行排队。

限制传出流量并不常见。安全优势很小:如果攻击者拥有您的本地计算机,他无论如何都可以关闭防火墙。即使您可以很好地控制您的应用程序,我也不会这么做,因为您永远不知道 gmail 使用哪些 IP 进行提交。它们可以在没有通知的情况下更改。所以我的建议是至少向所有主机开放提交/ssmtp。

答案2

我允许相关/已建立、端口 80 和 INPUT 上的 SSH 端口,然后允许 OUTPUT 上的这个端口

否 - 端口 80 用于网络流量 - 与网络流量无关。

哪些本地端口和程序用于通过 SSL 进行身份验证以及使用 phpmailer 路由邮件?

客户端端口是随机选择的。

你的日志表明发生了什么?

如果不知道您的 phpmailer 设置是什么(或者您的 PHP 是否支持 SSL),就无法说出这里到底发生了什么。

即使您已正确配置您的机器和代码,您知道这个盒子和 Gmail 服务器之间有什么吗?

您是否已正确检查其解析名称?您是否可以从本地网络跟踪到 smtp.gmail.com 的大致方向?(如果 ping 成功,则意味着没有路由问题 - 但如果失败,则并不一定意味着路由已中断)。

尝试启动与 smtp.gmail.com 的 SSL 连接 stunnel,并观察通过 telnet 连接时会发生什么。

相关内容