Когда я выполняю команду spamassassin на электронном письме, она правильно идентифицирует электронную почту как спам и появляется, как будто заголовки были добавлены. Но файл на самом деле не обновляется, и заголовки остаются тем же. Из-за моей репутации здесь, я не могу отправить эффективную выходную мощность команд. Любая справка ценится.Спасибо.
Для запуска/etc/spamassassin/local.cf имеет 'report_safe 0'
В основном я выполняю следующую команду на единственном электронном письме как пример.
mike@servo:/mnt/filestore/mail/mike$ spamassassin INBOX/cur/1476677884_0.3597.servo \, U \= 678 \, FMD5 \= 7e33429f656f1e6e9d79b29c3f82c57e:2 \,
Результат этого включает всю электронную почту с видимыми заголовками X-спама. В этом случае, "X-Spam-Status: Да, score=24.0 required=5.0" как пример.
Я затем просто просматриваю файл с 'больше' впоследствии. Но заголовки X-спама не видимы. Ничто не изменяется.
mike@servo:/mnt/filestore/mail/mike$ больше INBOX/cur/1476677884_0.3597.servo \, U \= 678 \, FMD5 \= 7e33429f656f1e6e9d79b29c3f82c57e:2 \,
Править: Я также хотел указать, что использование spamc управляет вместо результатов spamassassin в том же. Если я не полностью ошибаюсь о том, как это, как предполагается, ведет себя - команды должны на самом деле записать, что файл не только произвел результат, корректный? - затем, возможно, это - проблема разрешения? Кажется, что пользователь, который был установлен с spamassassin, является debian-spamd, вся моя почта хранится как-rw-rw-r - mike:mike. Я не могу найти, что любые журналы доказывают ошибку разрешения, как бы то ни было.
При захвате вывода для spamassassin
он произведет сообщение к STDOUT, не исходный файл.
Это вызвано тем, что spamassassin
обычно берет сообщения через STDIN, как то, когда он используется в качестве решета для Постфикса. Постфикс передает сообщение через STDIN к spamassassin
, кто производит его к STDOUT к следующему процессу, таким образом, что-то вроде этого:
[email] -> `spamassassin` / `spamc` ---[spam-sorted email]---> `somethingelse`
, Если Вы хотите сохранить файл, необходимо записать это, как так:
spamassassin mail.eml > mail-spamcheck.eml
Для любого, который может наткнуться на это сообщение с подобным вопросом, ниже то, как я решил эту проблему. Я переместился в fetchmail от offlineimap для сования сообщений в отдельный каталог, и я добавил ниже сценария к крону.
#!/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