【问题标题】:Does order in email headers indicate which MTA inserted each?电子邮件标题中的顺序是否指示每个插入的 MTA?
【发布时间】:2020-12-03 14:30:00
【问题描述】:

我正在尝试分析邮件标头以找出每个元素(MUA、MTA...)创建的。我的猜测是:

  • 发送方 MUA 组成正文(包括 Content-Type、Mime、Content-Transfer-Encoding),并通过 SMTP 发送到发送方边界 MTA。 MUA 提供由此 MTA 插入的初始标头(From、To、Reply-To、)的信息
  • 此 MTA 插入 MessageID 和 Return_Path(以及它所需的所有额外标头和 X-标头)
  • 然后它开始“希望”。在每一跳上,接收 MTA 插入“已接收:”标头和它认为的每个其他标头

如果保持顺序并且每个 MTA 在邮件的顶部插入其标头,应该很容易确定哪个 MTA 插入了每个标头...但我找不到有效的方案

  • DKIM-Signature、Authentication-Results、Received-SPF...等字段出现在不同的位置。哪个 MTA 创建了每个?谁对电子邮件进行 DKIM 签名(我想它必须是发件人边界 MTA)谁对 SPF-DKIM-DMARC 进行身份验证?
  • 添加了很多 X-Headers,其中很多与垃圾邮件控制有关,我找不到每个创建的 MTA(on with hop)

你能帮帮我吗?

【问题讨论】:

    标签: smtp email-headers


    【解决方案1】:

    MUA(邮件用户代理,邮件客户端的 RFC 术语)将添加您可以在电子邮件客户端中看到的大多数标头,特别是 From:To:。 (您有时可以在To: 标头中看到这一点,当某人在他们的通讯录中给某人起了“有趣”的昵称时。或者当“发件人:”和来自(如在MAIL FROM: 命令中)的 SMTP 信封不同意时,即使可能服务器将拒绝此类消息,因为它通常是垃圾邮件指示符。) MUA 也会设置 Reply-To: 标头,尤其是当 MUA 确实是一个客户管理系统时。 MTA(邮件传输代理,实际的 SMTP 服务器)可能包含退回信息 (VERP)。

    然后 MUA 将消息提交给 MTA。每个接触电子邮件的程序(邮件服务器、防火墙等)都可以添加标题。例如,MTA 通常会进行 DKIM 签名(并添加相关的标头)。它must 前置Received: 标头(即,将其放在顶部)并且它不得与其他Received: 标头混淆。仍然有一些程序(如防火墙)可能会混淆标头。

    您可以看到多个 DKIM 签名(请参阅 DKIM selectors),例如,当电子邮件在邮寄列表的上下文中重新发送时。您可以看到从原始发件人到列表的 DKIM 签名,然后当邮件列表服务器将其发送给最终收件人时,会看到更多标头,包括额外的 DKIM 标头。

    至于X-... 标头:这些是非标准标头(因此有X- 前缀)。一切都在这里了。一些发送 MTA 将它们插入用于跟踪目的(例如,在其客户中捕获垃圾邮件发送者),一些邮件接收者将他们的垃圾邮件评估放在一个特殊的 x-header 中。甚至 MUA 也可能会在电子邮件中放置一些 x-headers,例如,Claws Mail 会为邮件来自的帐户、下载时间等放置一个标头。您可能信任也可能不信任这些,事实上,MUA 可能具有指示它们应该信任哪些 x-header 的设置。

    就此而言,即使是身份验证结果标头等也可能出现在沿途的任何地方。甚至最初的发件人也可以像某些防病毒程序那样添加一个,以表明他们扫描了外发邮件。同样,由接收者决定是否信任这些标头。显然,您希望离您最近的邮件服务器进行 DKIM 检查以及与身份验证相关的任何事情,因为您可以相信该服务器的判断。

    那么,订单是否表明哪个邮件程序插入了标题?是的,但是...邮件服务器可能符合也可能不符合 RFC 的所有部分,并且许多邮件服务器遵循Postel's law 并且在他们接受的内容上有些宽容。

    【讨论】:

      猜你喜欢
      • 2010-10-24
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 2011-04-08
      • 2012-03-24
      相关资源
      最近更新 更多