为什么电子邮件标头包含私有 IP 地址?

Whi*_*bit 7 email

有些电子邮件的标题类似于“已收到:来自 [172.16.1.2] (some.public.ip.address)”,这是为什么?为什么 NAT 后面某人的​​发件人客户端会泄露私有地址?

EEA*_*EAA 12

因为这就是 SMTP 的设计方式,以及发送电子邮件系统的配置方式。

有多种方法可以抑制此信息,但需要明确配置发送邮件系统来执行此操作。

  • 至于“为什么?”,我认为在 1982 年起草了 SMTP 协议上的 RFC 821 时,1994 年的 RFC 1597 上 IANA 保留的私有地址空间(例如 172.16...)并没有被广泛预期。也不是人性本恶,如果你意识到当时的好老SMTP不支持任何身份验证,而这里大惊小怪的IP纯粹是客户端声明的,没有经过任何认真的验证。 (11认同)
  • 它*确实*解释了原因。我不确定你在期待什么。我们不知道为什么某个组织按照它的配置方式配置了他们的邮件系统。 (2认同)

USD*_*att 7

Received: from [172.16.1.2] (some.public.ip.address)"

正如您在评论中提到的,这个特定位置的私有 IP 是因为它是作为HELO命令中的客户端主机名发送的。

对于正确的邮件服务器,该HELO命令应包括其完全限定的主机名,该主机名也应与 DNS 匹配。对于入站电子邮件,许多服务器实际上会验证 HELO 主机名以确保其有效且 DNS 匹配。对于发送电子邮件,只要您经过身份验证,服务器通常会接受任何内容(您不能指望最终用户都在他们的机器上配置了真实有效的主机名)。

对于像 Outlook 这样的 SMTP 客户端,它们可以发送您的机器名称,但这不是完全限定的,并且可能不理想,具体取决于机器的名称。例如,您经常会看到如下标题:

Received: from DESKTOP9U6J0BC (unknown)
Run Code Online (Sandbox Code Playgroud)

使用 IP 地址可能会提供更多的隐私,因为有些人可能会争辩说172.1.2.3在标头中看到比MIKES-MACBOOK或更好CEO-WORKSTATION

归根结底,客户端只需要在 HELO 命令中提供一些合理的东西,一些客户端选择 IP 地址。

这与其他答案所讨论的略有不同,其他答案与使用私人地址在组织内部传输电子邮件的实际 SMTP 服务器有关。