Hello,
With the update to 3.1 some changes in perl broke the dns resolving
capabilities of SpamAssassin.
Although the fault lies within SpamAssassin itself, and it should be on
their end to fix/update it. Still I created a patch that will let
SpamAssassin 3.4 use DNSBL and general dns lookups properly again.
I cant guarantee it solves all cases but it worked just fine here.
Johan
--- SpamAssassin/DnsResolver.pm.bak
+++ SpamAssassin/DnsResolver.pm
@@ -204,8 +204,10 @@
@ns_addr_port = @{$self->{conf}->{dns_servers}};
dbg("dns: servers set by config to: %s", join(', ',@ns_addr_port));
} elsif ($res) { # default as provided by Net::DNS, e.g.
/etc/resolv.conf
- @ns_addr_port = map(untaint_var("[$_]:" . $res->{port}),
- @{$res->{nameservers}});
+ my @ns = $res->UNIVERSAL::can('nameservers') ? $res->nameservers
+ :
@{$res->{nameservers}};
+ my $port = $res->UNIVERSAL::can('port') ? $res->port :
$res->{port};
+ @ns_addr_port = map(untaint_var("[$_]:" . $port), @ns);
dbg("dns: servers obtained from Net::DNS : %s", join(',
',@ns_addr_port));
}
return @ns_addr_port;
On mer, 2014-12-17 at 11:49 +0200, Johan Dahlberg wrote:
> --- SpamAssassin/DnsResolver.pm.bak> +++ SpamAssassin/DnsResolver.pm> @@ -204,8 +204,10 @@> @ns_addr_port = @{$self->{conf}->{dns_servers}};> dbg("dns: servers set by config to: %s", join(',> ',@ns_addr_port));> } elsif ($res) { # default as provided by Net::DNS, e.g.> /etc/resolv.conf> - @ns_addr_port = map(untaint_var("[$_]:" . $res->{port}),> - @{$res->{nameservers}});> + my @ns = $res->UNIVERSAL::can('nameservers') ? $res->nameservers> + :> @{$res->{nameservers}};> + my $port = $res->UNIVERSAL::can('port') ? $res->port :> $res->{port};> + @ns_addr_port = map(untaint_var("[$_]:" . $port), @ns);> dbg("dns: servers obtained from Net::DNS : %s", join(',> ',@ns_addr_port));> }> return @ns_addr_port;
Hi,
thanks for your contribution.
Would it be possible to have a GIT patch? It would be easier and 100%
error-free to apply.
Thanks!
R,
leo
On Mon, 22 Dec 2014 at 17:12:13, Leonardo Arena wrote:
> On mer, 2014-12-17 at 11:49 +0200, Johan Dahlberg wrote:> > --- SpamAssassin/DnsResolver.pm.bak> > +++ SpamAssassin/DnsResolver.pm> > @@ -204,8 +204,10 @@> > @ns_addr_port = @{$self->{conf}->{dns_servers}};> > dbg("dns: servers set by config to: %s", join(',> > ',@ns_addr_port));> > } elsif ($res) { # default as provided by Net::DNS, e.g.> > /etc/resolv.conf> > - @ns_addr_port = map(untaint_var("[$_]:" . $res->{port}),> > - @{$res->{nameservers}});> > + my @ns = $res->UNIVERSAL::can('nameservers') ? $res->nameservers> > + :> > @{$res->{nameservers}};> > + my $port = $res->UNIVERSAL::can('port') ? $res->port :> > $res->{port};> > + @ns_addr_port = map(untaint_var("[$_]:" . $port), @ns);> > dbg("dns: servers obtained from Net::DNS : %s", join(',> > ',@ns_addr_port));> > }> > return @ns_addr_port;> > > Hi,> thanks for your contribution.> Would it be possible to have a GIT patch? It would be easier and 100%> error-free to apply.> Thanks!> > R,> leo
Hello, I'm not so used to working with git, but I think the attached
patch is correct.
Johan
On Mon, 22 Dec 2014 at 19:05:29, Johan Dahlberg wrote:
> On Mon, 22 Dec 2014 at 17:12:13, Leonardo Arena wrote:> > On mer, 2014-12-17 at 11:49 +0200, Johan Dahlberg wrote:> > > --- SpamAssassin/DnsResolver.pm.bak> > > +++ SpamAssassin/DnsResolver.pm> > > @@ -204,8 +204,10 @@> > > @ns_addr_port = @{$self->{conf}->{dns_servers}};> > > dbg("dns: servers set by config to: %s", join(',> > > ',@ns_addr_port));> > > } elsif ($res) { # default as provided by Net::DNS, e.g.> > > /etc/resolv.conf> > > - @ns_addr_port = map(untaint_var("[$_]:" . $res->{port}),> > > - @{$res->{nameservers}});> > > + my @ns = $res->UNIVERSAL::can('nameservers') ? $res->nameservers> > > + :> > > @{$res->{nameservers}};> > > + my $port = $res->UNIVERSAL::can('port') ? $res->port :> > > $res->{port};> > > + @ns_addr_port = map(untaint_var("[$_]:" . $port), @ns);> > > dbg("dns: servers obtained from Net::DNS : %s", join(',> > > ',@ns_addr_port));> > > }> > > return @ns_addr_port;> > > > > > Hi,> > thanks for your contribution.> > Would it be possible to have a GIT patch? It would be easier and 100%> > error-free to apply.> > Thanks!> > > > R,> > leo> > Hello, I'm not so used to working with git, but I think the attached> patch is correct.> > Johan> diff --git a/lib/Mail/SpamAssassin/DnsResolver.pm.orig b/lib/Mail/SpamAssassin/DnsResolver.pm> index 41ae81c..fdc1e5e 100644> --- a/lib/Mail/SpamAssassin/DnsResolver.pm.orig> +++ b/lib/Mail/SpamAssassin/DnsResolver.pm> @@ -204,8 +204,10 @@ sub configured_nameservers {> @ns_addr_port = @{$self->{conf}->{dns_servers}};> dbg("dns: servers set by config to: %s", join(', ',@ns_addr_port));> } elsif ($res) { # default as provided by Net::DNS, e.g. /etc/resolv.conf> - @ns_addr_port = map(untaint_var("[$_]:" . $res->{port}),> - @{$res->{nameservers}});> + my @ns = $res->UNIVERSAL::can('nameservers') ? $res->nameservers> + : @{$res->{nameservers}};> + my $port = $res->UNIVERSAL::can('port') ? $res->port : $res->{port};> + @ns_addr_port = map(untaint_var("[$_]:" . $port), @ns);> dbg("dns: servers obtained from Net::DNS : %s", join(', ',@ns_addr_port));> }> return @ns_addr_port;
I took some time to figure out git a bit so I guess the following
attached patch is more accurate(?).
Regards,
Johan
On lun, 2014-12-22 at 21:11 +0200, Johan Dahlberg wrote:
> On Mon, 22 Dec 2014 at 19:05:29, Johan Dahlberg wrote:> > On Mon, 22 Dec 2014 at 17:12:13, Leonardo Arena wrote:> > > On mer, 2014-12-17 at 11:49 +0200, Johan Dahlberg wrote:> > > > --- SpamAssassin/DnsResolver.pm.bak> > > > +++ SpamAssassin/DnsResolver.pm> > > > @@ -204,8 +204,10 @@> > > > @ns_addr_port = @{$self->{conf}->{dns_servers}};> > > > dbg("dns: servers set by config to: %s", join(',> > > > ',@ns_addr_port));> > > > } elsif ($res) { # default as provided by Net::DNS, e.g.> > > > /etc/resolv.conf> > > > - @ns_addr_port = map(untaint_var("[$_]:" . $res->{port}),> > > > - @{$res->{nameservers}});> > > > + my @ns = $res->UNIVERSAL::can('nameservers') ? $res->nameservers> > > > + :> > > > @{$res->{nameservers}};> > > > + my $port = $res->UNIVERSAL::can('port') ? $res->port :> > > > $res->{port};> > > > + @ns_addr_port = map(untaint_var("[$_]:" . $port), @ns);> > > > dbg("dns: servers obtained from Net::DNS : %s", join(',> > > > ',@ns_addr_port));> > > > }> > > > return @ns_addr_port;> > > > > > > > > Hi,> > > thanks for your contribution.> > > Would it be possible to have a GIT patch? It would be easier and 100%> > > error-free to apply.> > > Thanks!> > > > > > R,> > > leo> > > > Hello, I'm not so used to working with git, but I think the attached> > patch is correct.> > > > Johan> > > diff --git a/lib/Mail/SpamAssassin/DnsResolver.pm.orig b/lib/Mail/SpamAssassin/DnsResolver.pm> > index 41ae81c..fdc1e5e 100644> > --- a/lib/Mail/SpamAssassin/DnsResolver.pm.orig> > +++ b/lib/Mail/SpamAssassin/DnsResolver.pm> > @@ -204,8 +204,10 @@ sub configured_nameservers {> > @ns_addr_port = @{$self->{conf}->{dns_servers}};> > dbg("dns: servers set by config to: %s", join(', ',@ns_addr_port));> > } elsif ($res) { # default as provided by Net::DNS, e.g. /etc/resolv.conf> > - @ns_addr_port = map(untaint_var("[$_]:" . $res->{port}),> > - @{$res->{nameservers}});> > + my @ns = $res->UNIVERSAL::can('nameservers') ? $res->nameservers> > + : @{$res->{nameservers}};> > + my $port = $res->UNIVERSAL::can('port') ? $res->port : $res->{port};> > + @ns_addr_port = map(untaint_var("[$_]:" . $port), @ns);> > dbg("dns: servers obtained from Net::DNS : %s", join(', ',@ns_addr_port));> > }> > return @ns_addr_port;> > > > > I took some time to figure out git a bit so I guess the following> attached patch is more accurate(?).> > Regards,> Johan
Thanks.
I applied it to edge, can you please check that it works as expected?
Then I can backport it to 3.1-stable.
For future patches it would be nice to have a GIT patch against aports
tree. It would be more straightforward to apply them.
Thanks!
- leo
On gio, 2014-12-25 at 13:32 +0200, Johan Dahlberg wrote:
> On Thu, 25 Dec 2014 at 10:55:08, Leonardo Arena wrote:> > On lun, 2014-12-22 at 21:11 +0200, Johan Dahlberg wrote:> > > On Mon, 22 Dec 2014 at 19:05:29, Johan Dahlberg wrote:> > > > On Mon, 22 Dec 2014 at 17:12:13, Leonardo Arena wrote:> > > > > On mer, 2014-12-17 at 11:49 +0200, Johan Dahlberg wrote:> > > > > > --- SpamAssassin/DnsResolver.pm.bak> > > > > > +++ SpamAssassin/DnsResolver.pm> > > > > > @@ -204,8 +204,10 @@> > > > > > @ns_addr_port = @{$self->{conf}->{dns_servers}};> > > > > > dbg("dns: servers set by config to: %s", join(',> > > > > > ',@ns_addr_port));> > > > > > } elsif ($res) { # default as provided by Net::DNS, e.g.> > > > > > /etc/resolv.conf> > > > > > - @ns_addr_port = map(untaint_var("[$_]:" . $res->{port}),> > > > > > - @{$res->{nameservers}});> > > > > > + my @ns = $res->UNIVERSAL::can('nameservers') ? $res->nameservers> > > > > > + :> > > > > > @{$res->{nameservers}};> > > > > > + my $port = $res->UNIVERSAL::can('port') ? $res->port :> > > > > > $res->{port};> > > > > > + @ns_addr_port = map(untaint_var("[$_]:" . $port), @ns);> > > > > > dbg("dns: servers obtained from Net::DNS : %s", join(',> > > > > > ',@ns_addr_port));> > > > > > }> > > > > > return @ns_addr_port;> > > > > > > > > > > > > > > Hi,> > > > > thanks for your contribution.> > > > > Would it be possible to have a GIT patch? It would be easier and 100%> > > > > error-free to apply.> > > > > Thanks!> > > > > > > > > > R,> > > > > leo> > > > > > > > Hello, I'm not so used to working with git, but I think the attached> > > > patch is correct.> > > > > > > > Johan> > > > > > > diff --git a/lib/Mail/SpamAssassin/DnsResolver.pm.orig b/lib/Mail/SpamAssassin/DnsResolver.pm> > > > index 41ae81c..fdc1e5e 100644> > > > --- a/lib/Mail/SpamAssassin/DnsResolver.pm.orig> > > > +++ b/lib/Mail/SpamAssassin/DnsResolver.pm> > > > @@ -204,8 +204,10 @@ sub configured_nameservers {> > > > @ns_addr_port = @{$self->{conf}->{dns_servers}};> > > > dbg("dns: servers set by config to: %s", join(', ',@ns_addr_port));> > > > } elsif ($res) { # default as provided by Net::DNS, e.g. /etc/resolv.conf> > > > - @ns_addr_port = map(untaint_var("[$_]:" . $res->{port}),> > > > - @{$res->{nameservers}});> > > > + my @ns = $res->UNIVERSAL::can('nameservers') ? $res->nameservers> > > > + : @{$res->{nameservers}};> > > > + my $port = $res->UNIVERSAL::can('port') ? $res->port : $res->{port};> > > > + @ns_addr_port = map(untaint_var("[$_]:" . $port), @ns);> > > > dbg("dns: servers obtained from Net::DNS : %s", join(', ',@ns_addr_port));> > > > }> > > > return @ns_addr_port;> > > > > > > > > > > > > > > I took some time to figure out git a bit so I guess the following> > > attached patch is more accurate(?).> > > > > > Regards,> > > Johan> > > > Thanks.> > I applied it to edge, can you please check that it works as expected?> > Then I can backport it to 3.1-stable.> > > > For future patches it would be nice to have a GIT patch against aports> > tree. It would be more straightforward to apply them.> > Thanks!> > > > - leo> > I will test is as soon as the package shows up on the mirrors.> > However I have a problem downloading your aports git, getting the> following several times now:> > #> git clone http://git.alpinelinux.org/cgit/aports/> > # Cloning into 'aports'...> # error: Unable to get pack file> # http://git.alpinelinux.org/cgit/aports/objects/pack/pack-1f504ab51e1954e77d4841ca04d0a395bec1e1af.pack> # Recv failure: Connection timed out> # error: Unable to find e24b2cb6f0edf60b9bc766902715f25076ad591a under> # http://git.alpinelinux.org/cgit/aports> # Cannot obtain needed tree e24b2cb6f0edf60b9bc766902715f25076ad591a> # while processing commit 934775c391ac937f8c7a4f952cc7498df51abd7e.> # error: fetch failed.> > It's temporary perhaps. Are there any mirrors?
May be is a web server issue. Have you tried
git://git.alpinelinux.org/cgit/aports/ ?
> If I have any future patches I will create them against the aports tree.
Thanks!
On Thu, 25 Dec 2014 at 10:55:08, Leonardo Arena wrote:
> On lun, 2014-12-22 at 21:11 +0200, Johan Dahlberg wrote:> > On Mon, 22 Dec 2014 at 19:05:29, Johan Dahlberg wrote:> > > On Mon, 22 Dec 2014 at 17:12:13, Leonardo Arena wrote:> > > > On mer, 2014-12-17 at 11:49 +0200, Johan Dahlberg wrote:> > > > > --- SpamAssassin/DnsResolver.pm.bak> > > > > +++ SpamAssassin/DnsResolver.pm> > > > > @@ -204,8 +204,10 @@> > > > > @ns_addr_port = @{$self->{conf}->{dns_servers}};> > > > > dbg("dns: servers set by config to: %s", join(',> > > > > ',@ns_addr_port));> > > > > } elsif ($res) { # default as provided by Net::DNS, e.g.> > > > > /etc/resolv.conf> > > > > - @ns_addr_port = map(untaint_var("[$_]:" . $res->{port}),> > > > > - @{$res->{nameservers}});> > > > > + my @ns = $res->UNIVERSAL::can('nameservers') ? $res->nameservers> > > > > + :> > > > > @{$res->{nameservers}};> > > > > + my $port = $res->UNIVERSAL::can('port') ? $res->port :> > > > > $res->{port};> > > > > + @ns_addr_port = map(untaint_var("[$_]:" . $port), @ns);> > > > > dbg("dns: servers obtained from Net::DNS : %s", join(',> > > > > ',@ns_addr_port));> > > > > }> > > > > return @ns_addr_port;> > > > > > > > > > > > Hi,> > > > thanks for your contribution.> > > > Would it be possible to have a GIT patch? It would be easier and 100%> > > > error-free to apply.> > > > Thanks!> > > > > > > > R,> > > > leo> > > > > > Hello, I'm not so used to working with git, but I think the attached> > > patch is correct.> > > > > > Johan> > > > > diff --git a/lib/Mail/SpamAssassin/DnsResolver.pm.orig b/lib/Mail/SpamAssassin/DnsResolver.pm> > > index 41ae81c..fdc1e5e 100644> > > --- a/lib/Mail/SpamAssassin/DnsResolver.pm.orig> > > +++ b/lib/Mail/SpamAssassin/DnsResolver.pm> > > @@ -204,8 +204,10 @@ sub configured_nameservers {> > > @ns_addr_port = @{$self->{conf}->{dns_servers}};> > > dbg("dns: servers set by config to: %s", join(', ',@ns_addr_port));> > > } elsif ($res) { # default as provided by Net::DNS, e.g. /etc/resolv.conf> > > - @ns_addr_port = map(untaint_var("[$_]:" . $res->{port}),> > > - @{$res->{nameservers}});> > > + my @ns = $res->UNIVERSAL::can('nameservers') ? $res->nameservers> > > + : @{$res->{nameservers}};> > > + my $port = $res->UNIVERSAL::can('port') ? $res->port : $res->{port};> > > + @ns_addr_port = map(untaint_var("[$_]:" . $port), @ns);> > > dbg("dns: servers obtained from Net::DNS : %s", join(', ',@ns_addr_port));> > > }> > > return @ns_addr_port;> > > > > > > > > > I took some time to figure out git a bit so I guess the following> > attached patch is more accurate(?).> > > > Regards,> > Johan> > Thanks.> I applied it to edge, can you please check that it works as expected?> Then I can backport it to 3.1-stable.> > For future patches it would be nice to have a GIT patch against aports> tree. It would be more straightforward to apply them.> Thanks!> > - leo
I will test is as soon as the package shows up on the mirrors.
However I have a problem downloading your aports git, getting the
following several times now:
#> git clone http://git.alpinelinux.org/cgit/aports/
# Cloning into 'aports'...
# error: Unable to get pack file
# http://git.alpinelinux.org/cgit/aports/objects/pack/pack-1f504ab51e1954e77d4841ca04d0a395bec1e1af.pack
# Recv failure: Connection timed out
# error: Unable to find e24b2cb6f0edf60b9bc766902715f25076ad591a under
# http://git.alpinelinux.org/cgit/aports
# Cannot obtain needed tree e24b2cb6f0edf60b9bc766902715f25076ad591a
# while processing commit 934775c391ac937f8c7a4f952cc7498df51abd7e.
# error: fetch failed.
It's temporary perhaps. Are there any mirrors?
If I have any future patches I will create them against the aports tree.
Regards,
Johan
On ven, 2014-12-26 at 03:28 +0200, Johan Dahlberg wrote:
[snip]
> The patched spamassassin is working as expected.> > DNSBL lookups and scoring are all accurate. So I think you can push this> to the main repo.
Backported to 3.1-stable.
Thanks!
- leo