/Mail-OpenDKIM

Mail::OpenDKIM is a perl interface to the OpenDKIM C library. It also implements a drop-in replacement for the Mail::DKIM::Signer object.

Primary LanguagePerl

NAME
    Mail::OpenDKIM - Provides an interface to libOpenDKIM

SYNOPSIS
     # sign outgoing message

     use Mail::DKIM::Signer;

     # create a signer object
     my $dkim = Mail::OpenDKIM::Signer->new(
      Algorithm => 'rsa-sha1',
      Method => 'relaxed',
      Domain => 'example.org',
      Selector => 'selector1',
      KeyFile => 'private.key',
     );

     # read an email and pass it into the signer, one line at a time
     while(<STDIN>) {
      # remove local line terminators
      chomp;
      s/\015$//;

      # use SMTP line terminators
      $dkim->PRINT("$_\015\012");
     }
     $dkim->CLOSE();

     # what is the signature result?
     my $signature = $dkim->signature;
     print $signature->as_string;

     # check validity of incoming message
     my $o = Mail::OpenDKIM->new();
     $o->dkim_init();

     my $d = $o->dkim_verify({
      id => 'MLM',
     });

     $msg =~ s/\n/\r\n/g;

     $d->dkim_chunk({ chunkp => $msg, len => length($msg) });

     $d->dkim_chunk({ chunkp => '', len => 0 });

     $d->dkim_eom();

     my $sig = $d->dkim_getsignature();

     $d->dkim_sig_process({ sig => $sig });

     printf "0x\n", $d->dkim_sig_getflags({ sig => $sig });

     $d->dkim_free();

     $o->dkim_close();

DESCRIPTION
    Mail::OpenDKIM, coupled with Mail::OpenDKIM::DKIM, provides a means of
    calling libOpenDKIM from Perl. Mail::OpenDKIM implements those routine
    taking a DKIM_LIB argument; those taking a DKIM argument have been
    implemented in Mail::OpenDKIM::DKIM.

    Mail::OpenDKIM::Signer provides a drop in replacement for the signature
    process provided by Mail::DKIM::Signer.

    When an error is encountered, an Error::Simple object is thrown.

SUBROUTINES/METHODS
  new
    Create a new signing/verifying object. After doing this you will need to
    call the dkim_init method before you can do much else.

  dkim_init
    For further information, refer to http://www.opendkim.org/libopendkim/

  dkim_close
    For further information, refer to http://www.opendkim.org/libopendkim/

  dkim_flush_cache
    For further information, refer to http://www.opendkim.org/libopendkim/

  dkim_libfeature
    For further information, refer to http://www.opendkim.org/libopendkim/

  dkim_sign
    For further information, refer to http://www.opendkim.org/libopendkim/

    Returns a Mail::OpenDKIM::DKIM object.

  dkim_verify
    For further information, refer to http://www.opendkim.org/libopendkim/

    Returns a Mail::OpenDKIM::DKIM object. The memclosure argument is
    ignored.

  dkim_getcachestats
    For further information, refer to http://www.opendkim.org/libopendkim/

  dkim_set_dns_callback
    For further information, refer to http://www.opendkim.org/libopendkim/

  dkim_set_key_lookup
    For further information, refer to http://www.opendkim.org/libopendkim/

  dkim_set_policy_lookup
    For further information, refer to http://www.opendkim.org/libopendkim/

  dkim_set_signature_handle
    For further information, refer to http://www.opendkim.org/libopendkim/

  dkim_set_signature_handle_free
    For further information, refer to http://www.opendkim.org/libopendkim/

  dkim_set_signature_tagvalues
    For further information, refer to http://www.opendkim.org/libopendkim/

  dkim_dns_set_query_cancel
    For further information, refer to http://www.opendkim.org/libopendkim/

  dkim_dns_set_query_service
    For further information, refer to http://www.opendkim.org/libopendkim/

  dkim_dns_set_query_start
    For further information, refer to http://www.opendkim.org/libopendkim/

  dkim_dns_set_query_waitreply
    For further information, refer to http://www.opendkim.org/libopendkim/

  dkim_options
    For further information, refer to http://www.opendkim.org/libopendkim/

  dkim_libversion
    Static method.

  dkim_ssl_version
    Static method.

  dkim_getcachestats
    Static method.

  dkim_getpolicystr
    Calls C routine of same name.

  dkim_getpresultstr
    Calls C routine of same name.

  dkim_getresultstr
    Calls C routine of same name.

  dkim_sig_geterrorstr
    Calls C routine of same name.

  dkim_mail_parse
    Calls C routine of same name.

EXPORT
    Many DKIM_* constants, e.g. DKIM_STAT_OK are exported.

SEE ALSO
    Mail::DKIM

    http://www.opendkim.org/libopendkim/

    RFC 4870, RFC 4871

DEPENDENCIES
    This module requires these other modules and libraries:

      Test::More
      libOpenDKIM 2.3 (http://www.opendkim.org/libopendkim/)
      C compiler

NOTES
    Tested against libOpenDKIM 2.3.1. Known to fail to compile against 2.2.

    Only portions of Mail::DKIM::Signer interface, and the support for it,
    have been implemented.

    Please report any bugs or feature requests to "bug-mail-opendkim at
    rt.cpan.org", or through the web interface at
    <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Mail-OpenDKIM>. I will
    be notified, and then you'll automatically be notified of progress on
    your bug as I make changes.

    The signature creation rountines have been tested more thoroughly than
    the signature verification routines.

    Feedback will be greatfully received.

AUTHOR
    Nigel Horne

    Vick Khera, "<vivek at khera.org>"

SUPPORT
    You can find documentation for this module with the perldoc command.

        perldoc Mail::OpenDKIM

    You can also look for information at:

    *   MailerMailer Project page

        <http://www.mailermailer.com/labs/projects/Mail-OpenDKIM.rwp>

    *   RT: CPAN's request tracker

        <http://rt.cpan.org/NoAuth/Bugs.html?Dist=Mail-OpenDKIM>

    *   AnnoCPAN: Annotated CPAN documentation

        <http://annocpan.org/dist/Mail-OpenDKIM>

    *   CPAN Ratings

        <http://cpanratings.perl.org/d/Mail-OpenDKIM>

    *   Search CPAN

        <http://search.cpan.org/dist/Mail-OpenDKIM/>

SPONSOR
    This code has been developed under sponsorship of MailerMailer LLC,
    http://www.mailermailer.com/

COPYRIGHT AND LICENCE
    This module is Copyright 2014 Khera Communications, Inc. It is licensed
    under the same terms as Perl itself.