From 0bd97f3ae6c713583a10fc8613c5d613f1f48d7a Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Wed, 18 May 2016 09:54:21 -0700 Subject: [PATCH] fix the learn from spam to handle needs_rules properly --- learn_from_spam | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/learn_from_spam b/learn_from_spam index 306b227..5644096 100755 --- a/learn_from_spam +++ b/learn_from_spam @@ -19,8 +19,13 @@ if [ "$(basename $0)" = "learn_from_spam" ]; then formail -c < "$file" | grep -e '^From ' -e 'From: ' | spamassassin --remove-from-whitelist >/dev/null 2>&1; # check to see if it's still spam if ! $SPAM_CHECK < "$file" >/dev/null 2>&1; then + TMP="$(mktemp -d)" + trap "rm -f '$TMP'/file; rmdir '$TMP'" EXIT # this message is still not spam; may need custom rules - spamc < "$file" > ~/Maildir/spam/needs_rules/cur/"$(basename "$file")" 2>/dev/null; + spamc < "$file" > "$TMP/file" 2>/dev/null; + mv "$TMP/file" ~/Maildir/spam/needs_rules/cur/"$(basename "$file")"; + trap - EXIT; + rmdir "$TMP"; fi; done; elif [ "$(basename $0)" = "learn_from_ham" ]; then @@ -29,7 +34,12 @@ elif [ "$(basename $0)" = "learn_from_ham" ]; then formail -c < "$file" |grep -e '^From ' -e 'From: ' -e 'To: ' -e 'Cc: '|spamassassin --add-to-whitelist >/dev/null 2>&1; if $SPAM_CHECK < "$file" >/dev/null 2>&1; then mkdir -p ~/Maildir/spam/needs_ham_rules/cur; - spamc < "$file" > ~/Maildir/spam/needs_ham_rules/cur/"$(basename "$file")" 2>/dev/null; + TMP="$(mktemp -d)" + trap "rm -f '$TMP'/file; rmdir '$TMP'" EXIT + spamc < "$file" > "$TMP/file" 2>/dev/null; + mv "$TMP/file" ~/Maildir/spam/needs_ham_rules/cur/"$(basename "$file")"; + trap - EXIT; + rmdir "$TMP"; fi; done; else -- 2.39.2