MIME 在网络堆栈中的位置

Position of MIME in the Networking stack

根据我在互联网上找到的内容,MIME (Multipurpose Internet Mail Extensions, now Internet Media Type (?)) 是一种描述文件类型 (a header 被多个协议使用 )。

所以,MIME 本身不是一个协议,而是其他协议使用的扩展,对吗?

这意味着该扩展由应用程序在应用程序层使用,除了携带 MIME header。

因此,如果我发送带有 mp3 附件的邮件,SMTP/other 应用层协议会识别这是一个 mp3 附件,或者它是 应用程序的唯一职责 识别文件?从这个意义上说,MIME 不能称为 SMTP 的扩展,而是应用程序使用的功能。

如果SMTP 无法识别这是另一种文件,它如何正确将其存储在邮件服务器? (例如,一个 MPEG 视频文件需要特定的格式来存储,邮件服务器将如何存储它而不给予任何特殊处理?)

抱歉,如果我的问题听起来有点含糊,但我想了解不同的协议(尤其是 SMTP)如何使用 MIME。

感谢您的帮助。

SMTP 协议本身对 MIME 格式一无所知,但 SMTP 服务器本身必须至少实现基本的 rfc0822 支持才能显示 Received headers,但是,它不需要实现MIME.

服务器如何将文件保存到磁盘?它通过 TCP/IP 流从客户端接收它的方式相同。它只是保存发送的原始字节(加上我提到的 Received header)。

换句话说,你就是这样over-thinking。 SMTP 服务器不必了解有关 mp3 文件附件或其他任何信息,因为 MIME 格式(它不是协议)只是一种序列化消息中 mp3 数据的方式。

RFC 822 电子邮件最初是纯文本的 7 位 US-ASCII。 MIME 指定了一种在电子邮件容器中封装其他媒体类型的工具。它没有指定对 SMTP 的任何更改(尽管 8BITMIME ESMTP 扩展对于简化 MIME 消息的传输很有用)。因此,它是现有协议的扩展,而不是一个独立的协议。其他协议(尤其是 HTTP)已合并(部分)MIME 以标记内容类型和编码这一事实也证明了这一点。

Internet 媒体类型只是 MIME 用于编码的一个方面;指定字符集和编码的机制仍然在 MIME 中定义。

传统上,邮件服务器只是将裸露的 RFC822 消息存储在其消息存储中;邮件客户端负责解析并可能操纵正文中的任何 MIME 结构以进行显示和交互。 (RFC 822 已被 2282 和 5322 取代这一事实并没有从根本上改变实际的邮件消息格式。)

有些服务器偏离了这个模型;例如,Microsoft Exchange 似乎会解析所有传入的消息,以便将它们塞进其内部格式,这在某种程度上损害了它与标准工具的互操作性,也损害了我们中那些需要可靠、适当地访问我们实际电子邮件的少数人的理智.