![使用有效的 IP 地址连接到 TCP 端口](https://linux22.com/image/714972/%E4%BD%BF%E7%94%A8%E6%9C%89%E6%95%88%E7%9A%84%20IP%20%E5%9C%B0%E5%9D%80%E8%BF%9E%E6%8E%A5%E5%88%B0%20TCP%20%E7%AB%AF%E5%8F%A3.png)
我已经安装Apache James
并启用了端口 25 上的 smtp 服务器。我可以通过以下方式连接到服务器内部的端口 25:
telnet localhost 25
但是我无法通过以下命令从服务器外部进行连接:
telnet validip 25
在服务器内部我有以下输出netstat -a -n
:
tcp6 0 0 :::25 :::* LISTEN
如何使用有效的 IP 地址从服务器外部连接到端口 25 上的 smtp 服务器?
PS:防火墙允许该端口,并在网络中打开该端口。
$ nmap validip
PORT STATE SERVICE
25/tcp open smtp
在服务器内部:
# ufw status
Status: active
To Action From
-- ------ ----
25/tcp ALLOW Anywhere
25 ALLOW Anywhere
25/tcp (v6) ALLOW Anywhere (v6)
25 (v6) ALLOW Anywhere (v6)
答案1
尝试通过 IPv6 进行连接,它应该可以从外部看到,而不需要端口转发。IPv4 可能需要在路由器上配置端口转发。
如果您打算将邮件发送到您无法控制的服务器,则应获取静态 IP 地址。ISP 经常会阻止动态 IP 上的端口 25 流量,以防止垃圾邮件机器人工作。
尝试将服务器配置为监听端口 587(提交)。该端口被阻止的可能性较小,但可能需要在路由器上转发。
认真考虑使用中继服务器来发送邮件。您的 ISP 可能有一个您可以使用的中继服务器。
答案2
尝试使用 ip 地址而不是 进行本地连接localhost
。您的 netstat 输出表明您的 smtp 服务器未在 ipV4 上监听,仅在 V6 上监听。检查您的配置(启用 V4)或确保您具有完整的 V6 连接并在网络上的其他主机上启用了 V6。