分解 SMTP 标准

Breaking down the SMTP Standard

wikipedia page on SMTP 给出了爱丽丝和鲍勃之间交流的一个很好的例子。

以此为例,我很好奇 SMTP 工作原理的一些细节

  1. 看起来 SMTP 不是文件标准,而是描述数据如何从发件人传输到收件人的标准。兼容 SMTP 的客户端都可以理解相同的 "language"(即命令)以在它们之间传输数据。这样理解对吗?

  2. DATA命令描述发送的数据。当我收到一封邮件时(例如,在 GMail 中),我可以查看原始格式的原始电子邮件,它通常看起来就是这样。那是一个标准吗?或者只是一种普遍接受的格式化数据的方式,以便客户端可以解析它们?我想即使像日期格式这样简单的事情也会变得混乱。

  3. DATA 部分指定发件人和收件人。为什么在前面的两个命令MAIL FROM:RCPT TO:中刚刚通过SMTP发送的信息需要再次指定?

谢谢!

  1. 是的,这是正确的理解。
  2. 是的,有一个标准。查看 rfc5322.
  3. 原始消息文本中的 FromToCc headers 不必与 MAIL FROMMAIL FROM 中指定的地址匹配RCPT TO 命令。消息 headers 还包含比传递给 MAIL FROMRCPT TO 的信息更多的信息,例如收件人姓名。

有关 SMTP 协议的更多信息,您可以阅读 rfc5321