RFC Errata
RFC 7489, "Domain-based Message Authentication, Reporting, and Conformance (DMARC)", March 2015
Note: This RFC has been updated by RFC 8553, RFC 8616
Source of RFC: INDEPENDENT
Errata ID: 5221
Status: Held for Document Update
Type: Technical
Publication Format(s) : TEXT
Reported By: Steven Hilton
Date Reported: 2017-12-31
Held for Document Update by: Eliot Lear
Date Held: 2024-12-03
Section Appendix C. says:
<xs:pattern value="((1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5]).){3} (1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])| ([A-Fa-f0-9]{1,4}:){7}[A-Fa-f0-9]{1,4}"/>
It should say:
<xs:pattern value="^((1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5]).){3} (1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])$| ^(([0-9A-Fa-f]{1,4}:){7}[A-Fa-f0-9]{1,4})$| ^(([0-9A-Fa-f]{1,4}:){1,1}(:[0-9A-Fa-f]{1,4}){1,6})$| ^(([0-9A-Fa-f]{1,4}:){1,2}(:[0-9A-Fa-f]{1,4}){1,5})$| ^(([0-9A-Fa-f]{1,4}:){1,3}(:[0-9A-Fa-f]{1,4}){1,4})$| ^(([0-9A-Fa-f]{1,4}:){1,4}(:[0-9A-Fa-f]{1,4}){1,3})$| ^(([0-9A-Fa-f]{1,4}:){1,5}(:[0-9A-Fa-f]{1,4}){1,2})$| ^(([0-9A-Fa-f]{1,4}:){1,6}(:[0-9A-Fa-f]{1,4}){1,1})$| ^((([0-9A-Fa-f]{1,4}:){1,7}|:):)$| ^(:(:[0-9A-Fa-f]{1,4}){1,7})$| ^(((([0-9A-Fa-f]{1,4}:){6}) (25[0-5]|2[0-4]\d|[0-1]?\d?\d) (\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}))$| ^((([0-9A-Fa-f]{1,4}:){5}[0-9A-Fa-f]{1,4}: (25[0-5]|2[0-4]\d|[0-1]?\d?\d) (\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}))$| ^(([0-9A-Fa-f]{1,4}:){5}:[0-9A-Fa-f]{1,4}: (25[0-5]|2[0-4]\d|[0-1]?\d?\d) (\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})$| ^(([0-9A-Fa-f]{1,4}:){1,1}(:[0-9A-Fa-f]{1,4}){1,4}: (25[0-5]|2[0-4]\d|[0-1]?\d?\d) (\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})$| ^(([0-9A-Fa-f]{1,4}:){1,2}(:[0-9A-Fa-f]{1,4}){1,3}: (25[0-5]|2[0-4]\d|[0-1]?\d?\d) (\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})$| ^(([0-9A-Fa-f]{1,4}:){1,3}(:[0-9A-Fa-f]{1,4}){1,2}: (25[0-5]|2[0-4]\d|[0-1]?\d?\d) (\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})$| ^(([0-9A-Fa-f]{1,4}:){1,4}(:[0-9A-Fa-f]{1,4}){1,1}: (25[0-5]|2[0-4]\d|[0-1]?\d?\d) (\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})$| ^((([0-9A-Fa-f]{1,4}:){1,5}|:): (25[0-5]|2[0-4]\d|[0-1]?\d?\d) (\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})$| ^(:(:[0-9A-Fa-f]{1,4}){1,5}: (25[0-5]|2[0-4]\d|[0-1]?\d?\d) (\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3})$"/>
Notes:
The document does not address compressed IPv6 addresses, and the IPv6 regular expression pattern does provided in the proposed XML validation does not match compressed IPv6 addresses.
I recommend using a more comprehensive regular expression, adding another note to the appendix that the IPv6 pattern is only included for brevity, or modifying the document to require fully expanded IPv6 addresses.
Credit for the IPv6 regular expression above goes to Vernon Mauery (http://vernon.mauery.com/content/projects/linux/ipv6_regex).