Stefan, > I'm in the progress of setting up a new Server with amavisd-new and > spamassassin. I like to run the recent versions of this programms, but > therefore I need some perl modules from cpan (e.g. IP::Country::Fast), > because they are not in the repository of my distribution (SLES 11). > The guy who installed these modules, installed them in /usr/local/perl/ > and they should be available in perl: > # perl -V > Summary of my perl5 (revision 5 version 10 subversion 0) configuration: > (...) > %ENV: > PERL5LIB="/usr/local/perl/lib:/usr/local/perl/lib/arch" > @INC: > /usr/local/perl/lib > /usr/local/perl/lib/arch > /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi > /usr/lib/perl5/5.10.0 > /usr/lib/perl5/site_perl/5.10.0/x86_64-linux-thread-multi > /usr/lib/perl5/site_perl/5.10.0 > /usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl/5.10.0 > /usr/lib/perl5/vendor_perl > > # perl -we 'use IP::Country::Fast; print $IP::Country::Fast::VERSION,"\n"' > 604.001 > > But spamassassin (and amavisd) doesn't find the additional modules. > > [9427] dbg: metadata: failed to load 'IP::Country::Fast', skipping (Can't > locate IP/Country/Fast.pm in @INC (@INC contains: lib > /usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl/5.10.0 > /usr/lib/perl5/5.10.0/x86_64-linux-thread- multi /usr/lib/perl5/5.10.0 > /usr/lib/perl5/site_perl/5.10.0/x86_64-linux- thread-multi > /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl) at > /usr/lib/perl5/vendor_perl/5.10.0/Mail/SpamAssassin/Plugin/RelayCountry.pm > line 68.
amavisd does not modify @INC nor use the 'use lib' pragma/module. > %ENV: > PERL5LIB="/usr/local/perl/lib:/usr/local/perl/lib/arch" Note that amavisd runs in taint mode, so this will be ignored by perl according to its perlrun documentation: PERL5LIB A list of directories in which to look for Perl library files before looking in the standard library and the current directory. Any architecture-specific directories under the specified locations are automatically included if they exist. If PERL5LIB is not defined, PERLLIB is used. Directories are separated (like in PATH) by a colon on unixish platforms and by a semicolon on Windows (the proper path separator being given by the command perl -V:path_sep). When running taint checks (either because the program was running setuid or setgid, or the -T switch was used), neither variable is used. The program should instead say: use lib "/my/directory"; > My question is now: How can I tell spamassassin to use the right (modified) > @INC array? It would be simplest to install missing modules in one of the perl-default directories, such as /usr/lib/perl5/site_perl/5.10.0/ . Or try adding: use lib "your-directory" at the start of file amavisd. Mark