[usmt dev] communications format between MUA and API v0.20010213.01

Jason Pyeron dev@smime.pyerotechnics.com
Tue, 13 Feb 2001 17:58:03 -0500 (EST)


I will be updating this, but here is todays copy
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
section 1.2

     ...

          The syntax  that  distinguishes  between  header  fields  is
     specified  separately  from  the  internal  syntax for particular
     fields.  This separation is intended to allow simple  parsers  to
     operate on the general structure of messages, without concern for
     the detailed structure of individual header fields.  ...

     ...


          The framework severely constrains document tone and  appear-
     ance and is primarily useful for most intra-organization communi-
     cations and  well-structured   inter-organization  communication.
     It  also  can  be used for some types of inter-process communica-
     tion, such as simple file transfer and remote job entry.  ...

     ...

the formal grammar: (from appendix B)

     message     =  headers body                 ;

     headers     =  field*                       ;

     body        =  (CRLF text*)*                ;

     field       =  field-name ":" [field-body]  ;
                     CRLF                        ;

     field       =  field-name ":" [field-body / ;
                     ( LWSP? ":" Base64Body ) ]  ;
                     CRLF                        ;

     field-name  =  <any CHAR, excluding CTL,    ; names are not case
                     SPACE, and ":">+            ; sensitive!

     Base64Body  =  field-body                   ; should we make a
                                                 ; difference between
                                                 ; BASE64 and regular

     field-body  =  text* [CRLF LWSP field-body] ;

     text        =  <any CHAR, including         ; => atoms, specials,
                     CR & LF, but NOT            ;  comments and
                     including CRLF>             ;  quoted-strings are
                                                 ;  NOT recognized. 
                                                 ;  CRLF(0d0a) can be
                                                 ;  encoded as +DQAK-

     LWSP        =  SPACE / HT                   ; semantics = SPACE

     CTL         =  NUL / SOH / STX / ETX /      ;
                    EOT / ENQ / ACK / BEL /      ;
                    BS  / HT  / LF  / VT  /      ;
                    FF  / CR  / SO  / SI  /      ;
                    DLE / DC1 / DC2 / DC3 /      ;
                    DC4 / NAK / SYN / ETB /      ;
                    CAN / EM  / SUB / ESC /      ;
                    FS  / GS  / RS  / US         ;

     CRLF        =  CR LF                        ; in Unicode it is
                                                 ; 000D000A, but in UTF-7
                                                 ; it is 0D0A, another
                                                 ; encoding for UTF-7 is
                                                 ; +DQAK-

     HT          =  <ASCII HT, horizontal-tab>   ; (11,0x09)
     LF          =  <ASCII LF, line-feed>        ; (12,0x0A)
     CR          =  <ASCII CR, carrige-return>   ; (15,0x0D)
     SPACE       =  <ASCII SP, space>            ; (40,0x20)

     see man ascii for NUL, SOH, STX, ETX, EOT, ENQ, ACK, BEL, BS, VT, FF,
      SO, SI, DLE, DC1, DC2, DC3, DC4, NAK, SYN, ETB, CAN, EM, SUB, ESC,
      FS, GS, RS, US

     CHAR        = 0..177 (0x00..0x7F) 
       
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

http://www.landfield.com/rfcs/rfc2152.html


field:UTF-7 string