- 文档
- 网络安全
- 教程
【免费下载链接】Learn-Web-Hacking
Study Notes For Web Hacking / Web安全学习笔记
本篇技术指南围绕 Learn-Web-Hacking 仓库中 邮件协议族 文档展开,系统讲解电子邮件传输与访问的三大核心协议(SMTP、POP3、IMAP)及其端口约定,并深入剖析邮件身份认证防护体系(SPF、DKIM、DMARC)的原理与落地验证方式。读者学完本篇后,既能快速识别邮件相关端口与服务指纹,也能掌握使用 DNS 查询验证邮件认证配置的实战方法,为邮件安全审计、钓鱼防御与渗透测试提供直接支撑。
邮件安全在 Learn-Web-Hacking 中的知识定位
在 source/network/index.rst 的「计算机网络与协议」内容索引中,mail与basic、udp、tcp、dhcp、route、domain、http、ssh、ssl、ipsec、wifi并列,共同构成网络协议学习主线。邮件相关知识点在整个仓库中还呈网状分布:
- source/misc/email.rst 从「邮件安全」视角补充了 SPF、DKIM、DMARC 的常用概念与 DNS 查询要点;
- source/info/port.rst 给出了 SMTP/POP3/IMAP 端口的攻击视角(伪造发件人、爆破);
- source/misc/terminology.rst 收录了 SPF、DKIM、DMARC 的规范中文译名与缩写;
- source/vuln/ssrf.rst 将
imap/imaps/pop3/pop3s/smtp/smtps列为 SSRF 可利用的内网服务。
本篇文章即以mail.rst为主干,把这些关联知识点编织成一份完整的邮件安全技术指南。
邮件协议族:SMTP、POP3 与 IMAP
SMTP(简单邮件传输协议)
SMTP(Simple Mail Transfer Protocol)是电子邮件传输的协议,是一组用于从源地址到目的地址传输邮件的规范。它定义了邮件客户端与邮件服务器之间、以及邮件服务器与邮件服务器之间的投递规则,是电子邮件系统得以运转的传输层协议。
端口约定:
- 不启用 SSL 时端口号为25;
- 启用 SSL 时端口号多为465或994。
从仓库的攻击视角看,SMTP 的典型隐患记录在 source/info/port.rst 中:SMTP (25/TCP) 在无认证时可伪造发件人。这一点在 source/info/social.rst 的钓鱼场景中也有呼应——若前期信息收集未获取到运维等人员的邮箱,攻击者可以使用「伪造发送源的方式」发送钓鱼邮件。这正是 SPF/DKIM/DMARC 等认证机制要解决的根源问题。
POP3(邮局协议第 3 版)
POP3(Post Office Protocol 3)用于支持使用客户端远程管理服务器上的电子邮件,是经典的「拉取」型协议:客户端从服务器把邮件取回本地。
端口约定:
- 不启用 SSL 时端口号为110;
- 启用 SSL 时端口号多为995。
攻击视角上,source/info/port.rst 明确标注 POP3 (110/TCP & 995/TCP) 存在爆破风险,即攻击者可针对该端口上的账户做口令枚举,这属于 source/manual/brute.rst 所介绍的爆破工具适用场景。
IMAP(交互式邮件存取协议)
IMAP(Internet Mail Access Protocol)是与 POP3 类似的邮件访问标准协议之一。二者的关键区别在于:开启 IMAP 后,电子邮件客户端收取的邮件仍然保留在服务器上,同时客户端上的操作(如删除邮件、标记已读等)都会反馈到服务器上,服务器上的邮件也会同步做相应动作。这使得 IMAP 更适合多设备同步、服务端存档等场景。
端口约定:
- 不启用 SSL 时端口号为143;
- 启用 SSL 时端口号多为993。
在 source/info/port.rst 中,IMAP (143/TCP & 993/TCP) 同样被列为端口枚举的重点对象。
端口速查表
| 协议 | 全称 | 明文端口 | SSL/TLS 端口 | 主要作用 | 常见攻击点 |
|---|---|---|---|---|---|
| SMTP | Simple Mail Transfer Protocol | 25 | 465 / 994 | 邮件传输、服务器间投递 | 无认证时伪造发件人 |
| POP3 | Post Office Protocol 3 | 110 | 995 | 客户端远程下载管理邮件 | 口令爆破 |
| IMAP | Internet Mail Access Protocol | 143 | 993 | 客户端与服务器同步邮件状态 | 口令爆破 |
其中「爆破」对应的实操参数可参考 source/manual/brute.rst:例如使用 Hydra 时,可用-S启用 SSL 链接、-s<PORT>指定端口(如 465/995/993)、-L/-P指定用户名字典与密码字典、-e ns尝试空密码与用户名即密码、-t<TASKS>控制线程数(默认 16)、-w<TIME>设置超时(默认 30 秒)。
邮件服务在 SSRF 中的利用价值
邮件协议不仅是外网服务,也可能作为内网服务成为 SSRF 的利用目标。source/vuln/ssrf.rst 在「可能的利用点」一节中列出:
imap / imaps / pop3 / pop3s / smtp / smtps——用于爆破邮件用户名密码;gopher——可在 URL 参数中构造 POST/GET 请求,间接攻击内网应用;dict——如curl -vvv 'dict://127.0.0.1:6379/info'的方式探测内网服务。
这意味着在渗透测试中,扫描到 25/110/143 等端口开放后,除了直接爆破,还应考虑该邮件服务是否位于可被 SSRF 触达的内网边界。
邮件身份认证与防护策略:SPF、DKIM、DMARC
邮件协议本身是明文的、无内置身份认证的,因此任何人都可以声称自己是某个发件人。防护侧的核心思路是让收件方能够验证邮件确实由网域授权的服务器发出。这套体系由 SPF、DKIM、DMARC 三个协议协同构成,仓库 source/misc/email.rst 将其总结为邮件安全「常用的概念」。source/misc/terminology.rst 给出的规范译名分别为:
- 发件人策略框架(Sender Policy Framework, SPF)
- 域名密钥识别邮件(DomainKeys Identified Mail, DKIM)
- 基于域名的消息认证、报告和一致性协议(Domain-based Message Authentication, Reporting and Conformance, DMARC)
SPF:授权发件服务器的 IP 范围
SPF(Sender Policy Framework)是一套电子邮件认证机制,用于确认电子邮件是否由网域授权的邮件服务器寄出,防止有人伪冒身份进行网络钓鱼或寄送垃圾邮件。
工作流程:
- 管理员在 DNS 中设定一条TXT 记录(或 SPF 记录),声明本网域允许发送邮件的服务器 IP 范围;
- 收件方收到邮件后,从
MAIL FROM信封地址中提取发件网域,查询该网域的 SPF 记录; - 对比发送邮件的源 IP 是否落在授权范围内;
- 如有任何邮件并非从上述指明授权的 IP 地址寄出,则很可能该邮件并非由真正的寄件者寄出。
典型的 SPF TXT 记录形如:
v=spf1 ip4:203.0.113.10 ip4:203.0.113.0/24 include:_spf.example.net -all其中v=spf1标识记录版本,ip4:声明允许的 IP 或网段,include:引用第三方授权,末尾的-all表示对不在列表内的来源一律判定失败(更宽松的写法有~all软失败、+all全部放行,后者强烈不建议在生产使用)。
DKIM:对邮件头内容进行数字签名
DKIM(DomainKeys Identified Mail)是一种检测电子邮件发件人地址伪造的方法,核心是让邮件内容具有可验证的完整性。
工作流程:
- 发送方在邮件的头部插入
DKIM-Signature字段,用域名的私钥对邮件头及正文的关键部分做数字签名; - 收件方解析签名中的域名与选择器(selector),通过查询 DNS 记录中的公钥来验证签名;
- 验签通过则证明邮件确实由该域名签名、且在传输过程中未被篡改。
根据 source/misc/email.rst 的说明,DKIM 同样存在于 DNS 中,其公钥查询方式为:查询<selector>._domainkey.example.com的 TXT 记录。签名头示例:
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=selector1; c=relaxed/relaxed; q=dns/txt; h=from:to:subject:date; bh=...; b=...d=为签名域名(Domain);s=为选择器(Selector),用于定位 DNS 中对应的公钥记录;a=为签名算法。
DMARC:统一 SPF 与 DKIM 的判定结果
DMARC(Domain-based Message Authentication, Reporting and Conformance)是电子邮件身份验证协议,用于解决「邮件栏中显示的域名(From 头地址域名)和验证的域名不一致」的问题。
判定规则:
- 要通过 DMARC 检查,邮件必须通过 SPF 或/和 DKIM 的身份验证;
- 且需要From 头地址中的域名必须与经过身份验证的域名一致(即通过对齐检查);
- 管理员在
_dmarc.<domain>的 TXT 记录中声明失败后的处理策略。
典型 DMARC 记录示例:
_dmarc.example.com. IN TXT "v=DMARC1; p=quarantine; pct=100; rua=mailto:dmarc-reports@example.com; ruf=mailto:dmarc-forensic@example.com"p=为策略:none(仅监控)、quarantine(隔离/进垃圾箱)、reject(直接拒绝);pct=为策略应用百分比(灰度上线时使用);rua=/ruf=为聚合报告与取证报告的接收地址;sp=可单独为子域名设置策略。
三者的协同关系
SPF、DKIM、DMARC 分工互补,缺一不可:
- SPF验证「发件服务器的 IP 是否被域名授权」——解决发送路径问题;
- DKIM验证「邮件内容是否被域名签名且未被篡改」——解决内容完整性问题;
- DMARC站在最上层,把 SPF/DKIM 的结果与 From 域名做对齐,并统一给出
none / quarantine / reject的处理策略与报告机制。
只有三者同时正确配置,收件方才能对「这封邮件是否真的来自它声称的域名」给出可靠结论。值得注意的是,这三套机制全部依赖 DNS 记录承载(SPF TXT、<selector>._domainkey.<domain>TXT、_dmarc.<domain>TXT),因此 DNS 的完整性与机密性直接决定邮件认证的有效性——仓库 source/network/domain/sec.rst 中介绍的 DoT、DoH 等 DNS 加密方案,正是保障这一底层链路的重要防御手段。
实战验证:用 DNS 查询审计邮件认证配置
邮件认证配置的审计本质上是 DNS 记录审计。以下命令可用于验证目标网域的 SPF / DKIM / DMARC 是否生效(以example.com为例,实际操作时替换为目标域名):
查询 SPF 记录:
dig TXT example.com | grep -i spf # 预期输出形如: # example.com. 3600 IN TXT "v=spf1 ip4:203.0.113.10 include:_spf.example.net -all"查询 DKIM 公钥(需已知选择器,此处以selector1为例):
dig TXT selector1._domainkey.example.com这与 source/misc/email.rst 中给出的<selector>._domainkey.example.com查询规则一致——选择器不同,记录名称随之变化,通常可以从已收到的邮件头DKIM-Signature的s=字段中获取。
查询 DMARC 策略:
dig TXT _dmarc.example.com # 预期输出形如: # _dmarc.example.com. 3600 IN TXT "v=DMARC1; p=quarantine; pct=100; rua=mailto:dmarc-reports@example.com"审计要点:
- SPF 记录是否以
-all或~all结尾(+all意味着完全放弃校验); - DKIM 公钥记录是否存在、选择器与邮件头是否匹配;
- DMARC 策略是否从
p=none逐步收敛到p=quarantine/p=reject; - 三者是否覆盖了发件网域的全部子域名。
此外,邮件服务的登录行为会留下系统日志。仓库 source/defense/emergency.rst 在 Linux 应急响应的「重点分析位置」中指出:/var/log/secure记录登入系统存取数据的文件,例如 pop3 / ssh / telnet / ftp 等都会被记录。因此在进行邮件服务器入侵或爆破事件的应急排查时,该日志是定位暴力破解来源的第一现场。
相关 RFC 参考
邮件传输协议与认证机制由一系列 IETF RFC 定义(邮件协议族 中收录):
- RFC 4408 / RFC 7208:SPF(Sender Policy Framework)Version 1
- RFC 6376:DKIM(DomainKeys Identified Mail)Signatures
- RFC 7489:DMARC(Domain-based Message Authentication, Reporting, and Conformance)
- RFC 8301:DKIM 的加密算法与密钥使用更新
- RFC 8463:DKIM 新的加密签名方法
- RFC 8616:国际化邮件的邮件认证
- RFC 8611:邮件
延伸阅读(仓库内相关文档)
- 邮件协议族:本篇的主干文档,邮件协议与防护策略概览;
- 邮件安全:SPF/DKIM/DMARC 概念速览与 DNS 查询要点;
- 端口信息:SMTP 25、POP3 110/995、IMAP 143/993 的端口攻击面汇总;
- 爆破工具:Hydra 针对 POP3/IMAP/SMTP 的口令爆破参数;
- SSRF:利用 gopher 等协议攻击内网邮件服务的思路;
- 社会工程学:钓鱼邮件构造与伪造发件人的攻防背景;
- 应急响应:
/var/log/secure中的 pop3 等登录日志排查; - 常见术语:SPF/DKIM/DMARC 的规范译名对照。
- 文档
- 网络安全
- 教程
【免费下载链接】Learn-Web-Hacking
Study Notes For Web Hacking / Web安全学习笔记
相关推荐
终极邮件安全指南:Haraka实现DKIM、SPF、DMARC三大防护体系
终极邮件安全指南:Haraka实现DKIM、SPF、DMARC三大防护体系 Haraka是一款基于Node.js的高性能、可扩展事件驱动SMTP服务器,专为现代
后端网络/通信curl邮件协议实战:SMTP、POP3、IMAP的完整操作指南
curl邮件协议实战:SMTP、POP3、IMAP的完整操作指南 概述 在现代网络应用中,邮件协议是数据传输的重要组成部分。curl作为强大的命令行工具和库,提
CLI网络通信docker-mailserver 邮件域认证配置实战:DKIM、DMARC 与 SPF 完整指南
docker mailserver 邮件域认证配置实战:DKIM、DMARC 与 SPF 完整指南 DKIM、DMARC、SPF 是防止邮件伪造(spoofin
后端通信云原生
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考