The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Mail::STS::Policy - class to parse and generate RFC8461 policies

VERSION

version 0.01

SYNOPSIS

  # generate a policy
  my $policy = Mail::STS::Policy->new(
    mode => 'enforce',
    max_age => 604800,
    mx => [ 'mail.example.com' ],
  );
  # setters
  $policy->mode('testing');
  $policy->add_mx('mail.example.com');
  print $policy->as_string;

  # parse existing policy
  my $policy = Mail::STS::Policy->new_from_string($string);
  # access values
  $policy->mode;
  # 'enforce'
  $policy->mx;
  # [ 'mail.example.com' ]

  # check if a host is in there
  $policy->match_mx('mail.blablub.de') or die;

ATTRIBUTES

version (default: 'STSv1')

Currently always version 'STSv1'.

mode (default: 'none')

Get/set mode of policy.

max_age (default: undef)

Get/set max_age for policy caching.

mx (default: [])

Array reference to array of mx hosts.

METHODS

new_from_string($string)

Constructor for creating a new policy object from a policy string.

Internally creates objects by calling new() and execute parse() on it.

parse($string)

Parses values from $string to values in the object overwriting and clearing all existing values.

Will die() on parsing error.

as_hash

Returns a hash reference containing policy data.

  $policy->as_hash
  # {
  #   'version' => 'STSv1',
  #   'mode' => 'enforce',
  #   'max_age' => 3600,
  #   'mx' => [ 'mx.example.com', ... ],
  # }

as_string

Outputs the object as a RFC8461 policy document.

match_mx($host)

Returns if the policy matches $host.

  $policy->match_mx('mail.example.com') or die;

AUTHOR

Markus Benning <ich@markusbenning.de>

COPYRIGHT AND LICENSE

This software is copyright (c) 2018 by Markus Benning <ich@markusbenning.de>.

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