SpamAssassin tentando ler arquivos de configuração em / root /

3

Eu tenho servidores de gateway de correio configurados para usar o MailScanner + Postfix + SpamAssassin conforme descrito aqui , junto com MailWatch como um front-end da Web.

Quando o sa-learn é executado a partir do MailWatch (ele é executado como o usuário postfix), ele gera este erro:

SA Learn: config: path "/root/.spamassassin" is inaccessible: Permission denied, Learned tokens from 0 message(s) (1 message(s) examined)

Rodando "sudo -u postfix spamassassin --lint -D" dá esta informação:

dbg: config: read file /etc/mail/spamassassin/mailscanner.cf
warn: config: path "/root/.spamassassin" is inaccessible: Permission denied
dbg: config: mkdir /root/.spamassassin failed: mkdir /root/.spamassassin: Permission denied at /usr/lib/perl5/site_perl/5.8.8/Mail/SpamAssassin.pm line 1577
dbg: config: Permission denied
dbg: config: using "/etc/MailScanner/spam.assassin.prefs.conf" for user prefs file

Os tokens bayes são aprendidos corretamente, entretanto este erro é um aborrecimento menor e eu gostaria de consertá-lo ... Ou forçando o SpamAssassin a não verificar o diretório /root/.spamassassin/ para o config & prefs, ou para consertar o MailWatch para que ele chame sa-learn corretamente & não lança esse erro.

    
por gharper 25.06.2009 / 21:42

6 respostas

2

A correção real é desabilitar a configuração "por usuário" no spamassassin e definir globalmente o Baysean DB, mas um patch rápido seria adicionar a opção "-H" ao sudo para usar o diretório inicial do postfix onde ele deveria ter permissão para escrever como postfix.

    
por 26.06.2009 / 14:02
1

Isso pode ser uma solução alternativa:

# chmod o+x /root
# mv -f /root/.spamassassin /root/.spamassassin.err
# ln -s /var/spool/MailScanner/spamassassin /root/.spamassassin
# mkdir -p /var/spool/MailScanner/spamassassin
# chown postfix.apache /var/spool/MailScanner/spamassassin
# chmod 770 /var/spool/MailScanner/spamassassin
    
por 26.07.2009 / 10:18
1

Isso não é um bug porque você está executando o comando sa-learn com um usuário inválido. Por exemplo, minha configuração usa o usuário debian-spamd padrão.

# sa-learn -u debian-spamd --dbpath /var/lib/spamassassin/.spamassassin/bayes --dump magic
0.000          0          3          0  non-token data: bayes db version
0.000          0         84          0  non-token data: nspam
0.000          0       6565          0  non-token data: nham
0.000          0      15128          0  non-token data: ntokens
0.000          0 1510837441          0  non-token data: oldest atime
0.000          0 1519232775          0  non-token data: newest atime
0.000          0          0          0  non-token data: last journal sync atime
0.000          0          0          0  non-token data: last expiry atime
0.000          0          0          0  non-token data: last expire atime delta
0.000          0          0          0  non-token data: last expire reduction count

E para contas

# sa-learn --ham -u debian-spamd --showdots --dir /var/vmail/mydomain.com/support/cur/*
.
Learned tokens from 1 message(s) (1 message(s) examined)

Eu tenho 20 contas de email no servidor e crons para corresponder a ham e spam e nunca o erro. Certifique-se de que seu grupo setup e user: group esteja correto em arquivos / diretórios relevantes.

Link para um tutorial rápido sobre como corrigir link

    
por 21.02.2018 / 18:45
0

Você não deveria usar o daemon spamassassin spamd ? Então você usaria o comando spamc em vez de spamassassin. Basicamente, execute spamd a partir do seu script de inicialização, e use spamc no seu explorador de e-mails.

    
por 25.06.2009 / 22:00
0

Você tentou adicionar o parâmetro --dbpath, assim?

sa-learn --dbpath /var/lib/amavis/.spamassassin/ ....
    
por 13.07.2009 / 22:25
0

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
    
por 24.11.2016 / 15:44