| Mail-SPF documentation | Contained in the Mail-SPF distribution. |
Mail::SPF::Mech::Exists - SPF record exists mechanism class
An object of class Mail::SPF::Mech::Exists represents an SPF record
mechanism of type exists.
The following constructors are provided:
Creates a new SPF record exists mechanism object.
%options is a list of key/value pairs representing any of the following options:
Creates a new SPF record exists mechanism object by parsing the string and
any options given.
The following class methods are provided:
Returns 'exists'.
Returns a regular expression that matches a mechanism name of 'exists'.
The following instance methods are provided:
Returns the domain-spec parameter of the mechanism.
Checks whether a DNS A record exists for the mechanism's target domain name,
and returns true if one does, or false otherwise. See RFC 4408, 5.7, for
details.
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::Exists # SPF record "exists" mechanism class. # # (C) 2005-2008 Julian Mehnle <julian@mehnle.net> # 2005 Shevek <cpan@anarres.org> # $Id: Exists.pm 50 2008-08-17 21:28:15Z Julian Mehnle $ # ############################################################################## package Mail::SPF::Mech::Exists;
use warnings; use strict; use base 'Mail::SPF::Mech'; use constant TRUE => (0 == 0); use constant FALSE => not TRUE; use constant name => 'exists'; use constant name_pattern => qr/${\name}/i;
sub parse_params { my ($self) = @_; $self->parse_domain_spec(TRUE); return; }
sub params { my ($self) = @_; return defined($self->{domain_spec}) ? ':' . $self->{domain_spec} : undef; }
# Make read-only accessor: __PACKAGE__->make_accessor('domain_spec', TRUE);
sub match { my ($self, $server, $request) = @_; $server->count_dns_interactive_term($request); my $domain = $self->domain($server, $request); my $packet = $server->dns_lookup($domain, 'A'); my @rrs = $packet->answer or $server->count_void_dns_lookup($request); foreach my $rr (@rrs) { return TRUE if $rr->type eq 'A'; } return FALSE; }
TRUE;