[exim-dev] [Bug 330] Check the syntax of Message-ID: header …

Pàgina inicial
Delete this message
Reply to this message
Autor: admin
Data:  
A: exim-dev
Assumpte: [exim-dev] [Bug 330] Check the syntax of Message-ID: header lines
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.