Spamassassin 单行命令使用 X-Spam-Flag: YES 标记和移动邮件到新目录?

Spamassassin 单行命令使用 X-Spam-Flag: YES 标记和移动邮件到新目录?

假设您有一个包含数万封邮件的目录。您想将垃圾邮件与非垃圾邮件区分开来。

具体来说,您希望:

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

你可以运行什么命令来实现这一点?例如,一些伪代码:

/usr/local/bin/spamassassin -eL ./Maildir/cur/* | grep "X-Spam-Flag: YES" | mv %1 /tmp/spam

答案1

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

我编写了一个 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

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

祝你好运!

答案2

最终,我们走了很长一段路,没有使用 spamassassin:

  1. 通过 IMAP 客户端下载所有标头。
  2. 搜索标题以查找常见的垃圾邮件主题和发件人地址。
  3. 删除并清除大量垃圾邮件。(而不是移动到新目录)

相关内容