2015-05-06 22 views
11

Poszukuję maksymalnej dozwolonej długości znaku dla pola Message-ID w Internecie do celów sprawdzania poprawności w aplikacji. Sprawdziłem źródła, takie jak RFC-2822 i Wikipedia "Message-ID", a także this SO question, między innymi różnymi miejscami. Najbliższą odpowiedzią, jaką mogę znaleźć, jest "998 znaków", ponieważ jest to maksymalna długość, którą specyfikacja dopuszcza dla każdej linii w wiadomości internetowej (z RFC-2822), a pole Message-ID nie może być wieloma liniami.Maksymalna długość wiadomości e-mail o długości wiadomości do wiadomości

Czy 998 znaków jest ostateczną odpowiedzią? Czy nie ma takiego ograniczenia?

Odpowiedz

9

Jeśli jest coś, czego się dowiedziałem o wiadomościach e-mail, to musi to być masowo rozproszony system dla oprogramowania pocztowego fuzzing. Oznacza to, że bez względu na to, co powiedzą dokumenty RFC, znajdziesz e-maile naruszające je, niektóre programy do obsługi poczty e-mail i niektóre błędy. Myślę, że większość będzie utykała z myślą o robustness principle.

Wychodząc z tego, myślę, że maksymalna długość komunikatu Message-ID zgodna z RFC to 995 znaków.

Maksymalna długość linii według wskazanej specyfikacji RFC wynosi 998 znaków. Obejmuje to nazwę pola "Message-ID:", ale można wykonywać składanie linii między nazwą pola i treścią pola. Wiersz zawierający aktualny Message-ID będzie wówczas zawierał spację (składane spacje), "<", Message-ID i ">". Semantycznie nawiasy kątowe nie są częścią Message-ID. W efekcie otrzymujesz maksymalnie 998 - 3 = 995 znaków.

2

Właściwie nie ma ograniczeń

rfc2282 definiuje te produkcje:

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 

Więc id-left mogą być local-part które mogą być quoted-string (a tym samym mieć wiele FWS) więc można złożyć go tyle razy, ile konieczne, aby dopasować dowolną dowolną długość ładowności i nadal są zgodne z ograniczeniami podanymi przez RFC podanymi .

+0

Oczywiście, jeśli ktoś zdecyduje się przyjąć dowolne wiadomości zgodne z RFC-822, to nie narzuca nawet maksymalnej długości linii. – Jani

Powiązane problemy