Mailing List Archive

svn commit: r1917016 - /spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DNSEval.pm
Author: gbechis
Date: Tue Apr 16 09:32:28 2024
New Revision: 1917016

URL: http://svn.apache.org/viewvc?rev=1917016&view=rev
Log:
Honor uridnsbl_skip_domain in DNSEval
bz #8234

Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DNSEval.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DNSEval.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DNSEval.pm?rev=1917016&r1=1917015&r2=1917016&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DNSEval.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/DNSEval.pm Tue Apr 16 09:32:28 2024
@@ -38,6 +38,9 @@ DNSEVAL - look up URLs against DNS block
The DNSEval plugin queries dns to see if a domain or an ip address
present on one of email's headers is on a particular rbl.

+Any host or its domain part matching uridnsbl_skip_domains is ignored
+by default.
+
=cut

package Mail::SpamAssassin::Plugin::DNSEval;
@@ -554,6 +557,15 @@ sub check_rbl_ns_from {
my $ent = {
rulename => $rule, zone => $domain, obj => $obj, type => "URI-NS",
};
+ if (exists $pms->{conf}->{uridnsbl_skip_domains}->{lc $domain}) {
+ dbg("dnseval: query skipped, uridnsbl_skip_domains: $domain");
+ return 0;
+ }
+ my $dom = $pms->{main}->{registryboundaries}->trim_domain($domain);
+ if (exists $pms->{conf}->{uridnsbl_skip_domains}->{lc $dom}) {
+ dbg("dnseval: query skipped, uridnsbl_skip_domains: $domain");
+ return 0;
+ }
# dig $dom ns
my $ret = $pms->{async}->bgsend_and_start_lookup(
$domain, 'NS', undef, $ent,
@@ -694,6 +706,15 @@ sub _check_rbl_addresses {
next if ($pms->{conf}->{tflags}->{$rule}||'') =~ /\bips_only\b/;
next unless is_fqdn_valid($host);
next unless $pms->{main}->{registryboundaries}->is_domain_valid($host);
+ if (exists $pms->{conf}->{uridnsbl_skip_domains}->{lc $host}) {
+ dbg("dnseval: query skipped, uridnsbl_skip_domains: $host");
+ next;
+ }
+ my $dom = $pms->{main}->{registryboundaries}->trim_domain($host);
+ if (exists $pms->{conf}->{uridnsbl_skip_domains}->{lc $dom}) {
+ dbg("dnseval: query skipped, uridnsbl_skip_domains: $host");
+ next;
+ }
}
dbg("dnseval: checking [$host] / $rule / $set / $rbl_server");
my $ret = $pms->do_rbl_lookup($rule, $set, 'A', "$host.$rbl_server", $subtest);
@@ -727,6 +748,15 @@ sub check_dns_sender {
}

$host = idn_to_ascii($host);
+ if (exists $pms->{conf}->{uridnsbl_skip_domains}->{lc $host}) {
+ dbg("dnseval: query skipped, uridnsbl_skip_domains: $host");
+ return 0;
+ }
+ my $dom = $pms->{main}->{registryboundaries}->trim_domain($host);
+ if (exists $pms->{conf}->{uridnsbl_skip_domains}->{lc $host}) {
+ dbg("dnseval: query skipped, uridnsbl_skip_domains: $host");
+ return 0;
+ }
dbg("dnseval: checking A and MX for host $host");

my $queries;