The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Mail::SPF::Mech::Exists;

use strict;
use warnings;
use base 'Mail::SPF::Mech';

sub new {
	my $class = shift;
	my $self = $class->SUPER::new(@_);
	my $response = delete $self->{Response};
	$self->parse_domain_spec($response, 1);
	$self->parse_end($response);
	return $self;
}

sub interp {
	my ($self, $record, $request, $response) = @_;

	my $domain = $self->get_domain_spec($request, $response);
	return 1 unless $domain;
	my $packet = $record->{Server}->get_dns($domain, 'A');
	return undef unless $packet;
	foreach my $rr ($packet->answer) {
		if ($rr->type eq 'A') {
			$self->match($request, $response);
			return 1;
		}
	}

	return undef;
}

1;