首页/安全/取证与溯源速查/邮件网关日志追溯
日志溯源53 条

邮件网关日志追溯

Postfix 以 queue id 串联一次投递的收件、退信与转发过程:拿到可疑邮件头里的 ID 即可还原完整路径。

取证与溯源速查安全更新于 2026-10-13

邮件网关日志追溯是什么

邮件网关日志按队列 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 地址核对。
统计投递量时按发件域名聚合,比逐个发件地址统计更早暴露批量发送行为,也更容易区分正常批量通知与异常群发。

易错点

  • 同一队列 ID 的记录可能分布在多个轮转文件里,只查当前文件会让投递链断掉
  • 只查网关日志不查收件端,无法确认邮件是否被打开与点击
  • 把邮件头里的 Received 链当成可信来源,未与日志时间核对
  • 只看单封邮件忽略群发场景,漏掉同一发件人对大量收件人的批量投递

数据来源与参考

  • Postfix 文档(日志与 queue id)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌