---
name: "Mail::DMARC::Result"
section: "3pm"
platform: "linux"
package: "libmail-dmarc-perl"
version: "1.20240314-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Mail::DMARC::Result"
---

# Mail::DMARC::Result(3pm)

an aggregate report result object

## NAME

Mail::DMARC::Result - an aggregate report result object

## VERSION

version 1.20240314

## OVERVIEW

A Result object is the product of instantiating a DMARC::PurePerl object, populating the variables, and running `$dmarc`-\>validate. The results object looks like this:

```
    result       => 'pass',   # pass, fail
    disposition  => 'none',   # reject, quarantine, none
    reason       => [         # there can be many reasons...
            {
                type     => '',   # forwarded, sampled_out, trusted_forwarder,
                comment  => '',   #   mailing_list, local_policy, other
            },
        ],
    dkim         => 'pass',   # pass, fail
    dkim_align   => 'strict', # strict, relaxed
    spf          => 'pass',   # pass, fail
    spf_align    => 'strict', # strict, relaxed
    published    => L<Mail::DMARC::Policy>,
```

Reasons are optional and may not be present.

The dkim\_align and spf\_align fields will only be present if the corresponding test value equals pass. They are additional info not specified by the DMARC spec.

## METHODS

### published

Published is a Mail::DMARC::Policy tagged with a domain. The domain attribute is the DNS domain name where the DMARC record was found. This may not be the same as the header\_from domain (ex: bounces.amazon.com -vs- amazon.com).

### result

Whether the message passed the DMARC test. Possible values are: pass, fail.

In order to pass, at least one authentication alignment must pass. The 2013 draft defines two authentication methods: DKIM and SPF. The list is expected to grow.

### disposition

When the DMARC result is not *pass*, disposition is the results of applying DMARC policy to a message. Generally this is the same as the header\_from domains published DMARC policy. When it is not, the reason SHOULD be specified.

### dkim

Whether the message passed or failed DKIM alignment. In order to pass the DMARC DKIM alignment test, a DKIM signature that matches the RFC5322.From domain must be present. An unsigned messsage, a message with an invalid signature, or signatures that don't match the RFC5322.From field are all considered failures.

### dkim\_align

If the message passed the DKIM alignment test, this indicates whether the alignment was strict or relaxed.

### spf

Whether the message passed or failed SPF alignment. To pass SPF alignment, the RFC5321.MailFrom domain must match the RFC5322.From field.

### spf\_align

If the message passed the SPF alignment test, this indicates whether the alignment was strict or relaxed.

### reason

If the applied policy differs from the sites published policy, the result policy should contain a reason and optionally a comment.

A DMARC result reason has two attributes, type, and comment.

```
    reason => {
        type =>  '',
        comment => '',
    },
```

*type*

The following reason types are defined and valid:

```
    forwarded
    sampled_out
    trusted_forwarder
    mailing_list
    local_policy
    other
```

*comment*

Comment is a free form text field.

## AUTHORS

- •

  Matt Simerson \<msimerson@cpan.org\>

- •

  Davide Migliavacca \<shari@cpan.org\>

- •

  Marc Bradshaw \<marc@marcbradshaw.net\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2024 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.
