Mail::...t::URI(3pm)

Okay bestie, welcome to the Mail::...t::URI(3pm) manual page from User Contributed Perl Documentation โ€” aka Mail::DMARC::Report::URI โ€” and it's giving DMARC report URI realness ๐Ÿ’–

๐ŸŒธ NAME ๐ŸŒธ

Mail::DMARC::Report::URI โ€” a DMARC report URI. That's it, that's the name, periodt ๐Ÿ’…

๐Ÿฆ‹ VERSION ๐Ÿฆ‹

version 1.20260306 โ€” the version, bestie. Slay. โœจ

โœจ SYNOPSIS โœจ

The synopsis is literally this code, no cap:

         use Mail::DMARC::URI;
         my $duri = Mail::DMARC::URI->new;
         my $uri_ref = $duri->parse('mailto:rua@example.com,mailto:rua@external.otherdomain.com');
         foreach my $u ( @$uri_ref ) {
             my $method = $u->{uri};
             my $max    = $u->{max_bytes};
             ... do some URI stuff ...
         };

๐Ÿ’… DESCRIPTION ๐Ÿ’…

Okay so this defines a generic syntax for identifying a resource. The DMARC mechanism uses this as the format by which a Domain Owner specifies the destination for the two report types that are supported. ๐ŸŽฏ

The place such URIs are specified (see Section 6.2) allows a list of these to be provided. A report is to be sent to each listed URI. Mail Receivers MAY impose a limit on the number of URIs that receive reports, but MUST support at least two. The list of URIs is separated by commas (ASCII 0x2C).

Each URI can have associated with it a maximum report size that may be sent to it. This is accomplished by appending an exclamation point (ASCII 0x21), followed by a maximum size indication, before a separating comma or terminating semi-colon. โš ๏ธ

Thus, a DMARC URI is a URI within which any commas or exclamation points are percent-encoded per [URI], followed by an OPTIONAL exclamation point and a maximum size specification, and, if there are additional reporting URIs in the list, a comma and the next URI. Very demure, very mindful. ๐ŸŽ€

For example, the URI mailto:reports@example.com!50m would request a report be sent via email to reports@example.com so long as the report payload does not exceed 50 megabytes. Iconic.

A formal definition is provided in Section 6.3.

๐ŸŽ€ ABNF ๐ŸŽ€

Here's the ABNF, exactly as the page gives it:

         dmarc-uri = URI [ "!" 1*DIGIT [ "k" / "m" / "g" / "t" ] ]
                   ; "URI" is imported from [URI]; commas (ASCII 0x2c)
                   ; and exclamation points (ASCII 0x21) MUST be encoded

URI is imported from RFC 3986: https://www.ietf.org/rfc/rfc3986.txt โ€” go read the lore, bestie. ๐Ÿ“š

Only mailto, http, and https URIs are currently supported, examples:

           https://www.ietf.org/rfc/rfc3986.txt
           mailto:John.Doe@example.com

With an optional size limit (see SIZE LIMIT).

๐Ÿงš SIZE LIMIT ๐Ÿงš

A size limitation in a dmarc-uri, if provided, is interpreted as a count of units followed by an OPTIONAL unit size (k for kilobytes, m for megabytes, g for gigabytes, t for terabytes). Without a unit, the number is presumed to be a basic byte count. Note that the units are considered to be powers of two; a kilobyte is 2^10, a megabyte is 2^20, etc. Math girlie moment. ๐Ÿงฎโœจ

๐Ÿ‘‘ AUTHORS ๐Ÿ‘‘

The legends behind this page:

  • Matt Simerson <msimerson@cpan.org>
  • Davide Migliavacca <shari@cpan.org>
  • Marc Bradshaw <marc@marcbradshaw.net>

This software is copyright (c) 2026 by Matt Simerson.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

Cute sign-off: this page is from perl v5.40.1, dated 2026-07-07 ๐Ÿ’–โœจ Bye bestie โ€” slay those URIs! ๐Ÿซถ

๐Ÿ“ฆ where this page comes from