Linux服务器查看所用邮件服务及停止外发邮件的方法
Linux邮件服务相关操作解答
1. 查询当前服务器正在使用的邮件服务类型
你可以通过以下几个常用方法确认:
- 查看25端口(SMTP默认端口)的占用进程
执行命令:ss -tulnp | grep :25
输出结果中的进程名即为当前运行的邮件服务,常见的邮件服务包括postfix、sendmail、exim、qmail等。 - 查看系统中已加载的邮件相关服务状态(适用于systemd管理的发行版)
执行命令:systemctl list-units --type=service | grep -E '(postfix|sendmail|exim|dovecot|qmail)'
运行状态为active的即为当前在用的邮件服务。 - 查看系统已安装的邮件服务软件包
Debian/Ubuntu系列发行版执行:dpkg -l | grep -E '(postfix|sendmail|exim)'
RHEL/CentOS/RockyLinux系列发行版执行:rpm -qa | grep -E '(postfix|sendmail|exim)'
2. 停止邮件服务的外发邮件功能
操作前建议先备份对应服务的配置文件,避免配置错误导致服务异常
以下是不同场景的操作方法:
通用方法(适配所有邮件服务)
直接通过防火墙禁止外发SMTP端口的出站请求,邮件服务即使正常运行也无法向外发送邮件:
- firewalld防火墙(RHEL系列默认)执行:
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p tcp --dport 25 -j DROP firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p tcp --dport 465 -j DROP firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p tcp --dport 587 -j DROP firewall-cmd --reload - ufw防火墙(Debian/Ubuntu系列默认)执行:
ufw deny out 25/tcp ufw deny out 465/tcp ufw deny out 587/tcp ufw reload
针对不同邮件服务的配置方法
Postfix(主流发行版默认邮件服务)
- 编辑主配置文件:
vi /etc/postfix/main.cf - 新增或修改参数:
default_transport = error:Outgoing mail is disabled - 保存退出后重载配置生效:
systemctl reload postfix
配置完成后所有外发邮件会被直接退回,并返回对应错误提示。
Sendmail
- 编辑配置文件:
vi /etc/mail/sendmail.mc - 修改
DAEMON_OPTIONS配置,限定仅监听本地地址:DAEMON_OPTIONS(Port=smtp,Addr=127.0.0.1, Name=MTA')dnl` - 重新生成sendmail配置文件:
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf - 重启服务生效:
systemctl restart sendmail
配置完成后仅支持本地邮件收发,无法向外发送邮件。
Exim
- 编辑主配置文件:
vi /etc/exim.conf - 在路由配置段的最前面新增如下规则:
disable_outgoing: driver = redirect domains = ! +local_domains data = :fail: Outgoing mail is disabled
- 重载配置生效:
systemctl reload exim
内容的提问来源于stack exchange,提问作者Hasan Raza
相关产品推荐
相关产品推荐

