]> git.donarmstrong.com Git - bin.git/commitdiff
abstract out run through spam
authorDon Armstrong <don@donarmstrong.com>
Sat, 13 Jul 2019 16:53:45 +0000 (09:53 -0700)
committerDon Armstrong <don@donarmstrong.com>
Sat, 13 Jul 2019 16:53:45 +0000 (09:53 -0700)
learn_from_spam

index 63cb9f8789b1fa4f32934bb2942ce6d97c490a76..24db173bdab61b8229c05d05085c546420a89fa9 100755 (executable)
@@ -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;