Spamassassin one-liner 使用 X-Spam-Flag 标记和移动邮件:YES 到新目录?

ane*_*ane 2 scripting spam grep spamassassin maildir

假设您有一个包含数万条消息的目录。并且您想将垃圾邮件与非垃圾邮件分开。

具体来说,您希望:

  1. 针对目录运行 spamassassin,用 X-Spam-Flag 标记每封邮件:如果认为它是垃圾邮件,则为 YES
  2. 使用 tcsh shell 或 perl one-liner grep 所有带有标志的邮件并将这些邮件移动到 /tmp/spam

您可以运行什么命令来完成此操作?例如,一些伪代码:

/usr/local/bin/spamassassin -eL ./Maildir/cur/* | grep "X-Spam-Flag: YES" | mv %1 /tmp/spam
Run Code Online (Sandbox Code Playgroud)

小智 6

你的第一个猜测非常接近:-)

我制作了一个 bash 脚本来扫描整个邮件目录以防止垃圾邮件

#!/bin/bash

DIR="/home/vmail/example.net/exampleuser/cur/"

for f in $(ls $DIR); do
    spamassassin -Le "$DIR/$f" > /dev/null
    ERR=$?
    echo $ERR
    if [ $ERR -gt 0 ]; then 
        mv "$DIR/$f" /tmp/spam/
    else
        echo "This was no spam."
    fi
done
Run Code Online (Sandbox Code Playgroud)

将其保存为mailcleanup.sh 某处,将要扫描的文件夹的路径作为DIR,设置+x 并运行它。

祝你好运!