服务器上的邮件服务为什么要看
安装监控、告警或应用依赖时,常常连带装上 postfix 或 sendmail,而这些服务的默认配置在特定网络环境下会变成开放中继:任何人都能借这台机器往任意地址发信。后果是 IP 声誉受损、被列入黑名单,甚至被用来投放钓鱼邮件。
基本信息
| 适用平台 | Linux(postfix、sendmail、exim 等) |
|---|---|
| 相关端口 | 25、465、587 |
| 关键配置 | inet_interfaces、mynetworks、relay 相关参数 |
| 基线 | 不存在开放中继,或根本未安装邮件服务 |
典型使用场景
- 最小化核查:确认服务器上是否真的需要本机邮件服务
- 告警链路检查:应用发告警邮件时的中继范围是否受控
- 事件排查:发现异常外发邮件后的第一时间定位
- 合规检查:邮件服务与开放中继是常见的外部暴露面检查项
核查
核查
# 是否在监听邮件端口
ss -tlnp | grep -E ':25 |:465 |:587 '
# postfix 关键配置
postconf -n 2>/dev/null | grep -Ei 'inet_interfaces|mynetworks|relay'
# 确认服务状态与安装来源
systemctl is-active postfix sendmail exim4 2>/dev/null
rpm -q postfix 2>/dev/null; dpkg -l postfix 2>/dev/null | tail -2关键配置读法
| 配置项 | 含义 | 风险点 |
|---|---|---|
| inet_interfaces | 监听哪些地址 | listen 全网卡且无需对外发信时属多余暴露 |
| mynetworks | 被信任的中继来源 | 默认含本机网段,办公网会被连带信任 |
| relayhost | 中继目标 | 应指向受控的邮件网关而非直连外发 |
| smtpd_recipient_restrictions | 收件人限制 | 缺省配置过宽时可能被当成中继使用 |
确认是否真可被利用
- 从外部网络连本机 25 端口,按 SMTP 会话流程尝试向外部域名投递,观察是否被拒绝
- 核对被信任来源与收件人限制的取值:默认值常把整个本机网段列为可信来源
- 检查本地注入路径:脚本与应用直接调用本地投递命令,这条路径不经过 25 端口
- 查看邮件队列积压:队列异常增长往往先于外部投诉与封禁出现
相关线索读法
| 线索 | 含义 | 处置 |
|---|---|---|
| 外发日志中的收件域名 | 本机实际投递过哪些外部域 | 出现大量陌生外部域名说明已被利用 |
| 队列目录积压 | 待投递邮件堆在本机 | 先限制来源并修配置,再清理队列 |
| 服务安装来源 | 哪个组件把它作为依赖装上 | 确无需求则停用并卸载 |
| 监听地址范围 | 是否绑定全网卡 | 仅本机发信时应收敛到本地回环 |
开放中继会实实在在造成损失:IP 被列入黑名单后,连正常业务邮件都会发不出去,恢复申诉往往需要数天。
不需要本机发信就直接停用或卸载:很多服务器装邮件服务只是因为某个监控组件把它作为依赖,停用前确认没有本地邮件注入需求即可。
保留邮件服务时把中继指向受控邮件网关:由网关统一做身份校验与外发限制,主机侧只负责投递到网关,责任边界更清晰。
开放中继的判定要走验证流程:从外部网络连接 25 端口并尝试向外部地址投递,能成功才说明确实可被利用,不要只凭配置文件推断结论。
排查范围要覆盖三个端口:25 之外,465 与 587 若不强制认证同样可被滥用,只封一个端口得出的结论并不完整。