| Mail-SPF documentation | Contained in the Mail-SPF distribution. |
Mail::SPF::Mech::A - SPF record a mechanism class
An object of class Mail::SPF::Mech::A represents an SPF record mechanism of
type a.
The following constructors are provided:
Creates a new SPF record a mechanism object.
%options is a list of key/value pairs representing any of the following options:
Creates a new SPF record a mechanism object by parsing the string and
any options given.
The following class methods are provided:
Returns 'a'.
Returns a regular expression that matches a mechanism name of 'a'.
The following instance methods are provided:
Returns the domain-spec parameter of the mechanism.
Returns the IPv4 network prefix length of the mechanism.
Returns the IPv6 network prefix length of the mechanism.
Checks whether the mechanism's target domain name (that is, any of its DNS A
or AAAA host addresses) matches the given request's IP address (see
ip_address in Mail::SPF::Request), and returns true if it does, or false
otherwise. The mechanism's IP network prefix lengths are respected when
matching address records against the request's IP address. See RFC 4408, 5,
for the exact algorithm used.
Mail::SPF, Mail::SPF::Record, Mail::SPF::Term, Mail::SPF::Mech
http://www.ietf.org/rfc/rfc4408.txt
For availability, support, and license information, see the README file included with Mail::SPF.
Julian Mehnle <julian@mehnle.net>, Shevek <cpan@anarres.org>
| Mail-SPF documentation | Contained in the Mail-SPF distribution. |
# # Mail::SPF::Mech::A # SPF record "a" mechanism class. # # (C) 2005-2008 Julian Mehnle <julian@mehnle.net> # 2005 Shevek <cpan@anarres.org> # $Id: A.pm 50 2008-08-17 21:28:15Z Julian Mehnle $ # ############################################################################## package Mail::SPF::Mech::A;
use warnings; use strict; use base 'Mail::SPF::SenderIPAddrMech'; use constant TRUE => (0 == 0); use constant FALSE => not TRUE; use constant name => 'a'; use constant name_pattern => qr/${\name}/i;
sub parse_params { my ($self) = @_; $self->parse_domain_spec(); $self->parse_ipv4_ipv6_prefix_lengths(); return; }
sub params { my ($self) = @_; my $params; $params .= ':' . $self->{domain_spec} if defined($self->{domain_spec}); $params .= '/' . $self->{ipv4_prefix_length} if defined($self->{ipv4_prefix_length}) and $self->{ipv4_prefix_length} != $self->default_ipv4_prefix_length; $params .= '//' . $self->{ipv6_prefix_length} if defined($self->{ipv6_prefix_length}) and $self->{ipv6_prefix_length} != $self->default_ipv6_prefix_length; return $params; }
# Make read-only accessors: __PACKAGE__->make_accessor($_, TRUE) foreach qw(domain_spec ipv4_prefix_length ipv6_prefix_length);
sub match { my ($self, $server, $request) = @_; $server->count_dns_interactive_term($request); return $self->match_in_domain($server, $request); }
TRUE;