---
name: "Mail::DKIM::Policy"
section: "3pm"
platform: "linux"
package: "perl-mail-dkim"
version: "1.20240923-3"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Mail::DKIM::Policy"
---

# Mail::DKIM::Policy(3pm)

abstract base class for originator "signing" policies

## NAME

Mail::DKIM::Policy - abstract base class for originator "signing" policies

## VERSION

version 1.20240923

## SYNOPSIS

```
  # get all policies that apply to a verified message
  foreach my $policy ($dkim->policies)
  {
      # the name of this policy
      my $name = $policy->name;
      # the location in DNS where this policy was found
      my $location = $policy->location;
      # apply this policy to the message being verified
      my $result = $policy->apply($dkim);
  }
```

## DESCRIPTION

Between the various versions of the DomainKeys/DKIM standards, several different forms of sender "signing" policies have been defined. In order for the Mail::DKIM library to support these different policies, it uses several different subclasses. All subclasses support this general interface, so that a program using Mail::DKIM can support any and all policies found for a message.

## METHODS

These methods are supported by all classes implementing the Mail::DKIM::Policy interface.

### apply()

Apply the policy to the results of a DKIM verifier.

```
  my $result = $policy->apply($dkim_verifier);
```

The caller must provide an instance of Mail::DKIM::Verifier, one which has already been fed the message being verified.

Possible results are:

- accept

  The message is approved by the sender signing policy.

- reject

  The message is rejected by the sender signing policy.

- neutral

  The message is neither approved nor rejected by the sender signing policy. It can be considered suspicious.

### as\_string()

The policy as a string.

Note that the string returned by this method will not necessarily have the tags ordered the same as the text record found in DNS.

### is\_implied\_default\_policy()

Is this policy implied?

```
  my $is_implied = $policy->is_implied_default_policy;
```

If you fetch the policy for a particular domain, but that domain does not have a policy published, then the "default policy" is in effect. Use this method to detect when that happens.

### location()

Where the policy was fetched from.

This is generally a domain name, the domain name where the policy was published.

If nothing is published for the domain, and the default policy was returned instead, the location will be `"undef"`.

### name()

Identify what type of policy this is.

This currently returns strings like "sender", "author", and "ADSP". It is subject to change in the next version of Mail::DKIM.

## SEE ALSO

Mail::DKIM::DkPolicy - for RFC4870(historical) DomainKeys sender signing policies

Mail::DKIM::DkimPolicy - for early draft DKIM sender signing policies

Mail::DKIM::AuthorDomainPolicy - for Author Domain Signing Practices (ADSP)

## AUTHORS

- •

  Jason Long \<jason@long.name\>

- •

  Marc Bradshaw \<marc@marcbradshaw.net\>

- •

  Bron Gondwana \<brong@fastmailteam.com\> (ARC)

## THANKS

Work on ensuring that this module passes the ARC test suite was generously sponsored by Valimail (https://www.valimail.com/)

## COPYRIGHT AND LICENSE

- •

  Copyright (C) 2013 by Messiah College

- •

  Copyright (C) 2010 by Jason Long

- •

  Copyright (C) 2017 by Standcore LLC

- •

  Copyright (C) 2020 by FastMail Pty Ltd

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.
