#!/usr/bin/perl # -*- perl -*- # # $Id: rbllookup,v 1.1 1999/08/14 16:16:15 cm Exp $ # # look up IP address or hostname in the MAPS RBL, ORBS, or similiar DNS- # based spamblocking service. # use Net::DNS; use Socket; use Getopt::Std; %srv = ( "MAPS RBL" => "rbl.maps.vix.com.", "ORBS" => "relays.orbs.org.", "imrss" => "mr-out.imrss.org.", "imrss DSSL" => "dssl.imrss.org.", "MAPS DUL" => "dul.maps.vix.com.", "radparker RSS" => "relays.radparker.com."); $res = new Net::DNS::Resolver; $usage = "$0 [-d service] [-D domain] [-l] [-v] hostname | address\n"; &getopts("d:D:lv") || die "$usage"; if($opt_d) { die "-d and -D don't go together\n" if $opt_D; $srv{$opt_d} || die "No such service: \"$opt_d\"\n"; $domain = $srv{$opt_d}; } if($opt_D) { $domain = $opt_D; } if($opt_l) { foreach (sort keys %srv) { print "$_\t$srv{$_}\n"; } exit; } $verbose = $opt_v; while($name = shift) { ($addr = inet_aton($name)) || ($addr = gethostbyname($name)) || die "bad name: \"$name\"\n"; $rev = join(".", reverse(split(/\./, inet_ntoa($addr)))); foreach $srv ($domain ? $domain : keys %srv) { $d = ($domain || $srv{$srv}); print "querying $rev.$d ...\n" if $verbose; $query = $res->query("$rev.$d", "TXT"); if($query) { foreach $rr ($query->answer) { $rr->print; } } else { print "No match.\n"; } } } __END__ # # $Log: rbllookup,v $ # Revision 1.1 1999/08/14 16:16:15 cm # Initial revision # # Revision 1.2 1999/06/29 21:30:07 cm # some fixes, tnx to andreas pommer... # # Revision 1.1 1999/06/29 21:28:18 cm # Initial revision # #