Heh, I was going through this code a week or so ago and thought this looked odd...
I'll apply the patch. On Thu, 12 Jun 2008 14:53:22 +0200, Jose Luis Martinez wrote: > Hi, > > We're using the require_resolvable_fromhost plugin, and have seen > that there is a bug in it. MAIL FROM commands with legitimate > domains where getting rejected as not resolvable. > > The bug has been tracked down to domains that have zone files with > unresolvable MX records. > > example.com. 3600 IN MX 10 fakeserver.example.com. > example.com. 3600 IN MX 20 mail.example.com. > example.com. 3600 IN MX 30 anotherfakeserver.example.com. > > The plugin tries to resolve every MX record in the list (to see if it > has an A record), but gives up on the first unresolvable one, > considering the whole domain unresolvable. > > I consider this a bug, as leaving fake MX records is a known antispam > technique, and after all, the domain is resolvable if you have at > least one resolvable MX record. > > Patch attached: > > Index: plugins/require_resolvable_fromhost > =================================================================== > --- plugins/require_resolvable_fromhost (revision 1) > +++ plugins/require_resolvable_fromhost (working copy) > @@ -53,8 +53,14 @@ > $res->udp_timeout(30); > my @mx = mx($res, $host); > foreach my $mx (@mx) { > - return mx_valid($self, $mx->exchange, $host); > + # if any MX is valid, then we consider the domain > + # resolvable > + return 1 if mx_valid($self, $mx->exchange, $host); > } > + # if there are MX records, and we got here, > + # then none of them are valid > + return 0 if (@mx > 0); > + > my $query = $res->search($host); > if ($query) { > foreach my $rrA ($query->answer) { > > > Jose Luis Martinez > [EMAIL PROTECTED] > CAPSiDE >