what-an-email-reveals

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

What an email reveals

电子邮件能揭示的信息

An email address is usually the highest-value selector in an investigation: it carries a name, a domain, an account history, and a breach footprint. The beginner error is trying to prove the address exists. Existence is the least interesting thing about it, it is the hardest thing to establish passively, and the techniques that establish it are the ones that expose you. Work the structure and the footprint first; treat validation as a bonus.
Never send mail to the subject as a research technique.
在调查中,电子邮件地址通常是价值最高的检索项:它包含姓名、域名、账户历史记录和数据泄露痕迹。新手常犯的错误是试图证明地址是否存在。实际上,“存在性”是最无足轻重的信息,也是最难被动验证的,而且验证存在性的技术手段会暴露你的身份。应优先分析地址结构和痕迹,把验证存在性当作额外收获。
切勿将向目标发送邮件作为研究手段。

Step 1 — Authorized scope

步骤1 — 授权范围

Read ../../ETHICS.md. Write down subject, objective, in-bounds selectors, out-of-bounds actions, and the governing jurisdiction. Decide in advance whether interactive probing — SMTP conversations, password-reset flows, signup-form enumeration — is authorized. It usually is not. Everything below is passive unless marked otherwise.
Done when scope is written and the interactive-probing decision is recorded.
阅读../../ETHICS.md。写下调查对象、目标、允许检索的内容、禁止执行的操作,以及适用的管辖规则。提前确定是否允许交互式探测——包括SMTP会话、密码重置流程、注册表单枚举——通常是不允许的。除非特别标注,以下所有操作均为被动操作。
完成标志:已记录调查范围,且明确是否允许交互式探测。

Step 2 — Parse and validate

步骤2 — 解析与验证

Three different things get called "email validation". They are not interchangeable.
MethodWhat it provesCost
SyntacticThe string could be an addressFree, passive, proves nothing about the mailbox
Domain / MXThe domain exists and accepts mailFree, passive,
dig MX example.com
SMTP
RCPT TO
probe
The server claims the mailbox existsInteractive, often blocked or lied to, and logged
Do the first two. The third — opening an SMTP session and issuing
RCPT TO
to see whether the server accepts the recipient — is a live conversation with the subject's mail infrastructure from your IP. It gets logged, it gets your address range blocklisted, and against a catch-all domain it is worthless: a catch-all accepts every recipient, so every address "exists". Greylisting, tarpitting, and accept-then-bounce policies produce the same useless answer. Third-party validation APIs mostly wrap the same probe; the exposure moves to the vendor, the accuracy limits do not change.
Then parse the local part.
first.last
,
flast
,
firstl
,
f.last
each imply a name and, on a corporate domain, a company-wide convention — see reference/corporate-formats.md.
Gmail normalisation matters. Gmail ignores dots in the local part and everything after a
+
.
j.doe+news@gmail.com
,
jdoe@gmail.com
and
jd.oe@gmail.com
are one mailbox. Consequences: addresses that look different in two breaches may be the same person, and a
+tag
frequently names the service the address was given to, which is free intelligence about where the subject holds accounts. Not every provider behaves this way — check before assuming.
Done when the address is graded valid / invalid / unknown, the normalised form is recorded, and the name hypothesis is written down.
有三种不同的“邮件验证”方式,它们不能互相替代。
方法验证内容成本/风险
语法验证字符串格式符合邮箱地址规范免费、被动,无法证明邮箱是否真实存在
域名/MX验证域名存在且可接收邮件免费、被动,可通过
dig MX example.com
执行
SMTP
RCPT TO
探测
邮件服务器声称该邮箱存在交互式操作,常被拦截或返回虚假结果,且会被记录日志
仅执行前两种验证。第三种——建立SMTP会话并发送
RCPT TO
指令以确认服务器是否接收该收件人——是从你的IP与目标邮件基础设施进行实时交互,会被记录日志,可能导致你的IP段被列入黑名单,而且对于全域收件域名完全无效:这类域名会接收所有收件地址,因此所有地址都会“存在”。灰名单、延迟响应策略以及“先接收后退回”的规则也会产生无效结果。第三方验证API大多基于同样的探测逻辑,只是将暴露风险转移给供应商,但准确性并无提升。
接着解析本地部分。
first.last
flast
firstl
f.last
等格式都隐含着姓名信息,对于企业域名而言,还能体现全公司统一的命名规则——详见reference/corporate-formats.md
Gmail标准化规则很重要。Gmail会忽略本地部分中的点号,以及
+
之后的所有内容。
j.doe+news@gmail.com
jdoe@gmail.com
jd.oe@gmail.com
对应同一个邮箱。这意味着:在两次数据泄露中看似不同的地址可能属于同一个人;
+tag
通常会标注该地址注册的服务,这能免费获取目标的账户分布信息。并非所有服务商都遵循此规则——请勿随意假设。
完成标志:已判定地址有效/无效/未知,记录标准化格式,并写下姓名假设。

Step 3 — Gravatar

步骤3 — Gravatar查询

Gravatar maps an address to a public avatar by MD5 hash of the lowercased, trimmed address. Compute the hash and request the avatar; a returned image means the address was registered with the service, and the associated public profile can carry a display name, a location, links to other accounts, and verified accounts on other platforms.
bash
printf '%s' "jdoe@example.com" | tr 'A-Z' 'a-z' | md5sum
Free, passive, no key. Run the avatar through
find-the-original-image
. Treat a default fallback image as "no Gravatar", not as "address invalid".
Done when Gravatar presence is checked and any profile fields captured.
Gravatar通过邮箱地址的小写、去空格后的MD5哈希值,将地址映射到公开头像。计算哈希值并请求头像;若返回图片,则说明该地址已在该服务注册,关联的公开资料可能包含显示名、位置、其他账户链接以及其他平台的已验证账户信息。
bash
printf '%s' "jdoe@example.com" | tr 'A-Z' 'a-z' | md5sum
免费、被动,无需密钥。可通过
find-the-original-image
工具分析头像。默认占位图应视为“无Gravatar记录”,而非“地址无效”。
完成标志:已检查Gravatar记录,并捕获所有可用的资料字段。

Step 4 — Where is this address registered

步骤4 — 该地址注册了哪些服务

The honest position: reliable account enumeration by email is an oracle problem. Password-reset and signup forms disclose whether an address is registered, which is exactly why tools exist to automate them — and exactly why doing so is interactive, often against terms of service, and potentially notifying (a reset request can email the subject). Flag it, get it authorized explicitly, or don't do it.
Passive alternatives that cost you nothing:
  • google-like-a-spy
    the full address in quotes, and the local part alone. Resumes, conference programmes, mailing-list archives,
    WHOIS
    history, and committed config files are full of addresses.
  • Run
    what-leaked-about-you
    . Breach membership is the single best answer to "which services did this identity use", and it is retrospective rather than interactive.
  • Push the local part into
    hunt-a-handle
    as a username seed.
  • Search code hosting for the address in commit metadata via
    secrets-in-git-history
    .
Done when the service list is assembled and each entry is marked passive or interactive in provenance.
客观事实:通过邮箱可靠枚举账户是一个“预言机”难题。密码重置和注册表单会泄露地址是否已注册,这正是相关自动化工具存在的原因——但此类操作属于交互式操作,通常违反服务条款,还可能通知目标(重置请求会发送邮件给目标)。需标记此类操作、获得明确授权,或直接放弃。
无需成本的被动替代方案:
  • google-like-a-spy
    工具搜索带引号的完整地址,以及单独搜索本地部分。简历、会议议程、邮件列表存档、
    WHOIS
    历史记录和已提交的配置文件中都包含大量邮箱地址。
  • 运行
    what-leaked-about-you
    工具。数据泄露记录是回答“该身份使用过哪些服务”的最佳方式,且属于回溯性操作,而非交互式操作。
  • 将本地部分作为用户名种子输入
    hunt-a-handle
    工具。
  • 通过
    secrets-in-git-history
    工具在代码托管平台的提交元数据中搜索该地址。
完成标志:已整理服务列表,并标记每个条目的来源是被动还是交互式操作。

Step 5 — Read the headers, if you have the message

步骤5 — 若持有邮件,分析邮件头

Only applies when you legitimately possess the message. Headers are where an email stops being a selector and becomes evidence.
Read the
Received:
chain bottom-up: the bottom-most is the earliest hop, and the originating host is there unless the sending platform strips it. Everything below the first server you trust can be forged wholesale.
  • Message-ID
    — the domain part and the ID's shape often identify the sending platform or mail client even when the visible headers are cosmetic.
  • Authentication-Results
    — the receiving server's SPF, DKIM, and DMARC verdicts. A DKIM
    pass
    is the strongest thing in the header block: it is a cryptographic signature over content, so it survives forwarding claims.
  • X-Mailer
    /
    User-Agent
    — client fingerprint, frequently left in place by bulk-mail tooling.
  • Return-Path
    vs
    From
    — a mismatch is normal for mailing lists and suspicious in direct correspondence.
Field-by-field guide: reference/header-fields.md.
Done when the originating infrastructure is identified or explicitly stated as unrecoverable.
仅适用于合法持有邮件的情况。邮件头能让邮箱地址从检索项变为证据。
从下往上阅读
Received:
链:最底部的条目是最早的跳转记录,原始发送主机通常在此处,除非发送平台已将其删除。你信任的第一个服务器以下的所有内容都可能被伪造。
  • Message-ID
    — 域名部分和ID格式通常能识别发送平台或邮件客户端,即使可见的邮件头经过美化。
  • Authentication-Results
    — 接收服务器的SPF、DKIM和DMARC验证结果。DKIM验证
    pass
    是邮件头中最可靠的信息:它是对内容的加密签名,转发后依然有效。
  • X-Mailer
    /
    User-Agent
    — 客户端指纹,批量邮件工具通常会保留该信息。
  • Return-Path
    From
    — 对于邮件列表而言,两者不匹配是正常的;但对于直接通信而言,不匹配则值得怀疑。
逐字段指南:reference/header-fields.md
完成标志:已识别原始发送基础设施,或明确说明无法恢复相关信息。

Where this goes wrong

常见误区

  • Catch-all domains defeat verification outright. Everything validates. Detect one by testing an address you invented; if a random string validates, every result from that domain is meaningless.
  • Disposable and forwarding services. Throwaway domains mean the address was never meant to persist; relay and alias services (including provider-issued private-relay addresses) mean the visible address is a wrapper around a mailbox you cannot see. Both cap how far the address can take you — recognise them early rather than burning hours.
  • Role addresses (
    info@
    ,
    sales@
    ,
    admin@
    ) belong to functions, not people. Attributing one to an individual is the most common serious error in email OSINT, and it survives into reports because it looks like a finding.
  • Inferred addresses are hypotheses. Deriving
    j.doe@company.com
    from a company pattern gives a plausible address, not a real one. Label it inferred, permanently.
  • Breach data is not proof of current ownership. Addresses get abandoned, recycled by providers, and reassigned to new staff at the same company.
  • Forwarding is indistinguishable from forgery at a glance. Mailing lists and security gateways rewrite headers in ways that look like tampering.
  • 全域收件域名会直接导致验证失效。所有地址都会显示有效。可通过测试一个你虚构的地址来检测:若随机字符串验证通过,则该域名的所有结果均无意义。
  • 一次性邮箱与转发服务。一次性域名意味着该地址从未打算长期使用;中继和别名服务(包括服务商提供的私人中继地址)意味着可见地址只是真实邮箱的包装。这两类情况都会限制地址的调查价值——应尽早识别,避免浪费时间。
  • 角色地址
    info@
    sales@
    admin@
    )属于职能部门,而非个人。将其归属于某个个人是电子邮件OSINT中最常见的严重错误,且错误结论会因看似合理而出现在报告中。
  • 推断出的地址只是假设。根据公司命名规则推导
    j.doe@company.com
    只能得到一个看似合理的地址,而非真实存在的地址。需永久标记为“推断地址”。
  • 数据泄露记录不能证明当前所有权。地址可能被弃用、被服务商回收,或重新分配给同一家公司的新员工。
  • 转发与伪造难以区分。邮件列表和安全网关会重写邮件头,其效果与篡改相似。

Confidence grading

可信度分级

  • Confirmed — a DKIM-passing message from the address, or the address published by the subject on a source they control, or an authenticated Gravatar profile matching a separately confirmed identity.
  • Probable — MX-valid, appears in a breach alongside a corroborating selector, and the local part matches the subject's name pattern.
  • Unconfirmed — inferred from a corporate format, or found in a single aggregator or combolist with no second source.
  • Rejected — proven catch-all with no supporting evidence, a known disposable domain with no linked activity, or a role address attributed to an individual on no basis but the domain.
  • 已确认 — 来自该地址且DKIM验证通过的邮件,或目标在其可控来源上发布的地址,或与已单独确认身份匹配的已验证Gravatar资料。
  • 大概率可信 — MX验证通过,在数据泄露记录中与其他佐证检索项一同出现,且本地部分符合目标的姓名格式。
  • 未确认 — 根据企业格式推断得出,或仅在单个聚合器或组合列表中找到,无其他来源佐证。
  • 已排除 — 已证实为全域收件域名且无其他佐证,已知为一次性域名且无关联活动,或无依据地将角色地址归属于个人。

Worked example

实操示例

Given
j.okonkwo@northwind-eng.example
.
dig MX
returns records at a hosted provider — the domain takes mail. Gravatar: no avatar, so no profile pivot.
Two employee addresses in a conference PDF are
t.mwangi@
and
s.aldridge@
, so the convention is
first-initial.lastname
. That makes
j.okonkwo@
structurally consistent — evidence about the format, not evidence the person exists. No SMTP probe is run; interactive steps are out of scope here.
The dead end:
what-leaked-about-you
returns nothing for the address, which initially reads as "not a real user". Re-running against the Gmail-normalised personal address recovered from a code-hosting commit gives three breaches, one of them a developer forum with the handle
sunfish_ada
. That handle goes to
hunt-a-handle
. The corporate address stays graded inferred; the personal one is the working selector.
给定地址
j.okonkwo@northwind-eng.example
dig MX
返回托管服务商的记录——该域名可接收邮件。Gravatar:无头像,无法通过资料跳转。
会议PDF中的两个员工地址为
t.mwangi@
s.aldridge@
,因此命名规则为
名首字母.姓氏
。这说明
j.okonkwo@
在结构上符合规则——这是关于格式的证据,而非该人存在的证据。未执行SMTP探测;交互式操作超出本次调查范围。
僵局:
what-leaked-about-you
工具对该地址无返回结果,最初会被解读为“非真实用户”。针对从代码托管提交记录中恢复的Gmail标准化个人地址重新运行工具,得到三次数据泄露记录,其中一次来自开发者论坛,对应用户名
sunfish_ada
。将该用户名输入
hunt-a-handle
工具。企业地址仍标记为“推断地址”;个人地址作为主要检索项。

Pivots

跳转检索项

New selectorSkill
Name from local part or Gravatar
find-anyone
Local part as username
hunt-a-handle
Email domain
who-owns-this-domain
,
recon-a-domain-passively
Employer from a corporate domain
x-ray-a-company
Breach appearances
what-leaked-about-you
Address in commits or config
secrets-in-git-history
Originating IP from headers
find-exposed-servers
Gravatar or profile avatar
find-the-original-image
Address posted in dumps or channels
find-leaks-in-the-wild
新检索项技能工具
从本地部分或Gravatar获取的姓名
find-anyone
本地部分作为用户名
hunt-a-handle
邮箱域名
who-owns-this-domain
,
recon-a-domain-passively
从企业域名获取的雇主信息
x-ray-a-company
数据泄露记录
what-leaked-about-you
提交记录或配置中的地址
secrets-in-git-history
邮件头中的原始IP
find-exposed-servers
Gravatar或资料头像
find-the-original-image
转储或渠道中发布的地址
find-leaks-in-the-wild

Legal and ToS notes

法律与服务条款说明

SMTP probing and password-reset enumeration are interactive, commonly prohibited by terms of service, and in some jurisdictions arguably unauthorized interrogation of a system. Get them in writing before you use them. Under GDPR and UK data protection law an email address is personal data on its own — collect only what the objective needs, store it encrypted, and set a deletion date with the case file. Message content you possess may carry separate confidentiality or privilege obligations independent of the OSINT question.
SMTP探测和密码重置枚举属于交互式操作,通常违反服务条款,在某些司法管辖区可能被视为未经授权的系统探测。使用前需获得书面授权。根据GDPR和英国数据保护法,电子邮件地址本身属于个人数据——仅收集目标所需的信息,加密存储,并随案件文件设置删除日期。你持有的邮件内容可能带有独立于OSINT问题的保密或特权义务。

Step 6 — Report

步骤6 — 撰写报告

Run
write-the-intel-brief
. State validity and how it was established, whether the domain is catch-all, the service list with passive/interactive provenance, breach exposure, and the identity attribution with its confidence grade.
Done when every address is marked observed or inferred, and no inferred address is stated as fact.
运行
write-the-intel-brief
工具。说明地址有效性及验证方式、域名是否为全域收件域名、带有被动/交互式来源标记的服务列表、数据泄露情况,以及带有可信度分级的身份归属信息。
完成标志:所有地址均标记为“已观测”或“推断”,且无推断地址被表述为事实。