Mail::Audit::DKIM - Mail::Audit plugin for domain key verification


Mail-Audit-DKIM documentation Contained in the Mail-Audit-DKIM distribution.

Index


Code Index:

NAME

Top

Mail::Audit::DKIM - Mail::Audit plugin for domain key verification

SYNOPSIS

Top

  use Mail::Audit qw(DKIM);

  my $mail = Mail::Audit->new;
  ...
  if ($mail->dkim_passes) {
    $self->log("dkim verified!");
  }

DESCRIPTION

Top

This method adds some very simple domain key verification to Mail::Audit. In general, consult Mail::DKIM for more information.

METHODS

Top

dkim_result

Top

This returns the result of the DKIM verifier.

dkim_result_detail

Top

This returns not just the one-word result code, but any available details.

dkim_passes

Top

This method returns true if the signature was verified.

PERL EMAIL PROJECT

Top

This module is maintained by the Perl Email Project.

  http://emailproject.perl.org/wiki/Mail::Audit::DKIM

COPYRIGHT

Top

SEE ALSO

Top

Mail::Audit, Mail::DKIM


Mail-Audit-DKIM documentation Contained in the Mail-Audit-DKIM distribution.

use strict;
use warnings;

package Mail::Audit::DKIM;
use Mail::DKIM::Verifier;

our $VERSION = '0.002';

use Sub::Exporter -setup => {
  into    => 'Mail::Audit',
  exports => [ qw(result result_detail passes) ],
  groups  => [ default => [ -all => { -prefix => 'dkim_' } ] ],
};

sub _result_detail {
  my ($mail_audit) = @_;

  return $mail_audit->{__PACKAGE__}{result_detail} ||= do {
    my $verifier = Mail::DKIM::Verifier->new;

    my $string = $mail_audit->as_string;
    my @lines = split /\x0d\x0a|\x0a\x0d|\x0a|\x0d/, $string;

    for my $line (@lines) {
      $verifier->PRINT($line . "\x0d\x0a");
    }
    $verifier->CLOSE;

    $verifier->result_detail;
  };
}

sub result_detail {
  my ($mail_audit) = @_;
  return _result_detail($mail_audit);
}

sub result {
  my ($mail_audit) = @_;
  my ($result) = _result_detail($mail_audit) =~ /\A(\w+)(?:\s|$)/;
  return $result;
}

sub passes {
  my ($mail_audit) = @_;
  return _result_detail($mail_audit) =~ /^pass/;
}

1;

__END__