我怎么能spamassasin检查邮件文件夹的垃圾邮件,并将其移动到另一个。
最近我收到很多垃圾邮件,并开始实施贝叶斯分类器。 我把一堆文件移动到一个单独的文件夹中,并用“sa-learn”进行训练。
现在,我想要spamassasin使用它刚刚了解到的内容,并检查文件夹中的所有电子邮件以查找垃圾邮件,并在垃圾邮件文件夹中将其移至垃圾邮件文件夹中。 (例如,在我的configuration中,垃圾邮件级别高于5.0)。
编辑:我在服务器上存储我的电子邮件与maildir格式。
任何想法?
提前致谢
下面请findman spamassassin和man Mail::Box组合示例代码。
在初始testing后,在适当的地方添加$message->moveTo($destinationFolder) 。 目前的版本只是识别过大/垃圾邮件/火腿。
(请参阅man Mail::Box::Message for moveTo details)
用法: ./scriptname maildir:/home/username/Maildir/.Folder/
#!/usr/bin/perl use strict; use warnings; use utf8; use Mail::SpamAssassin; use Mail::Box::Manager; my $mgr = Mail::Box::Manager->new; my $spamtest = Mail::SpamAssassin->new(); for my $foldername (@ARGV) { my $folder = $mgr->open(folder => $foldername, access => 'rw' ) || die; foreach my $message ($folder->messages) { # Print Subject: and Date: headers as progress indicators print "Subject: ", $message->subject(),"\n"; print "Date: ", $message->head->get('Date'),"\n"; if( $message->size >= 250*1024 ) { print "Oversized Message\n"; next; } my $mail = $spamtest->parse($message->string()); my $status = $spamtest->check($mail); if ($status->is_spam()) { # $message = $status->rewrite_mail(); print "Spam Message\n"; } else { print "Ham Message\n"; } $status->finish(); $mail->finish(); } $folder->close(); }