-1

从 IMAP 服务器检索单个部分时,是否有任何方式 MIME 格式字符串嵌套超过 3 个小数点?例如,RFC3501 第 6.4.5 节,pg56,在描述如何解析来自服务器的 rfc822 消息时,如果我想从 IMAP 服务器获取电子邮件的明文版本,这是可能的(并且在处理 w/rfc822 消息时很常见 w /附件)发出

tag FETCH uid BODY[4.2.2.1]

因为 rfc822 消息可以嵌套很深。所以该格式字符串中有 3 个小数点。我的问题是,是否有任何理由,任何类型的 MIME 消息都可能看起来像这样?

tag FETCH uid BODY[1.2.3.4.5]

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

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

4

3 回答 3

0

没有上限。我见过的最长的是这个小宝贝,其中的 Content-Description 消息已被编辑为包含部件号:

* 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))
于 2016-01-16T08:40:37.733 回答
0

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

于 2016-01-17T04:13:31.297 回答
0

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...

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

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

于 2016-01-16T01:05:50.130 回答