在我安装 CentOS 7 时,我无法连接在服务器上创建的作为 Gmail 别名的电子邮件帐户之一。
我已运行以下命令:
firewall-cmd --permanent --zone=public --add-service=smtp
firewall-cmd --permanent --zone=public --add-port=25/tcp
当我做一个
firewall-cmd --permanent --zone=public --query-port=25/tcp
它返回“是”
但是,我在 Gmail 和各种电子邮件测试网站上仍然收到“无法访问服务器”错误。
然后我做了一个
nmap -sT -O localhost
并看到我的端口没有在那里列出。有什么想法吗?
答案1
两件事情。首先,对于firewalld,您需要在使用firewall-cmd --reload
或应用永久规则后重新加载--complete-reload
。重新验证您的查询或firewall-cmd --list-all
.
其次,如果您已经执行了上述操作,请检查ss -tuna | grep 25
它是否正在侦听*:25
。如果它正在侦听“127.0.0.1:25”,那么您需要重新配置 postfix 以侦听另一个接口。例子。
inet_interfaces = $myhostname
# or...
inet_interfaces = all
答案2
假设我们有三个设备接口:lo、LAN 和 WAN。
- 瞧,本地主机 127.0.0.1
- LAN、局域网 192.168.1.2
- 广域网、世界区域网 169.254.8.8
如果您从 WAN 打开流量,假设您的帖子中的区域是公开的,则必须对其进行定向。这称为源和目的地。
外部来自 WAN,因此来源未知,因此我们可以允许所有:0.0.0.0
我们的邮件服务器运行在局域网上,所以也许更多的服务器可以在本地轻松使用它。 (如果防火墙允许的话)。为了从外部到达它,我们需要定义目的地。
端口 25 上的源 = 0.0.0.0,目标 = 192.168.1.2。端口也有源端口和目标端口。
0.0.0.0:25 -> 192.168.1.2:25
对于局外人来说,它看起来像这样:
my.ip.address -> 169.254.8.8:25
现在的问题是,隧道尽头有人吗?您可能将邮件服务器设置在 lo (127.0.0.1) 上。
要检查端口,您可以运行netstat -al
.
- -a 或 --all 显示当前使用的所有套接字
- -l 或 --listening 仅显示当前侦听传入连接的套接字。
我认为 plesk 是一个虚拟托管提供商,通常在实例之上有一个防火墙层。那么不要在实例本身上配置防火墙,而是在顶层配置防火墙。
我没有使用 plesk 的经验,但请查看他们的常见问题解答