https://bugs.exim.org/show_bug.cgi?id=330
--- Comment #3 from Jeremy Harris <jgh146exb@???> ---
Reading the standards, there are 39 production rules involved in the
syntax specification for the Message-ID header line.
I do not call that a small amount of work. Maybe I'm missing some shortcut.
=====
1 message-id = "Message-ID:" msg-id CRLF 2 3
2 msg-id = [CFWS] "<" id-left "@" id-right ">" [CFWS] 5 6 7
3 CRLF = %x0D %x0A
5 CFWS = (1*([FWS] comment) [FWS]) / FWS 8 9
6 id-left = dot-atom-text / obs-id-left 19 20
7 id-right = dot-atom-text / no-fold-literal / obs-id-right (19) 21
22
8 FWS = ([*WSP CRLF] 1*WSP) / obs-FWS 10 11
; Folding white space
9 comment = "(" *([FWS] ccontent) [FWS] ")" 12
10 WSP = SP / HTAB
; white space
11 obs-FWS = 1*WSP *(CRLF 1*WSP)
12 ccontent = ctext / quoted-pair / comment 13 14
13 ctext = %d33-39 / ; Printable US-ASCII
%d42-91 / ; characters not including
%d93-126 / ; "(", ")", or "\"
obs-ctext 15
14 quoted-pair = ("\" (VCHAR / WSP)) / obs-qp 16 (10) 17
15 obs-ctext = obs-NO-WS-CTL 18
16 VCHAR = %x21-7E
; visible (printing) characters
17 obs-qp = "\" (%d0 / obs-NO-WS-CTL / LF / CR) (18)
18 obs-NO-WS-CTL = %d1-8 / ; US-ASCII control
%d11 / ; characters that do not
%d12 / ; include the carriage
%d14-31 / ; return, line feed, and
%d127 ; white space characters
19 dot-atom-text = 1*atext *("." 1*atext) 23
20 obs-id-left = local-part 24
21 no-fold-literal = "[" *dtext "]" 25
22 obs-id-right = domain 26
23 atext = ALPHA / DIGIT / ; Printable US-ASCII 27 28
"!" / "#" / ; characters not including
"$" / "%" / ; specials. Used for atoms.
"&" / "'" /
"*" / "+" /
"-" / "/" /
"=" / "?" /
"^" / "_" /
"`" / "{" /
"|" / "}" /
"~"
24 local-part = dot-atom / quoted-string / obs-local-part 29 30 31
25 dtext = %d33-90 / ; Printable US-ASCII
%d94-126 / ; characters not including
obs-dtext ; "[", "]", or "\" 32
26 domain = dot-atom / domain-literal / obs-domain (29) 33
34
27 ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
28 DIGIT = %x30-39 ; 0-9
29 dot-atom = [CFWS] dot-atom-text [CFWS] (5) (19)
30 quoted-string = [CFWS]
DQUOTE *([FWS] qcontent) [FWS] DQUOTE 35 (8) 36 (8)(35)
[CFWS]
31 obs-local-part = word *("." word) 27
32 obs-dtext = obs-NO-WS-CTL / quoted-pair (18) (14)
33 domain-literal = [CFWS] "[" *([FWS] dtext) [FWS] "]" [CFWS] (5) (8) (25)
34 obs-domain = atom *("." atom) 37
35 DQUOTE = %x22 ; " (Double Quote)
36 qcontent = qtext / quoted-pair 38 (14)
37 atom = [CFWS] 1*atext [CFWS]
38 qtext = %d33 / ; Printable US-ASCII
%d35-91 / ; characters not including
%d93-126 / ; "\" or the quote character
obs-qtext 39
39 obs-qtext = obs-NO-WS-CTL (18)
--
You are receiving this mail because:
You are the QA Contact for the bug.