Mail::SpamAssassin::DnsResolver

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
Mail::SpamAssassin::DUsersContributed Perl Mail::SpamAssassin::DnsResolver(3)



NAME
       Mail::SpamAssassin::DnsResolver - DNS resolution engine

DESCRIPTION
       This is a DNS resolution engine for SpamAssassin, implemented in order
       to reduce file descriptor usage by Net::DNS and avoid a response col-
       lision bug in that module.

METHODS
       $res->load_resolver()
	   Load the "Net::DNS::Resolver" object.  Returns 0 if Net::DNS can-
	   not be used, 1 if it is available.

       $resolver = $res->get_resolver()
	   Return the "Net::DNS::Resolver" object.

       $res->nameservers()
	   Wrapper for Net::DNS::Resolver->nameservers to get or set list of
	   nameservers

       $res->connect_sock()
	   Re-connect to the first nameserver listed in "/etc/resolv.conf" or
	   similar platform-dependent source, as provided by "Net::DNS".

       $res->get_sock()
	   Return the "IO::Socket::INET" object used to communicate with the
	   nameserver.

       $packet = new_dns_packet ($host, $type, $class)
	   A wrapper for "Net::DNS::Packet::new()" which traps a die thrown
	   by it.

	   To use this, change calls to "Net::DNS::Resolver::bgsend" from:

	       $res->bgsend($hostname, $type);

	   to:

	       $res->bgsend(Mail::SpamAssassin::DnsResolver::new_dns_packet($hostname, $type, $class));

       $id = $res->bgsend($host, $type, $class, $cb)
	   Quite similar to "Net::DNS::Resolver::bgsend", except that when a
	   response packet eventually arrives, and "poll_responses" is
	   called, the callback sub reference $cb will be called.

	   Note that $type and $class may be "undef", in which case they will
	   default to "A" and "IN", respectively.

	   The callback sub will be called with three arguments -- the packet
	   that was delivered, and an id string that fingerprints the query
	   packet and the expected reply. The third argument is a timestamp
	   (Unix time, floating point), captured at the time the packet was
	   collected. It is expected that a closure callback be used, like
	   so:

	     my $id = $self->{resolver}->bgsend($host, $type, undef, sub {
		   my ($reply, $reply_id, $timestamp) = @_;
		   $self->got_a_reply ($reply, $reply_id);
		 });

	   The callback can ignore the reply as an invalid packet sent to the
	   listening port if the reply id does not match the return value
	   from bgsend.

       $nfound = $res->poll_responses()
	   See if there are any "bgsend" response packets ready, and return
	   the number of such packets delivered to their callbacks.

       $res->bgabort()
	   Call this to release pending requests from memory, when aborting
	   backgrounded requests, or when the scan is complete.	 "Mail::Spa-
	   mAssassin::PerMsgStatus::check" calls this before returning.

       $packet = $res->send($name, $type, $class)
	   Emulates "Net::DNS::Resolver::send()".

       $res->errorstring()
	   Little more than a stub for callers expecting this from
	   "Net::DNS::Resolver".

	   If called immediately after a call to $res->send this will return
	   "query timed out" if the $res->send DNS query timed out.  Other-
	   wise "unknown error or no error" will be returned.

	   No other errors are reported.

       $res->finish_socket()
	   Reset socket when done with it.

       $res->finish()
	   Clean up for destruction.



perl v5.8.8			  2008-01-0Mail::SpamAssassin::DnsResolver(3)