在“信封”和“标题”中重复电子邮件地址有什么意义?

在“信封”和“标题”中重复电子邮件地址有什么意义?

我了解到,发件人地址和收件人地址都在称为“信封”的隐藏元素中重复,然后在“正文”中再次重复。

问题

  1. 为什么信封数据没有复制到“标题”中?
  2. 为什么存在这种重复,为什么不能将必要的特征嵌入到消息本身中?
  3. 所有(非 SMTP)消息传输都这样做吗?
  4. 有哪些 SMTP 的替代方案?(这样我就能更好地理解其中的原因)

答案1

电子邮件消息头中的地址与信封发件人和收件人的用途不同(实际上并非隐藏本身,它们只是不是消息的一部分)。

信封发件人和收件人(您在邮件中看不到)是 SMTP 协议的一部分,用于指定交货指示,即邮件服务器应将邮件投递到哪个邮箱,或者在发生故障时将邮件返回到哪里。这两个地址都不需要与邮件的语义内容有任何关系。这些内容在RFC 5321第 4.1.1.2 和 4.1.1.3 节。

从逻辑上讲,这些类似于印刷在邮件信封上的地址。

消息本身中出现的发送者和目标地址表示语义含义,而不是明确的传递指令。这些内容在RFC 5322第 3.6.3 节和RFC 6854第 2.1 节(取代了 RFC 5322 第 3.6.2 节)。

简而言之,邮件中的 From: 表示撰写邮件的人的邮箱,Sender: 表示代表其他人发送邮件的实体,To: 和 Cc: 表示预期收件人的邮箱。RFC 还定义了您可能感兴趣的其他标头字段。

从逻辑上讲,这些类似于邮件内信件上印刷的地址。

通常,信封的发件人和收件人与发件人地址和收件人地址相同。但他们之间完全没有对应关系的情况也很常见,例如在邮件列表中。

答案2

最常见的看到差异的情况是在向多个收件人发送电子邮件时。

假设您要发送一封电子邮件至:

当您的邮件客户端将电子邮件发送到您的邮件服务器时,所有三个地址将在信封和标题上重复。接下来,您的邮件服务器将查找 MX 记录并example.com继续example.net投递。

您的邮件服务器现在将与每个接收服务器建立两个单独的 SMTP 连接,以进一步发送电子邮件。

与 MX 通信时,example.com所有三个接收器仍将在To标头中,但只有一个信封接收器。

与 MX 通信时,example.net所有三个接收器仍将在To报头中,但只有两个信封接收器。

与上述情况类似,想象一下你打印了一封信的三份副本,纸上写有三个收件人。然后你将这三张纸放入三个不同的信封中,每个信封上只写一个地址。


在其他情况下也会有所不同,例如使用bcc和转发电子邮件时。

打个比方,假设你正在与某个实体交换信件。你对那个实体不知情,复印了每封信,然后将其放在一个写有你律师地址的信封里。

相关内容