Thomas Preißler wrote:
Hey Mark,
thanks for your explanation!

I'm beginning to understand what is going on here.
Because you have a older version of Mail::DKIM, spamassassin is
unable to provide it with its own resolver, so Mail::DKIM does
it by directly calling Net::DNS, which uses IO::Socket::INET,
while the rest of the SpamAssassin's DNS resolving goes through
IO::Socket::IP. For some reason a TCP DNS request by Net::DNS
affects the socket used by IO::Socket::IP, making a variable
holding a string also get a numerical component, and moreover
it becomes tainted. In the end the getnameinfo() falls into
the snag. Weird...

The only way to fix this issue is to update Mail::DKIM? I’m gonna ask
the maintainer to upload an update to wheezy-backports.

Can't hurt to have an up-to-date version of Mail::DKIM.
There may be other workarounds, I'm still looking into the matter.

Here is a short indicator of the problem:

  perl -Te 'use Socket; use Devel::Peek; $s=$ENV{PATH};
    $s=0; $s="\2\0\0005\301\2\4\367\0\0\0\0\0\0\0\0";
    Devel::Peek::Dump($s); Socket::getnameinfo($s,0)'

It stumbles across 'addr is not a string' in getnameinfo
with perl 5.14 and 5.16.

The problem is solved with perl 5.18, 5.20, 5.21.5,
which deal with pPOK vs. POK flags somewhat differently.

  Mark

Reply via email to