邮件网关日志追溯是什么
邮件网关日志按队列 ID 串联一次投递的全过程:接收、排队、投递尝试、退信、最终状态。从可疑邮件的头部拿到队列 ID 后,就能在日志里还原它从哪来、发给了谁、有没有成功投递,再与收件端痕迹对照确认是否被打开点击。
基本信息
| 适用组件 | Postfix(/var/log/mail.log、maillog)、Exchange 邮件跟踪日志 |
|---|---|
| 关键字段 | queue id、from、to、status、relay、size |
| 关联键 | 队列 ID,与邮件头中的标识一致 |
| 轮转文件 | mail.log.1、mail.log.2.gz 等归档 |
典型使用场景
- 钓鱼邮件排查:确认投递范围与实际收件人
- 判断外发邮件是否成功,读取退信与拒绝原因
- 排查内部账号被用于批量群发
- 按发件域名统计投递量,识别可疑批量发送
- 与邮件安全网关的判定结论交叉核对
- 排查内部账号被用于群发时,统计该账号一段时间内的收件人数量
- 按退信原因分类(拒收、用户不存在、内容判定),不同原因对应不同处置
按队列 ID 追踪
按队列 ID 追踪
grep 'ABCDEF1234' /var/log/mail.log # 按队列 ID 完整追踪
grep 'from=<sender@example.com>' /var/log/mail.log | head
grep 'status=bounced' /var/log/mail.log | tail -20 # 退信与失败原因
grep 'to=<user@corp.example>' /var/log/mail.log | wc -l # 某收件人的投递量
zgrep -h 'queue active' /var/log/mail.log.*.gz | head
# 队列 ID 的记录可能跨多个日志档,轮转文件要一起检索状态行读法
| 状态 | 含义 | 说明 |
|---|---|---|
| status=sent | 投递成功 | 结合 relay 判断交给哪台服务器 |
| status=bounced | 退信 | 附原因:用户不存在、拒收、超限 |
| status=deferred | 延迟重试 | 队列积压或被对方限速 |
| status=rejected | 被拒绝 | 策略或黑白名单触发 |
网关日志只能说明投递结果。收件人是否打开、是否点击链接,要去终端侧或邮件客户端痕迹里确认,不能从网关日志直接推断。
邮件头部由多级服务器逐跳添加,Received 顺序自下而上。伪造的头部会影响来源判断,必须结合日志时间与 relay 地址核对。
统计投递量时按发件域名聚合,比逐个发件地址统计更早暴露批量发送行为,也更容易区分正常批量通知与异常群发。