A causa
A causa é que o spamassassin (que é chamado por sa-learn, spamc, spamd, spampd etc), tenta ler um arquivo de configuração por usuário de $ HOME.
Isso acontece mesmo se a opção de configuração allow_user_rules estiver configurada como 0 (isto é provavelmente um bug e está em volta de um tempo longo ) ).
Como não pode encontrar esta pasta (por causa das permissões), ela tenta criar a pasta.
Como aqueles que executam o sa-learn dentro de um cron sabem que isso é muito chato, já que recebemos um e-mail de falha mesmo de uma execução bem-sucedida. Apenas acesse o erro config: path "/root/.spamassassin" está inacessível: Permissão negada e veja quantas pessoas isso afeta (e as correções inseguras que elas sugerem). A única solução segura para o cron foi ignora-lo e canalizar stdout e stderr para / dev / null, mas isso é um pouco extremo.
Ele faz isso independentemente de quais opções -C ou -p ou --dbpath são passadas, então você não pode consertá-lo nas opções de linha de comando ou na configuração global.
A correção
A solução, que funcionou para mim, é chamar sa-learn e passar uma variável de ambiente $ HOME temporária apontando para um local onde o usuário não-root executando o spamassassin pode escrever, no meu caso isso é / var / cache / spampd:
por exemplo,
HOME=/var/cache/spampd sa-learn --spam /var/vmail/jason/.SPAM/cur