Centos 5 with Perl 5.10.0 ConfigDefs.pl "strict refs" error

Hostmaster Hostmaster at computerservicecentre.com
Mon Jan 7 13:03:48 GMT 2008


Hi MailScanner users,

I have a fresh-built Centos 5 box, on which I have compiled Perl 5.10.0 from
source, and MailScanner 4.66.5 installed from RPM. Perl was upgraded after
MailScanner was installed. I know RPM should be an "all or nothing" decision 

 

The problem I have is that I noticed that the processes MailScanner was forking
when starting where dying instantly, and when running MailScanner --lint, it
dies with the error:

 

"Can't use string ("/var/spool/mqueue.in") as an ARRAY ref while "strict refs"
in use at /usr/sbin/MailScanner line 441."

 

"/var/spool/mqueue.in" is not my incoming directory, "/var/spool/exim.in" is,
and the mqueue.in directory does not exist. The correct incoming directory is
set in /etc/MailScanner/MailScanner.conf.

 

Using "locate MailScanner |xargs grep "mqueue.in" and some luck, I managed to
find that the mqueue reference was coming from
"/usr/lib/MailScanner/MailScanner/ConfigDefs.pl", so I hacked the "inqueuedir"
variable to point at the correct directory, but it doesn't change the error,
apart from the path within string().

 

My first thought was a missing perlmod dependency for MailScanner after the
upgrade of Perl, however MailScanner -v shows:

 

This is CentOS release 5 (Final)

This is Perl version 5.010000 (5.10.0)

 

This is MailScanner version 4.66.5

Module versions are:

1.00    AnyDBM_File

1.23    Archive::Zip

1.08    Carp

1.119   Convert::BinHex

2.27    Date::Parse

1.01    DirHandle

1.06    Fcntl

2.76    File::Basename

2.11    File::Copy

2.01    FileHandle

2.04    File::Path

0.20    File::Temp

0.92    Filesys::Df

1.35    HTML::Entities

3.56    HTML::Parser

2.37    HTML::TokeParser

1.23_01 IO

1.14    IO::File

1.13    IO::Pipe

2.02    Mail::Header

1.88    Math::BigInt

3.07_01 MIME::Base64

5.425   MIME::Decoder

5.425   MIME::Decoder::UU

5.425   MIME::Head

5.425   MIME::Parser

3.07    MIME::QuotedPrint

5.425   MIME::Tools

0.11    Net::CIDR

1.13    POSIX

1.19    Scalar::Util

1.80    Socket

1.4     Sys::Hostname::Long

0.24    Sys::Syslog

1.9711  Time::HiRes

1.02    Time::localtime

 

Optional module versions are:

1.38    Archive::Tar

0.22    bignum

2.03    Business::ISBN

1.17    Business::ISBN::Data

0.17    Convert::TNEF

1.08    Data::Dump

1.816_1 DB_File

1.14    DBD::SQLite

1.601   DBI

1.15    Digest

1.01    Digest::HMAC

2.36_01 Digest::MD5

2.11    Digest::SHA1

1.00    Encode::Detect

0.17011 Error

0.21    ExtUtils::CBuilder

2.18_02 ExtUtils::ParseXS

0.44    Inline

1.08    IO::String

1.07    IO::Zlib

2.23    IP::Country

missing Mail::ClamAV

3.002003        Mail::SpamAssassin

v2.005  Mail::SPF

1.999001        Mail::SPF::Query

0.21    Math::BigRat

0.280801        Module::Build

0.20    Net::CIDR::Lite

0.62    Net::DNS

v0.003  Net::DNS::Resolver::Programmable

missing Net::LDAP

 4.007  NetAddr::IP

1.94    Parse::RecDescent

missing SAVI

3.06    Test::Harness

1.22    Test::Manifest

2.0.0   Text::Balanced

1.35    URI

0.74    version

0.66    YAML

 

And running MailScanner in debug mode shows:

In Debugging mode, not forking...

Trying to setlogsock(unix)

SpamAssassin temp dir = /var/spool/MailScanner/incoming/SpamAssassin-Temp

Can't use string ("/var/spool/exim.in") as an ARRAY ref while "strict refs" in
use at /usr/sbin/MailScanner line 1385.

 

An strace of MailScanner while in debug mode shows the error:

 

"open("/root/.spamassassin/auto-whitelist.lock.mailscannerdevel.local.22409",
O_WRONLY|O_CREAT|O_EXCL|O_LARGEFILE, 0700) = 9

ioctl(9, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbff8cd58) = -1 ENOTTY (Inappropriate
ioctl for device)"

 

before it dies and writes out the error about line 1385, however I am not sure
what this means or even if it is relevant, and the references I can find for
"perl +'Inappropriate ioctl for device'" on the web don't really help. Locking
method in the MailScanner.conf is set to posix, as Exim is in use. Perl was
built to use perlio method for locks. I'm wondering whether the Filesys module
is doing or expecting something which MailScanner can't/isn't handle/ing?

 

Any hints would be greatly appreciated, but if the answer is "don't use perl
5.10.0 yet" or "you must have screwed up your compile of perl", that's fine I'll
roll back, but I am keen to try and fix this problem, as the reason for the
upgrade was to see whether the perl core improvements in 5.10.0 made much of a
difference to MailScanner performance in comparison to our live boxes running
5.8.0.

Best Regards, 

Richard Garner (A+, N+, AMBCS, MOS-O) 

All E-Mail communications are monitored in addition to being content checked for malicious codes or viruses. The success of scanning products is not guaranteed, therefore the recipient(s) should carry out any checks that they believe to be appropriate in this respect.

This message (including any attachments and/or related materials) is confidential to and is the property of Computer Service Centre, unless otherwise noted. If you are not the intended recipient, you should delete this message and are hereby notified that any disclosure, copying, or distribution of this message, or the taking of any action based on it, is strictly prohibited.

Any views or opinions presented are solely those of the author and do not necessarily represent those of Computer Service Centre.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.mailscanner.info/pipermail/mailscanner/attachments/20080107/11217075/attachment.html


More information about the MailScanner mailing list