安全指南

冒充自己域名的邮件:如何与被入侵区分,以及如何用 SPF・DKIM・DMARC 防止

收到自称来自自己域名的可疑邮件,多数不是服务器被入侵,而是发件人(From)被伪造。本文说明如何通过邮件头区分入侵与冒充,以及如何分阶段引入 SPF、DKIM、DMARC 止住冒充。

发布于 2026-06-23 更新于 2026-10-05 3 分钟阅读
本页目录

某天,一封自称来自自己公司域名的可疑邮件,发到了自己邮箱——首先请放心,没事。这多数情况下不是『被入侵』,而是『发件人被冒充』。本文从防御视角讲解如何分辨,以及如何止住(不涉及攻击的构造方法)。

先安心:冒充 ≠ 被入侵

这是最重要的误解点。邮件信封上的『发件人』,发送方可以任意填写。所以仅仅收到一封随手写着你域名的邮件,并不意味着家被人闯入了——这就是基本格局。

外部的发信源(攻击者的中继服务器)— 把 From 冒充成你署名
↓
你的接收服务器(MX) 收下它(没有拒绝依据就会受理)
↓ 若设有转发
到达最终收件箱(Gmail 等)— 看起来像『真的收到了』
冒充邮件从『外部的发信源』发出,经过你的接收服务器(MX),若设有转发则到达最终收件箱。发信源并不是你的设备。

不过作为例外,邮件账户真的被入侵的情况也并非为零。而要区分这一点,读邮件头就能看出来。

用邮件头分辨是『入侵』还是『冒充』

邮件在正文背后附带着一份叫『邮件头』的投递记录(Gmail 里可用『显示原始邮件』来读)。要看的要害有这 5 处。

邮件头看哪里这样读
Authentication-Resultsspf= / dkim= / dmarc= 的结果若 dmarc=fail,就是『正规认证没通过=很可能是冒充』
Received(会接连出现多条)最底下=最初的发信源若是从你自己签约的服务器以外发出,就是『来自外部的冒充』
Return-Path(信封上的发件人)是否与可见的 From 一致不一致=冒充的信号
Reply-To(回复地址)回复会飞到哪里From 看着像公司内部,回复地址却是无关的外部 → 为了让你回复给发件人
X-Mailer(发送软件名)是不是正经名字莫名其妙的随机字符串=自动垃圾邮件工具的典型特征

尤其容易被忽略的是 Reply-To。From 哪怕长得和公司同事一模一样,一回复却会发到完全不同的外部地址——对方会诱导你把机密或联系方式(聊天的二维码等)回复过去,借此劫持联络渠道。不要只凭 From 的外观就信任,这是人这一侧最大的防御(→ 什么是钓鱼)。

为什么它能进到收件箱

冒充邮件连垃圾邮件都不算就进来了,是因为接收方没有『拒绝假货的依据』。

1

没有 DMARC 的方针

如果你的域名没有设置 DMARC 策略,接收方即便检测到 From 被冒充也无法强制拒绝。这是它能进到收件箱的最大主因。

2

SPF 设置为不拒绝(~all)

若 SPF 末尾是 ~all(软失败=『可疑但不拒绝』),接收方就缺少拒绝它的明确依据。

3

转发会破坏 SPF

把收到的邮件转发到别的地址时,SPF 会以转发源服务器为基准看起来是『pass』,但 From 仍是别的域名。对这种不一致做出最终判定的,正是 DMARC。

这里起作用的是 DKIM。SPF 会被转发破坏,但 DKIM 签名在转发后仍然有效。提升到拒绝(reject)后,防止正规邮件被误拒的正是 DKIM,这就是要先配置 DKIM 的理由。

修复办法:SPF → DKIM → DMARC 分阶段

机制的细节交给 什么是 SPF / DKIM / DMARC,这里只讲安全的顺序。最重要的一点是:不要一上来就拒绝。

1

把 SPF 只配一条且配对

把用于发送的正规服务器(自家・邮件投递服务等)无一遗漏地许可。SPF 要在一个域名上汇总成一条,并确保评估时的 DNS 查找不超过 10 次(超了整条 SPF 都会失效)。
2

启用 DKIM 签名(最先做)

在使用中的邮件基础设施上启用 DKIM。转发后仍然有效的签名,能在日后改成拒绝时防止正规邮件被拒绝。
3

DMARC 从 p=none(仅监控)开始

不要一上来就拒绝。先用 p=none +接收报告,观察 1~2 周,看正规邮件会不会被拒绝。
4

分阶段提升到 reject

用报告把正规投递的遗漏都堵掉后,再 p=quarantine → p=reject。最终达成『冒充在接收方就被拒绝』,这时这种邮件才会在到达对方收件箱之前就被拒绝。

缺少的设置因域名而异

逐个检查多个域名,会发现缺少的设置往往恰好相反。原因在于发送的机制不同,服务自动帮你配置的范围也就不同。

邮件投递服务型

  • 例:交易邮件从外部的投递服务发出的架构
  • DKIM / DMARC 在初始设置里就自动容易配上
  • 而唯独 SPF 需要自己在 DNS 里追加 → 那一处容易漏

主机托管标准型

  • 例:从租用服务器直接发送的架构
  • SPF 大多一开始就有
  • 而DKIM 要手动打开、DMARC 要自己发布 → 这两个容易漏

两者在『三个没配齐』这点上是一样的,只是缺少的部分正好相反。先搞清楚自己域名属于哪一种模式,这是第一步。

本站的视角:只设置还不够,检查过才会生效

本站认为,邮件认证并非『设置完就完事』,而是检查过才会生效。自己的域名可以用 SPF / DKIM / DMARC 检测器 或 网站综合安全诊断 一次确认现状。

单单一个设置值也需要注意。比如没有配置失败报告的发送地址(ruf),却加了 fo,这样做没有任何效果,按规范它只会被忽略。这种经审查才发现的『无害但无意义的设置』并不少见。

最重要的是两点:让接收方拒绝冒充邮件(DMARC),以及人不去回复伪造的邮件。在检测和设置之前,先放上用机制来阻止的设计。

接着读

FAQ

Q收到自称来自自己域名的邮件=服务器被入侵了,是这个意思吗?
A

多数情况下不是。邮件的发送方式(SMTP),其机制就是允许发件人任意填写发件人(From)栏。这就和在信封背面随手写上别人的住址一样,哪怕完全没碰过你的服务器,也能发出『以你域名署名』的邮件。所以收到≠被入侵。到底是真被入侵了,还是单纯的冒充,读一读邮件头就能分辨。

Q为什么冒充邮件连垃圾邮件都不算,能直接进到收件箱?
A

因为接收方(Gmail 等)没有『拒绝假货的依据』。如果你的域名没有设置 DMARC 方针,接收方即便检测到 From 被冒充,也无法强制拒绝。再加上一旦牵涉转发,判定结果就更不可靠。对策是把 SPF、DKIM、DMARC 都配齐,并把 DMARC 分阶段提升到 p=reject(拒绝)。

Q该从哪里下手?
A

先检查自己域名的现状(用 SPF/DKIM/DMARC 检测器可以一次确认全部)。在此基础上,不要一上来就拒绝,DMARC 从 p=none(仅监控)开始,先用报告确认正规邮件不会被拒绝,再分阶段提升到 p=quarantine→p=reject。提升到 reject 后,让正规邮件在转发后仍能通过的是 DKIM 签名,所以要先启用 DKIM。