Spamassasin: Проверьте почтовый ящик на спам

Как я могу иметь проверку spamassasin почтовая папка для спама и переместить его в другой.

Я получал много спама недавно и начал реализовывать байесовские классификаторы. Я переместил набор в отдельную папку и обучил его с 'sa-learn'.

Теперь я хочу, чтобы spamassasin использовал то, что он просто изучил, и проверьте всю электронную почту в папке для спама и переместите его в папку для спама, если он считает это спамом. (например, Уровень Спама выше, чем 5,0 в моей конфигурации.)

Править: Я снабжаю свои электронные письма maildir форматом на сервере.

Какая-либо идея?

Заранее спасибо

0
задан 17 August 2014 в 22:42
1 ответ

Ниже приведен комбинированный пример кода 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();
}
1
ответ дан 4 December 2019 в 17:14

Теги

Похожие вопросы