Максимальная длина сообщения электронной почты в интернете-ID

Я ищу максимальную длину символа, разрешенную для поля идентификатора сообщения в интернете для целей проверки в приложении. Я рассмотрел такие источники, как RFC-2822 и Википедия "Message-ID" а также это так вопрос, среди других различных местах. Ближайший ответ, который я могу найти, - "998 символов", потому что это максимальная длина, которую спецификация допускает для каждой строки в интернет-сообщении (от RFC-2822), и Поле Message-ID не может быть несколькими строками.

является ли 998 символов окончательным ответом? Нет такого ограничения?

2 ответов


Если есть одна вещь, которую я узнал об электронной почте, это должно быть, что это массово распределенная система для fuzzing программное обеспечение электронной почты. То есть, независимо от того, что говорят RFCs, вы найдете электронные письма, нарушающие их, некоторые электронные программы справляются, а некоторые терпят неудачу. Я думаю, что большинство будет хромать вместе с принцип робастности в виду.

с этим, я думаю, максимум уступчивый сообщение-код RFC длина 995 символов.

в максимальная длина строки на RFC, который вы цитируете, составляет 998 символов. Это будет включать имя поля " Message-ID:", но вы можете сделать сгибание линии между именем поля и телом поля. Строка, содержащая фактический идентификатор сообщения, будет содержать пробел (складные пробелы), "". Семантически, угловые скобки не являются частью идентификатора сообщения. Таким образом, вы получите максимум 998 - 3 = 995 символов.


на самом деле нет предела

rfc2282 определяет эти спектакли:

message-id      =       "Message-ID:" msg-id CRLF

msg-id          =       [CFWS] "<" id-left "@" id-right ">" [CFWS]

id-left         =       dot-atom-text / no-fold-quote / obs-id-left

obs-id-left     =       local-part

local-part      =       dot-atom / quoted-string / obs-local-part

quoted-string   =       [CFWS]
                        DQUOTE *([FWS] qcontent) [FWS] DQUOTE
                        [CFWS]

CFWS            =       *([FWS] comment) (([FWS] comment) / FWS)

FWS             =       ([*WSP CRLF] 1*WSP) /   ; Folding white space

так id-left может быть local-part что может быть quoted-string (и, таким образом, имеют несколько FWS) таким образом, вы можете сложить его столько раз, сколько нужно, чтобы соответствовать любому произвольному длина полезной нагрузки и все еще исполняет с ограничениями, Котор дали RFC.