NAME
    Validate::SPF - Validates SPF text string

VERSION
    version 0.003

SYNOPSIS
        use Validate::SPF qw( validate );

        my $spf_text = 'v=spf1 +a/24 mx mx:mailer.example.com ip4:192.168.0.1/16 -all';

        print $spf_text . "\n";
        print ( validate( $spf_text ) ? 'valid' : 'NOT valid' ) . "\n";

DESCRIPTION
    This module implements basic SPF validation.

    This is ALPHA quality software. The API may change without notification!

FUNCTIONS
  validate
    Parse and validate SPF string..

EXPORTS
    Module does not export any symbols by default.

  check_extra
    Checks extra parameters of the tokens (mechanisms, modifiers). Uses the
    appropriate private function to validate it. Returns the result of
    calling this function, or 0 if no function found.

PRIVATE FUNCTIONS
  _validate_a
    Additional checks for A mechanism.

    The A records can be passed as

        a
        a/<prefix-length>
        a:<domain-name>
        a:<domain-name>/<prefix-length>

    If no *domain-name* given, the current domain is used.

  _validate_mx
    Additional checks for MX mechanism.

    The MX records can be passed as

        mx
        mx/<prefix-length>
        mx:<domain-name>
        mx:<domain-name>/<prefix-length>

    If no *domain-name* given, the current domain is used.

  _validate_ip4
    Additional checks for IP4 mechanism.

    IPv4 addresses can be passed as

        ip4:<IPv4-address>
        ip4:<IPv4-network>/<prefix-length>

    If no *prefix-length* given, the /32 is assumed.

  _validate_ip6
    Additional checks for IP6 mechanism.

    IPv6 addresses can be passed as

        ip6:<IPv6-address>
        ip6:<IPv6-network>/<prefix-length>

    If no *prefix-length* given, the /128 is assumed.

  _validate_ptr
    Additional checks for PTR mechanism.

        ptr
        ptr:<domain>

  _validate_exists
    Additional checks for EXISTS mechanism.

        exists:<domain>

  _validate_include
    Additional checks for INCLUDE mechanism.

        include:<domain>

  _validate_redirect
    Additional checks for REDIRECT modifier.

        redirect=<domain>

  _validate_exp
    Additional checks for EXP modifier.

        exp=<domain>

SEE ALSO
    RFC 7208 <http://tools.ietf.org/html/rfc7208>

    Sender Policy Framework (SPF) for Authorizing Use of Domains in Email,
    Version 1.

AUTHOR
    Anton Gerasimov <chim@cpan.org>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2014 by Anton Gerasimov.

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