# # Mail::SPF::Mech::PTR # SPF record "ptr" mechanism class. # # (C) 2005-2012 Julian Mehnle # 2005 Shevek # $Id: PTR.pm 57 2012-01-30 08:15:31Z julian $ # ############################################################################## package Mail::SPF::Mech::PTR; =head1 NAME Mail::SPF::Mech::PTR - SPF record C mechanism class =cut use warnings; use strict; use base 'Mail::SPF::SenderIPAddrMech'; use Mail::SPF::Util; use constant TRUE => (0 == 0); use constant FALSE => not TRUE; use constant name => 'ptr'; use constant name_pattern => qr/${\name}/i; =head1 DESCRIPTION An object of class B represents an SPF record mechanism of type C. =head2 Constructors The following constructors are provided: =over =item B: returns I Creates a new SPF record C mechanism object. %options is a list of key/value pairs representing any of the following options: =over =item B =item B See L. =back =item B: returns I; throws I, I Creates a new SPF record C mechanism object by parsing the string and any options given. =back =head2 Class methods The following class methods are provided: =over =item B =item B See L. =item B: returns I Returns B<'ptr'>. =item B: returns I Returns a regular expression that matches a mechanism name of B<'ptr'>. =back =head2 Instance methods The following instance methods are provided: =over =cut sub parse_params { my ($self) = @_; $self->parse_domain_spec(); return; } =item B =item B =item B =cut sub params { my ($self) = @_; return defined($self->{domain_spec}) ? ':' . $self->{domain_spec} : undef; } =item B See L. =item B: returns I Returns the C parameter of the mechanism. =cut # Make read-only accessor: __PACKAGE__->make_accessor('domain_spec', TRUE); =item B: returns I Checks whether the mechanism's target domain name, or a sub-domain thereof, is a "valid" domain name for the given request's IP address (see L), and returns B if it does, or B otherwise. See L for how domains are validated. See RFC 4408, 5.5, for the description of an equivalent algorithm. =cut sub match { my ($self, $server, $request) = @_; $server->count_dns_interactive_term($request); return Mail::SPF::Util->valid_domain_for_ip_address( $server, $request, $request->ip_address, $self->domain($server, $request)) ? TRUE : FALSE; } =back =head1 SEE ALSO L, L, L, L L For availability, support, and license information, see the README file included with Mail::SPF. =head1 AUTHORS Julian Mehnle , Shevek =cut TRUE;