> -----Original Message----- > From: Mike Batchelor [mailto:[EMAIL PROTECTED]
> I want to reject mail for domains that resolve to 127.0.0.1 or that > have MX records with hostnames that resolve to 127.0.0.1. I have tons > of double bounces due to "MX loops back to me" because the damn sender > domain resolves to localhost. Any ideas how to proceed? Does > mimedefang provide any functions along these lines, or do I need to > dig (haha!) into Net::DNS to do this? WARNING, I just threw this together. It's not fully tested, although the queries are pretty much direct copies from man Net::DNS. I have no idea what this will do to load on a real server. sub local_get_mx($) { # # Procedure local_get_mx # arguments: # $name: either a domain name or an e-mail address # returns: # array of IP addresses of all MX servers for a # domain. # If there are no MX records, will return IP # addresses of domain # If there are no MX or A records, and/or domain # doesn't exist, will return an empty array. use Net::DNS; my ($name) = @_; $name =~ s/^.*\@//; $name =~ s/\>$//; my $res = Net::DNS::Resolver->new; my @mx = mx($res, $name); my @mxservers; my @mxip; if (@mx) { foreach $rr (@mx) { my $mxs = $rr->exchange; push( @mxservers, $mxs); } } else { if ($res->errorstring eq "NOERROR") { push ( @mxservers, $name); } } foreach $mh (@mxservers) { my $query = $res->send($mh); if ($query) { foreach my $rr ($query->answer) { next unless $rr->type eq "A"; push(@mxip, $rr->address); } } } return @mxip; } # An example of how to use: my @mxhosts = local_get_mx($Sender); foreach $mxh (@mxhosts) { if ( $mxh eq "127.0.0.1") { # code to run when it matches goes here } else { # code to run when it doesn't match goes here } } _______________________________________________ Visit http://www.mimedefang.org and http://www.canit.ca MIMEDefang mailing list [EMAIL PROTECTED] http://lists.roaringpenguin.com/mailman/listinfo/mimedefang