Как я могу иметь проверку spamassasin почтовая папка для спама и переместить его в другой.
Я получал много спама недавно и начал реализовывать байесовские классификаторы. Я переместил набор в отдельную папку и обучил его с 'sa-learn'.
Теперь я хочу, чтобы spamassasin использовал то, что он просто изучил, и проверьте всю электронную почту в папке для спама и переместите его в папку для спама, если он считает это спамом. (например, Уровень Спама выше, чем 5,0 в моей конфигурации.)
Править: Я снабжаю свои электронные письма maildir форматом на сервере.
Какая-либо идея?
Заранее спасибо
Ниже приведен комбинированный пример кода man spamassassin
и man Mail::Box
.
Добавьте $message->moveTo($destinationFolder)
в соответствующих местах после первоначальных тестов. Текущая версия просто идентифицирует oversized/spam/ham.
.
(см. man Mail::Box::Message
for moveTo details)
use: ./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();
}