如果在 CentOS 7.9 服务器上搭建邮件服务,或者需要使用 SMTP 发送邮件,发现 25 端口无法连接,通常需要检查服务器防火墙是否放行了 25 端口。

本文以 CentOS 7.9 为例,介绍如何通过 firewalld 放行 TCP 25 端口。

一、检查防火墙状态

首先执行:

firewall-cmd --state

如果返回:

running

说明防火墙正在运行。

二、放行 25 端口

执行以下命令:

firewall-cmd --zone=public --add-port=25/tcp --permanent

看到:

success

说明规则添加成功。

然后重新加载防火墙:

firewall-cmd --reload

重载如果不生效,可以重启防火墙:

systemctl restart firewalld

三、检查 25 端口是否放行

执行:

firewall-cmd --list-ports

如果看到:

25/tcp

说明 CentOS 防火墙已经放行 25 端口。

也可以使用:

firewall-cmd --query-port=25/tcp

返回:

yes

即表示 25 端口已经放行。

四、如果仍然无法连接

需要注意,防火墙放行 25 端口并不代表外部一定可以访问

如果执行上述操作后,25 端口仍然无法使用,还需要检查:

  1. 邮件服务是否正在监听 25 端口
  2. 云服务器安全组是否放行 TCP 25
  3. 服务器商是否限制或封禁 25 端口
  4. 运营商或上游网络是否存在 SMTP 端口限制

可以使用以下命令检查服务器是否监听 25 端口:

ss -lntp | grep :25

如果能看到类似:

LISTEN  0  100  0.0.0.0:25

说明服务器上的服务正在监听 25 端口。

常用命令汇总

# 放行 25/TCP
firewall-cmd --zone=public --add-port=80/tcp --permanent

# 重新加载防火墙
firewall-cmd --reload

# 查看已放行端口
firewall-cmd --list-ports

# 检查 25 端口
firewall-cmd --query-port=25/tcp

# 检查 25 端口监听情况
ss -lntp | grep :25

温馨提示:如果是云服务器,还需要同时检查云平台的安全组规则;如果服务商直接限制了 25 端口,仅修改 CentOS 防火墙规则无法解除限制。