2.1 X500 Distinguished Name

 X500 DNs uniquely identify Address Book objects in the OAB. Each Address Book object MUST have a unique X500 DN value. The server stores the X500 DN in the PidTagEmailAddress property, as specified in [MS-OXOABK] section 2.2.3.14. The following Augmented Backus-Naur Form (ABNF) definition, as specified in [RFC5234], specifies the format of an X500 DN.

 x500-dn    =    org org-unit 0*13(container) object-rdn
                               ; x500-dns are limited to 16 levels
 template-x500-dn = org [org-unit] 0*13(container) object-rdn
 org                      =    "/o=" rdn
 org-unit                 =   "/ou=" rdn
 container                =    "/cn=" rdn
 object-rdn               =    "/cn=" rdn
 rdn                      =    ( non-space-teletex ) / 
                          ( non-space-teletex *62(teletex-char)
                            non-space-teletex )
                          ; rdn values are limited to 64 characters
                          ; the number of rdns is limited to 16 but the
                          ; total cumulative length of rdn characters in
                          ; an x500-dn is limited to 256.
  
 teletex-char             =    SP / non-space-teletex
 non-space-teletex        = "!" / DQUOTE / "%" / "&" / "\" / "(" / ")" / 
                          "*" / "+" / "," / "-" / "." / "0" / "1" / 
                          "2" / "3" / "4" / "5" / "6" / "7" / "8" /
                          "9" / ":" / "<" / "=" / ">" / "?" / "@" /
                          "A" / "B" / "C" / "D" / "E" / "F" / "G" / 
                          "H" / "I" / "J" / "K" / "L" / "M" / "N" / 
                          "O" / "P" / "Q" / "R" / "S" / "T" / "U" / 
                          "V" / "W" / "X" / "Y" / "Z" / "[" / "]" /
                          "_" / "a" / "b" / "c" / "d" / "e" / "f" /
                          "g" / "h" / "i" / "j" / "k" / "l" / "m" /
                          "n" / "o" / "p" / "q" / "r" / "s" / "t" /
                          "u" / "v" / "w" / "x" / "y" / "z" / "|"
 addresslist-x500-dn    =   "/guid=" 32(HEXDIG) / "/" / x500-dn