假设您有一个包含数万封邮件的目录。您想将垃圾邮件与非垃圾邮件区分开来。
具体来说,您希望:
- 对目录运行 spamassassin,如果认为每封邮件是垃圾邮件,则用 X-Spam-Flag: YES 标记每封邮件
- 使用 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:
- 通过 IMAP 客户端下载所有标头。
- 搜索标题以查找常见的垃圾邮件主题和发件人地址。
- 删除并清除大量垃圾邮件。(而不是移动到新目录)