
Ubuntu 14.04에서 spamassassin을 루트로 실행하고 있습니다. Check 또는 ReportSpam과 같은 메서드를 호출할 때 검사를 실행해야 하는 다른 사용자도 전달합니다. 그러나 권한 문제가 발생합니다.
spamd: Can't locate Mail/SpamAssassin/PerMsgLearner.pm:
Permission denied at /usr/share/perl5/Mail/SpamAssassin.pm line 644, <GEN14> line 7.
해당 Perl 스크립트의 644행을 보면 다른 Perl 파일을 가져오려고 시도합니다.
require Mail::SpamAssassin::PerMsgLearner;
이는 루트로 실행하는 문제가 아닙니다. 루트로 기능을 실행할 때의 문제는 (시간이 지남에 따라 스팸에 대해 학습하기 위한) bayes 파일이 존재하지 않는 디렉토리인 /nonexistent에 기록된다는 것입니다('nobody' 사용자의 홈 디렉토리입니다).
따라서 루트나 다른 사용자로서 SpamAssassin이 Bayes 파일을 디스크에 기록하도록 할 수 없으므로 학습 기능이 손상됩니다.
답변1
알고 보니 구성에 다음 줄을 추가한 /etc/mail/spamassassin
다음 spamassassin을 다시 컴파일해야 했습니다. 참고: 끝에 파일 이름을 포함하는 것이 중요합니다(예: bayes).
bayes_path /path/to/dir/bayes