From: Don Armstrong Date: Sat, 13 Jul 2019 16:53:45 +0000 (-0700) Subject: abstract out run through spam X-Git-Url: https://git.donarmstrong.com/?p=bin.git;a=commitdiff_plain;h=5a7140fe58d43c8eed98f94f907c7cb1f240a9ca abstract out run through spam --- diff --git a/learn_from_spam b/learn_from_spam index 63cb9f8..24db173 100755 --- a/learn_from_spam +++ b/learn_from_spam @@ -14,6 +14,21 @@ SPAM_CHECK="spamc -s $((100 * 1024 * 1024)) -c" NEEDS_SPAM_RULES="$(echo ~/Maildir/spam/needs_rules)" NEEDS_HAM_RULES="$(echo ~/Maildir/spam/needs_ham_rules)" +run_through_spamc () { + # destdir + DESTDIR="$1" + FILENAME="$2" + mkdir -p "$1" + TMP="$(mktemp -d)" + DESTFILE="$DESTDIR/$(basename "$FILENAME")" + DESTFILE_NO_SIZE="$DESTDIR/$(basename "$FILENAME"|sed 's/,S=.*//g')" + spamc -s $((100 * 1024 * 1024)) < "$FILENAME" > "$TMP/file" 2>/dev/null; + mv "$TMP/file" "DESTFILE" + mv "$DESTFILE" "$DESTFILE_NO_SIZE" + trap - EXIT; + rmdir "$TMP"; +} + if [ "$(basename $0)" = "learn_from_spam" ]; then for file in "$@"; do if ! formail -c < "$file"|grep -q '^List-Id'; then @@ -25,14 +40,7 @@ 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 ham if $SPAM_CHECK < "$file" >/dev/null 2>&1; then - mkdir -p "${NEEDS_SPAM_RULES}/cur"; - TMP="$(mktemp -d)" - trap "rm -f '$TMP'/file; rmdir '$TMP'" EXIT - # this message is still not spam; may need custom rules - spamc -s $((100 * 1024 * 1024)) < "$file" > "$TMP/file" 2>/dev/null; - mv "$TMP/file" "${NEEDS_SPAM_RULES}/cur/$(basename "$file")"; - trap - EXIT; - rmdir "$TMP"; + run_through_spamc "${NEEDS_SPAM_RULES}/cur" "$file"; elif [ "$(pwd)" = "${NEEDS_SPAM_RULES}" ]; then rm -f "$file"; fi; @@ -42,13 +50,7 @@ elif [ "$(basename $0)" = "learn_from_ham" ]; then $HAM_REPORT < "$file" >/dev/null 2>&1; 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 "${NEEDS_HAM_RULES}/cur"; - TMP="$(mktemp -d)" - trap "rm -f '$TMP'/file; rmdir '$TMP'" EXIT - spamc -s $((100 * 1024 * 1024)) < "$file" > "$TMP/file" 2>/dev/null; - mv "$TMP/file" "${NEEDS_HAM_RULES}/cur/$(basename "$file")"; - trap - EXIT; - rmdir "$TMP"; + run_through_spamc "${NEEDS_HAM_RULES}/cur" "$file"; elif [ "$(pwd)" = "${NEEDS_HAM_RULES}" ]; then rm -f "$file"; fi;