在网络诈骗案件中,钓鱼邮件往往是受害人接触诈骗链条的第一步。邮件取证不是只看“发件人显示是谁”,而是要把邮件头、MIME 结构、附件、认证结果和投递链条一起看。
这篇文章先讲邮件取证中最常用的知识点,再用 2025 年美亚杯团队赛邮件材料前 16 题来对应练习。写题的时候要记住一个原则:邮件客户端显示出来的内容只是结果,真正的证据要回到原始 EML 和邮件头里找。
1. 邮件由哪几部分组成
一封邮件可以粗略拆成三层:信封、邮件头、邮件体。
信封(Envelope) 是 SMTP 传输过程中使用的信息,例如 MAIL FROM 和 RCPT TO。它更像快递系统里的投递指令,用户平时在客户端里不一定能直接看到。取证时常通过 Return-Path、投递日志、邮件服务器日志去补充判断。
邮件头(Header) 是邮件取证的核心区域,里面记录了元数据和投递过程。常见字段包括:
| 字段 | 取证意义 |
|---|---|
Received |
邮件经过哪些服务器。一般自下而上读,最下面更接近发起端 |
From |
客户端显示的发件人,容易被伪造 |
Reply-To |
收件人点击回复时实际回到哪里 |
Return-Path |
退信地址,常对应信封发件人 |
Message-ID |
邮件唯一标识,常能反映生成邮件的客户端或域 |
Date |
发件客户端写入的时间,不一定等于服务器接收时间 |
Authentication-Results |
SPF、DKIM、DMARC、ARC 等认证结果 |
User-Agent / X-Mailer |
发送邮件的软件或客户端 |
邮件体(Body) 是正文和附件所在的位置,通常遵循 MIME 标准。正文、HTML、内嵌图片、附件会被拆成多个 MIME part,每一段由 boundary 分隔。
区分正文和附件时,最常看的字段是:
Content-Disposition: inline |
inline 更偏向正文内嵌内容,attachment 才是独立附件。注意:附件即使用 Base64 编码写在 EML 文本里,也仍然可以是独立 MIME part,并不等于“嵌入在正文中”。
对应题目:邮件取证时应注意什么
题 1:在电子邮件取证方面,警方需要注意以下哪些要点?
A. 修改邮件时间戳等元数据以迎合调查时间线
B. 全面检索相关草稿箱与已删除邮件数据
C. 必须确认取证行为获得合法授权,并严格限定提取范围
D. 确保元数据完整性,原始 eml 文件应作为证据链关键环节保存
E. 应备份邮件系统相关日志,确保调查工作有据可查
答案:BCDE
这题是基本原则题。取证不能为了匹配案情去改元数据,A 明显错误。邮件案件里除了收件箱,还要看草稿箱、已删除邮件、服务器日志、客户端缓存和原始 EML。原始 EML 很重要,因为邮件头、MIME 边界、编码方式、附件传输方式都在里面。
2. MIME 结构、附件和编码
邮件正文和附件不是简单拼在一起的,而是按 MIME 结构组织。一个常见邮件可能长这样:
multipart/mixed |
取证时要先看结构,再看内容。只看客户端预览很容易误判附件、内嵌图片和正文之间的关系。
常见编码方式如下:
| 编码 | 识别标志 | 常见位置 | 取证重点 |
|---|---|---|---|
| Base64 | Content-Transfer-Encoding: base64 |
附件、图片、二进制内容 | 需要解码后再做文件类型、哈希、EXIF、恶意代码检查 |
| Quoted-Printable | quoted-printable 或邮件头里的 =?utf-8?Q?...?= |
HTML 正文、邮件标题 | 大量 =E4 这类十六进制转义 |
| 7bit | 7bit |
纯 ASCII 英文 | 基本可直接阅读 |
| 8bit | 8bit |
UTF-8 文本 | 可直接承载非 ASCII 字符 |
| binary | binary |
极少见 | SMTP 传输中受限,实际邮件里通常不用 |
| Encoded-Word | =?charset?B?...?= 或 =?charset?Q?...?= |
Subject、显示名 |
邮件头专用编码 |
邮件头里的编码要特别注意。例如:
Subject: =?utf-8?Q?Exclusive_Invitation=3A_IQ_Coin?= |
Q 代表 Q-Encode,接近 Quoted-Printable;B 代表 Base64。很多钓鱼邮件会把标题拆成多段编码,绕过关键词匹配。
对应题目:附件结构
题 2:请分析邮件材料中的附件结构,并指出哪项描述正确?
A. PDF 附件包含 JavaScript 代码,用于从外部来源动态加载内容
B. JPG 附件的元数据包含地理位置信息
C. 邮件附件并非以独立附件传输,而是以 Base64 编码方式嵌入在正文中
D. 邮件中有使用标准 ASCII 字符集编码系统表示字符及未加密的纯文本文件附件
E. 以上皆不正确
答案:E
分析思路:
- PDF 可以用
pdfid.py检查/JS、/JavaScript、/OpenAction等危险标记,题中 PDF 没有 JavaScript 代码块。 - JPG 附件查看 EXIF 后没有地理位置信息。
- 附件位于独立的
Content-Disposition: attachmentMIME part 中。Base64 只是附件传输编码,不代表它不是独立附件。 - 没有
Content-Type: text/plain的纯文本附件,附件也不是“标准 ASCII 字符集未加密纯文本文件”。
对应题目:MIME 中未使用的编码
题 3:请分析 MIME 格式结构,并指出哪种内容编码未被使用?
A. 7bit
B. quoted-printable
C. base64
D. binary
E. 8bit
答案:D
题中能看到 =?utf-8?Q?...?= 这类 Q-Encode/Quoted-Printable 痕迹,也能看到明显的 Base64 块。英文内容对应 7bit,UTF-8 非 ASCII 文本可以视为 8bit 范畴。binary 在标准邮件传输中受限制,实际附件通常会转成 Base64,因此本题未使用的是 binary。
对应题目:附件里的钱包地址
题 4:哪两个附件藏有加密货币地址 0x548dafDe4B17d7d3C9485E79B3B5018801C7855E?
A.
IQ_1.jpg和IQ coin proposal.pdf
B.IQ_Coin_Tokenomics_Overview.pdf和IQ_Coin_Compliance_Summary.pdf
C.7b3e4512-1d8d-4d54-AA1c-5b004ce23A6f.jpeg和IQ_Coin_Compliance_Summary.pdf
D.IQ_1.jpg和7b3e4512-1d8d-4d54-AA1c-5b004ce23A6f.jpeg
E.IQ coin proposal.pdf和IQ_Coin_Compliance_Summary.pdf
答案:D
这题考的是附件内容分析,不是邮件头。两个图片附件里都有二维码,二维码解码后能得到目标钱包地址。比赛中可以用 QR Research、BQRCodeReader、zbarimg 或在线/离线二维码工具识别。实际取证时建议导出附件后计算哈希,再对二维码结果截图或记录工具输出,形成证据链。
3. 发件人显示、原始发件人与身份认证
邮件里最容易误导人的就是 From。客户端显示的发件人可以和原始发件人、回复地址、投递账户不一致。
常见相关字段:
| 字段 | 说明 |
|---|---|
From |
用户看到的发件人 |
X-Google-Original-From |
Gmail 等服务保留的原始发件人信息 |
Reply-To |
回复地址 |
Return-Path |
退信地址 |
Authentication-Results |
认证结论 |
现代邮件认证主要看 SPF、DKIM、DMARC、ARC。
SPF 检查发件 IP 是否被发件域授权。它回答的是“这台服务器有没有资格代表该域发信”。
DKIM 使用数字签名验证邮件内容和部分头字段是否被篡改。它回答的是“这封邮件是否由持有该域私钥的一方签过名”。
DMARC 在 SPF/DKIM 之上增加域名对齐要求。只有 SPF 或 DKIM 至少一个通过,并且与 From 域对齐,DMARC 才能通过。
ARC 用于转发场景,记录中间节点看到的认证结果。如果 ARC 为 None,说明没有 ARC 链可以帮你背书,这时更要回到 SPF、DKIM、DMARC、域名对齐和 Received 链综合判断。
对应题目:原始发件人与显示发件人
题 5:哪一封邮件的原始发件人地址是 marketing@manson.com?
答案:Exclusive Invitation_IQ Coin Pure Growth Fund – Special Offer for You 2025-04-29T18_35_47+08_00.eml
也就是选项 A。
这题要看邮件头中的原始发件人字段。该邮件客户端显示为:
Marketing <mansonmfi@gmail.com> |
但邮件头中可以看到:
X-Google-Original-From: Marketing <marketing@manson.com> |
因此原始发件人线索指向 marketing@manson.com,而收件人界面看到的发件地址不是它。
题 6:根据上一题,收件者会见到这封邮件来自哪一个邮箱地址?
答案:mansonmfi@gmail.com
这题要区分“原始发件人”和“用户看到的 From”。客户端收件界面显示的是 Marketing <mansonmfi@gmail.com>,所以收件者看到的是 Gmail 地址。
对应题目:ARC 为 None 时怎么判断真伪
题 7:邮件头中 ARC 验证结果为 None 时,可以通过哪些方式辅助判断邮件真伪?
A. SPF
B. DKIM
C. 域名对齐
D. 以上皆可以
答案:D
ARC 没有结果不代表邮件一定假,只是少了一条转发链背书。此时要看 SPF 是否授权、DKIM 是否签名通过、From 与 SPF/DKIM 域是否对齐,再结合 Received 链判断来源是否合理。
4. Received 链、客户端和传输安全
Received 是邮件溯源最常用的字段。阅读顺序一般是自下而上:越下面越接近邮件发起端,越上面越接近最终收件服务器。
常见关键字:
| 关键字 | 意义 |
|---|---|
with ESMTPS |
使用加密 SMTP 传输 |
with ESMTPSA |
使用 SMTP AUTH,说明经过身份认证提交 |
with HTTP |
常见于网页版邮件提交 |
by smtp.gmail.com |
邮件由 Gmail SMTP 服务处理 |
using TLSv1.3 with cipher ... |
传输层安全版本和加密套件 |
邮件客户端也可能写入:
User-Agent: eM Client/10.3.1503.0 |
这类字段可以回答“用什么软件发送”,但也要注意它们理论上可以被伪造,需要和投递链、Message-ID 形态一起看。
对应题目:是否经 Gmail 服务器发送
题 8:分析 Exclusive Invitation...eml 邮件头,哪项说法正确?
答案:D. 邮件路由信息与域名引用证实该邮件经 Gmail 服务器发送邮件
关键证据在 Received 链:
Received: from mail-pl1-f193.google.com ... |
smtp.gmail.com 和 ESMTPSA 说明这封邮件是通过 Gmail 的 SMTP 服务并经过认证提交。注意这只能说明经过 Gmail 发出,不等于内容可信,也不等于 manson.com 域名身份一定真实。
对应题目:发送客户端
题 9:该邮件使用哪一个邮件客户端软件发送?
答案:eM_Client/10.3.1503.0
直接看邮件头:
User-Agent: eM Client/10.3.1503.0 |
题目要求“连同版本代号根据标题文件内原文作答”,所以要保留完整字符串。
对应题目:检测欺骗或标头伪造的字段组合
题 10:哪组标头组合可用于检测欺骗或标头伪造行为?
A. From、To、Subject
B. Message-ID、Received、Authentication-Results
C. DKIM、MIME-Version、Content-Type
D. Return-Path、X-Gm-Message-State、X-Pm-Spam
E. DKIM-Signature、SPF、Authentication-Results
答案:B
From/To/Subject 是展示层字段,容易伪造且不能单独证明来源。真正判断伪造时,应结合:
Received:投递路径是否合理;Authentication-Results:SPF、DKIM、DMARC 结果;Message-ID:生成域、格式和客户端特征是否与声称来源矛盾。
E 里虽然有 DKIM、SPF,但 SPF 通常是认证结果,不是一个独立原始头字段;而且缺少 Received 链,不如 B 完整。
对应题目:Received 跃点数量
题 11:分析 Re_Proposal...2025-05-02T15_14_02+08_00 的 Received 链,邮件从发起到送达 ProtonMail 经历多少网络跃点?
答案:B. 2 个跃点:发件人客户端 -> Gmail 服务器 -> ProtonMail 服务器
邮件头中能看到三条 Received:
Received: ... by mailinosl106.protonmail.ch ... |
最下面的 with HTTP 代表网页版发起,随后进入 Gmail,再到 ProtonMail。题目按网络投递链概括为客户端到 Gmail、Gmail 到 ProtonMail,所以答案是 2 个跃点。
对应题目:相同 IPv6 地址说明什么
题 12:两封邮件源自相同 IPv6 地址,下列哪个正确?
答案:B. 这说明两封邮件经过了同一出站节点
相同 IPv6 可以作为关联线索,但不能直接证明“同一台设备”“同一账号”或“具体某个人”。邮件服务商可能有前端、代理、负载均衡和隐私保护机制。比赛里这类题要保守表述:它说明两封邮件经过同一出站节点。
对应题目:TLS 加密套件
题 13:邮件通过 TLSv1.3 传送时使用了哪一个加密套件?
答案:A. AES 256 GCM SHA384
邮件头中有类似字段:
using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 |
所以对应选项是 AES 256 GCM SHA384。这里考的是从 Received 头里读 TLS 元数据,不需要真正解密邮件。
5. Message-ID 与时间线
Message-ID 的常见格式是:
<unique-string@domain> |
它通常由发件客户端或邮件系统生成。取证时可以看:
Message-ID的域是否与发件系统一致;- 不同邮件的
Message-ID形态是否相似; Date、最底层Received时间和文件名时间是否能互相对应;In-Reply-To、References是否能还原邮件会话链。
时间线题要区分:
| 时间 | 来源 | 可信度与用途 |
|---|---|---|
Date |
发件客户端写入 | 可被客户端影响,但能表示邮件声称创建时间 |
最底层 Received 时间 |
第一台接收服务器记录 | 更适合判断进入标准投递链时间 |
最上层 Received 时间 |
最终收件服务器记录 | 更接近送达时间 |
| 文件系统时间 | EML 文件落盘时间 | 反映保存/导出时间,不一定是发信时间 |
对应题目:Message-ID 是否有伪造嫌疑
题 14:检查 Exclusive Invitation...eml 的 Message-ID 与发件人地址关系,判断是否存在伪造嫌疑。
答案:A. 正确
邮件头中能看到类似:
Message-Id: <...@8b19b573.com> |
表面发件人是 Gmail 地址,原始/回复线索又指向 marketing@manson.com,但 Message-ID 域却是 8b19b573.com。这种不一致是伪造或异常客户端生成的可疑信号。
对应题目:进入标准投递链的起点时间
题 15:对 Re_Proposal...2025-05-02T14_37_03+08_00.eml 溯源,列出邮件进入标准化投递链条起点,即第一个接收这封邮件的服务器日期及时间(GMT+8)。
答案:2025-05-02 14:37:00
关键是找最底层 Received:
Received: by 2002:a17:906:eb0c:b0:ace:ee33:12ee with HTTP; |
把 2025-05-01 23:37:00 -0700 换算到 GMT+8,需要加 15 小时,得到:
2025-05-02 14:37:00 |
对应题目:该时间是否等于邮件建立时间
题 16:根据上一题,这个日期时间是否等于这封邮件的建立时间?
答案:A. 正确
邮件头中 Date 字段同样是:
Date: Thu, 01 May 2025 23:37:00 -0700 |
换算到 GMT+8 后就是 2025-05-02 14:37:00。所以本题中“进入投递链起点时间”和邮件 Date 声称的建立时间一致。
6. 邮件取证小结
做邮件题时可以按这个顺序来:
- 保留原始 EML,不要只看客户端截图。
- 先看 MIME 结构,区分正文、内嵌图片和独立附件。
- 导出附件后做文件类型、哈希、EXIF、二维码、PDF 风险标记检查。
- 看
From、Reply-To、Return-Path、X-Original-From,区分显示身份和原始身份。 - 自下而上读
Received,找发起端、邮件服务商、收件服务器和时间。 - 看
Authentication-Results,结合 SPF、DKIM、DMARC、ARC 和域名对齐。 - 检查
Message-ID、User-Agent、Date、References,判断客户端、会话链和伪造嫌疑。
如果一句话总结:邮件取证不是相信“谁发来的”,而是证明它怎样被构造、怎样被投递、怎样被认证、又怎样被收件人看到。