Here's my alternate take: make the ABNF a lot simpler to
reflect the actual loose syntax.
dmarc-record = dmarc-version *(*WSP ";" *WSP dmarc-tag) *WSP *%x3b
dmarc-tag = 1*ALPHA %WSP '=' *WSP 1*dmarc-value
dmarc-value = %x20-3a | %x3c-7e ; any printing chars but semicolon
dmarc-version = "v" *WSP "=" *WSP %x44 %x4d %x41 %x52 %x43 %x31
Don't waste ABNF defining the tag names. Just define the values for
the various tags:
> dmarc-request = ( "none" / "quarantine" / "reject" )
>
> dmarc-test = ( "y" / "n" )
>
> dmarc-psd = ( "y" / "n" )
>
> dmarc-sprequest = ( "none" / "quarantine" / "reject" )
>
> dmarc-nprequest = ( "none" / "quarantine" / "reject" )
>
> dmarc-adkim = ( "r" / "s" )
>
> dmarc-aspf = ( "r" / "s" )
>
dmarc-uri = URI
; "URI" is imported from [RFC3986]; commas (ASCII
; 0x2C) and exclamation points (ASCII 0x21)
; MUST be encoded
> dmarc-auri = dmarc-uri *(*WSP "," *WSP dmarc-uri)
>
> dmarc-furi = dmarc-uri *(*WSP "," *WSP dmarc-uri)
>
> dmarc-fo = ( "0" / "1" / ( "d" / "s" / "d:s" / "s:d" ) )
>
> dmarc-rfmt = Keyword *(*WSP ":" Keyword)
> ; registered reporting formats only
>
> "Keyword" is imported from Section 4.1.2 of [RFC5321].
>
> dmarc-test = ( "y" / "n" )
_______________________________________________
dmarc mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/dmarc