--On Friday, March 04, 2005 9:52 AM -0500 Troy Carpenter <[EMAIL PROTECTED]> wrote:

How are you testing for this?  I've been wanting to do this for
a while, since my backup MX queue is always full of junk trying to
be sent back...

I didn't see the original message on the list. Here's my implementation:

use Net::DNS;

sub GetHostAddresses ($$) {
       my ($resolver,$hostname) = @_;
       my @addresses;
       my $received = $resolver->search($hostname);
       foreach my $rr ($received->answer) {
               next unless $rr->type eq "A";
               push(@addresses, $rr->address);
       }
       return @addresses;
}

# GetDomainMXAddresses(resolver,domain)
# returns array of IP addresses for domain's MX list
# if no MX records, returns array of IP addresses for this hostname

sub GetDomainMXAddresses ($$) {
my ($resolver,$domain) = @_;
my @mxlist = mx($resolver, $domain);
my @mxaddresses;
if (@mxlist) {
push(@mxaddresses, map { GetHostAddresses($resolver, $_->exchange); } @mxlist);
} else { # check for an A record for the domain...
push(@mxaddresses, GetHostAddresses($resolver, $domain));
}
return @mxaddresses;
}


# MTA_is_domain_MX(domain,address)
# returns TRUE if address is a MX for domain

sub MTA_is_domain_MX ($$) {
my ($domain,$address) = @_;
return grep { /^$address$/ } GetDomainMXAddresses(Net::DNS::Resolver->new, $domain);
}


#Usage:
       if (MTA_is_domain_MX($MyDomain,$RelayAddr)) {
               # don't pester mx backup
               return action_discard();
       } else {
               return action_bounce($message);
       }



_______________________________________________
Visit http://www.mimedefang.org and http://www.canit.ca
MIMEDefang mailing list
[email protected]
http://lists.roaringpenguin.com/mailman/listinfo/mimedefang

Reply via email to