Problem: I can run sa-learn as root, but not as any other user.

I'm using SpamAssassin version 3.2.4, running on Perl version 5.8.6, running on Mac OS X Server 10.4.11. All of this was working before I updated to SpamAssassin 3.2.4, but I updated a lot of other perl modules at the same time, so I can't be sure that SA itself is the culprit. Best as I can tell, this is some sort of permissions problem, but it's a real bugger because it's broken all of my sa-learn tools, most of which execute sa-learn as clamav.

Logged in as root:

# /usr/local/bin/sa-learn --dbpath /var/amavis/.spamassassin --sync
bayes: synced databases from journal in 1 seconds: 1565 unique entries (3164 total entries)

However, it doesn't work when executed as another user:

# sudo -u clamav /usr/local/bin/sa-learn --dbpath /var/ amavis/.spamassassin --sync Can't locate Pod/Simple.pm in @INC (@INC contains: /System/Library/ Perl/5.8.6/darwin-thread-multi-2level /System/Library/Perl/5.8.6 / Library/Perl/5.8.6/darwin-thread-multi-2level /Library/Perl/5.8.6 / Library/Perl /Network/Library/Perl/5.8.6/darwin-thread-multi-2level / Network/Library/Perl/5.8.6 /Network/Library/Perl /System/Library/Perl/ Extras/5.8.6/darwin-thread-multi-2level /System/Library/Perl/Extras/ 5.8.6 /Library/Perl/5.8.1/darwin-thread-multi-2level /Library/Perl/ 5.8.1) at /System/Library/Perl/5.8.6/Pod/Text.pm line 34. BEGIN failed--compilation aborted at /System/Library/Perl/5.8.6/Pod/ Text.pm line 34. Compilation failed in require at /System/Library/Perl/5.8.6/Pod/ Usage.pm line 436. BEGIN failed--compilation aborted at /System/Library/Perl/5.8.6/Pod/ Usage.pm line 443.
Compilation failed in require at /usr/local/bin/sa-learn line 26.
BEGIN failed--compilation aborted at /usr/local/bin/sa-learn line 26.

The @INC values are identical:

# perl -le 'print "@INC"'
/System/Library/Perl/5.8.6/darwin-thread-multi-2level /System/Library/ Perl/5.8.6 /Library/Perl/5.8.6/darwin-thread-multi-2level /Library/ Perl/5.8.6 /Library/Perl /Network/Library/Perl/5.8.6/darwin-thread- multi-2level /Network/Library/Perl/5.8.6 /Network/Library/Perl /System/ Library/Perl/Extras/5.8.6/darwin-thread-multi-2level /System/Library/ Perl/Extras/5.8.6 /Library/Perl/5.8.1/darwin-thread-multi-2level / Library/Perl/5.8.1 .

# sudo -u clamav perl -le 'print "@INC"'
/System/Library/Perl/5.8.6/darwin-thread-multi-2level /System/Library/ Perl/5.8.6 /Library/Perl/5.8.6/darwin-thread-multi-2level /Library/ Perl/5.8.6 /Library/Perl /Network/Library/Perl/5.8.6/darwin-thread- multi-2level /Network/Library/Perl/5.8.6 /Network/Library/Perl /System/ Library/Perl/Extras/5.8.6/darwin-thread-multi-2level /System/Library/ Perl/Extras/5.8.6 /Library/Perl/5.8.1/darwin-thread-multi-2level / Library/Perl/5.8.1 .

Permissions on the Bayes stuff are OK:

# ls -sla /var/amavis/.spamassassin
total 50024
    0 drwx------    6 clamav  amavis       204 Apr 22 00:23 .
    0 drwxr-x---   10 clamav  amavis       340 Apr 21 21:18 ..
19760 -rw------- 1 clamav amavis 10117120 Apr 22 00:23 auto- whitelist 32 -rw-rw-rw- 1 clamav amavis 14976 Apr 22 00:23 bayes_journal
20264 -rw-------    1 clamav  amavis  10375168 Apr 22 00:22 bayes_seen
 9968 -rw-rw-rw-    1 clamav  amavis   5103616 Apr 22 00:22 bayes_toks

Here's an interesting bit: if I start amavisd-new as the clamav user, it gives a similar error (it complains about a different perl module, but has the same error syntax). If I start amavisd-new as root, it works perfectly--even though it's configuration is such that it switches to the clamav user internally as it starts up! So, this problem is not limited to SA; I'm thinking it's something with perl...but all the modules in question are properly installed, I've even done a "force install" on them to be sure. Everything compiles, tests, and installs without a hitch.

Any ideas? I'm at a loss.

Thanks,
Jon

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to