IMAP MIME 身体结构格式字符串可以嵌套多少个值


How many values can IMAP MIME BODYSTRUCTURE format string be nested?

从 IMAP 服务器检索单个部分时,MIME 格式字符串是否嵌套在小数点后 3 位以上?例如,RFC3501 6.4.5 节第 56 页,在描述如何解析来自服务器的 rfc822 消息时,如果我想从 IMAP 服务器获取电子邮件的纯文本版本,则有可能(在处理带附件的 rfc822 消息时很常见)发出

tag FETCH uid BODY[4.2.2.1]

因为 RFC822 消息可以深度嵌套。因此,该格式字符串中有 3 个小数点。我的问题是,有什么原因,任何类型的MIME消息都可以看起来像这样吗?

tag FETCH uid BODY[1.2.3.4.5]

还是小数点后 3 位是最大可能的嵌套量?我还没有在我的测试中找到这一点,但在我在我的解析器中实现它之前,我需要确定,因为RFC3501对此并不具体。如果 MIME 格式字符串中的小数点可能超过 3 个,则所述消息的 BODY 结构会是什么样子?

感谢您抽出宝贵时间,期待您的回复。

Rfc3501(您链接的)状态

BODY[<section>]<<partial>>
    The text of a particular body section.  The section
    specification is a set of zero or more part specifiers
    delimited by periods...

这似乎非常明确地表明没有上限。

至于这样的消息会用于什么,我不知道

没有上限。我见过的最长的是这个小婴儿,其中的内容描述消息已被编辑以包含部件号:

* 1 FETCH (BODYSTRUCTURE (("text" "plain" NIL NIL "Part number 1" "7BIT" 9 1 NIL NIL NIL NIL)("application" "octet-stream" NIL NIL "Part number 2" "BASE64" 14 "qWXKy9s0ny8E1/5/uzNhpg==" ("attachment" ("filename" "foo.bar" "size" "8")) NIL NIL)("message" "rfc822" NIL NIL "Part number 3" "7BIT" 540 ("Thu, 20 May 2004 14:28:50 +0200" "embedded rfc822 message" (("B" NIL "b" "c.d")) NIL NIL (("A" NIL "a" "c.d")) NIL NIL NIL NIL) (("text" "plain" NIL NIL "Part number 3.1" "7BIT" 9 1 NIL ("inline" NIL) ("en" "no" "de") NIL)("application" "octet-stream" NIL NIL "Part number 3.2" "BASE64" 14 NIL NIL NIL NIL) "mixed" ("boundary" "Y") NIL NIL NIL) 24 NIL NIL NIL NIL)(("image" "gif" NIL NIL "Part number 4.1" "BASE64" 0 NIL NIL NIL NIL)("message" "rfc822" NIL NIL "Part number 4.2" "7BIT" 658 ("Thu, 20 May 2004 14:28:50 +0200" "second embedded rfc822 message" (("A" NIL "a" "c.d")) NIL NIL (("B" NIL "b" "c.d")) NIL NIL NIL NIL) (("text" "plain" NIL NIL "Part number 4.2.1" "7BIT" 9 1 NIL NIL NIL NIL)(("text" "plain" NIL NIL "Part number 4.2.2.1" "7BIT" 9 1 NIL NIL "en" NIL)("text" "richtext" NIL NIL "Part number 4.2.2.2" "7BIT" 9 1 NIL NIL NIL NIL) "alternative" ("boundary" "B") NIL NIL NIL) "mixed" ("boundary" "A") NIL NIL NIL) 34 NIL NIL NIL NIL) "mixed" ("boundary" "Z") NIL NIL NIL) "mixed" ("boundary" "X") NIL NIL NIL))

我找到了答案,虽然 rfc204x 和 rfc3501 都没有限制,但我尝试过的每个邮件服务器都有自己的限制,因为夸张的 MIME 嵌套似乎是绕过垃圾邮件、.exe阻止等各种过滤器的常用方法。 "MIME 嵌套超过安全限制"似乎是发送 15+ 级小数时返回的流行消息。