cabeçalhos spamassassin não escrevendo

0

Quando executo o comando spamassassin em um email, ele identifica corretamente o email como spam e aparece como se os cabeçalhos tivessem sido adicionados. Mas o arquivo não é realmente atualizado e os cabeçalhos permanecem os mesmos. Por causa da minha reputação aqui, não posso postar a saída real dos comandos. Qualquer ajuda é apreciada. Obrigado.

Para começar, /etc/spamassassin/local.cf tem 'report_safe 0'

Basicamente, estou executando o seguinte comando em um único email, como um exemplo.

mike @ servo: / mnt / filestore / mail / mike $ spamassassin INBOX / cur / 1476677884_0.3597.servo \, U \ = 678 \, FMD5 \ = 7e33429f656f1e6e9d79b29c3f82c57e: 2 \,

O resultado disso inclui todo o email com os cabeçalhos X-Spam visíveis. Neste caso, "X-Spam-Status: Sim, pontuação = 24,0 necessária = 5,0" como exemplo.

Estou apenas vendo o arquivo com 'more' depois. Mas os cabeçalhos X-Spam não são visíveis. Nada é alterado.

mike @ servo: / mnt / filestore / mail / mike $ more INBOX / cur / 1476677884_0.3597.servo \, U \ = 678 \, FMD5 \ = 7e33429f656f1e6e9d79b29c3f82c57e: 2 \,

Edit: Eu também queria salientar que usar o comando spamc em vez de spamassassin resulta no mesmo. A menos que eu esteja totalmente enganado sobre como isso deve se comportar - os comandos devem realmente escrever o arquivo e não apenas mostrar o resultado, correto? - então talvez isso seja uma questão de permissão? Parece que o usuário que foi instalado com o spamassassin é debian-spamd, todos os meus e-mails são armazenados como -rw-rw-r-- mike: mike. Não consigo encontrar nenhum log para provar um erro de permissão, no entanto.

    
por freshjerky 17.10.2016 / 06:58

2 respostas

0

Quando você pegar uma saída para spamassassin , ela enviará sua mensagem para STDOUT, não para o arquivo original.

Isso ocorre porque o spamassassin geralmente recebe mensagens por STDIN, como quando está sendo usado como uma peneira para o Postfix. O postfix passa a mensagem através de STDIN para spamassassin , que a envia para STDOUT para o próximo processo, algo assim:

[email] -> 'spamassassin' / 'spamc' ---[spam-sorted email]---> 'somethingelse'

Se você deseja salvar o arquivo, é necessário escrevê-lo assim:

spamassassin mail.eml > mail-spamcheck.eml
    
por Kaz Wolfe 17.10.2016 / 19:47
0

Para qualquer um que possa se deparar com este post com uma pergunta semelhante, abaixo está como resolvi esse problema. Mudei-me para o fetchmail do offlineimap para inserir mensagens em um diretório separado e adicionei o script abaixo ao cron.

#!/bin/bash

#Mail directories. Do not include the trailing /.
NEWMAIL="/home/mike/.mailqueue"
INBOX="/mnt/filestore/mail/mike/INBOX/new"
JUNK="/mnt/filestore/mail/mike/.Junk/new"

#fetch new messages
fetchmail

#move any messages in new to cur
echo "Moving messages in /new to /cur"
mv $NEWMAIL/new/* $NEWMAIL/cur/

#check if directory contains files
if [ "$(ls -A $NEWMAIL/cur/)" ] ; then

  #move out files that already have spamassassin headers to the INBOX and Junk folders
  echo "Moving pre-processed files."
  grep -lIZ ^X-Spam-Status\:\ Yes \
    $NEWMAIL/cur/* |
    xargs -I '{}' -0 mv '{}' $JUNK/

  grep -lIZ ^X-Spam-Status\:\ No \
    $NEWMAIL/cur/* |
    xargs -I '{}' -0 mv '{}' $INBOX/

  #run spamassassin on each remainining file and append .processed to the filename
  for file in $NEWMAIL/cur/*
  do
    echo "Processing $file"
    spamassassin $file > $file.processed
  done

  #move the processed files to the INBOX and Junk folders
  echo "Moving processed files."
  grep -lIZ ^X-Spam-Status\:\ Yes \
    $NEWMAIL/cur/* |
    xargs -I '{}' -0 mv '{}' $JUNK/

  grep -lIZ ^X-Spam-Status\:\ No \
    $NEWMAIL/cur/* |
    xargs -I '{}' -0 mv '{}' $INBOX/

  #delete the remaining files
  echo "Deleting the remaining files."
  rm -Rf $NEWMAIL/cur/*

#no files in directory
else
  echo "Nothing to do."
fi
    
por freshjerky 19.10.2016 / 05:34