prophet`
30.08.06, 16:20
Hallo,
ich habe eine kleine Frage bezüglich eines perl-skriptes. Ich habe ein Skript gefunden was aus einem Scalix-IMAP-Postfach alle Nachrichten aus einen bestimmten Ordner fischt und dann mit sa-learn verarbeitet.
Hier das Skript (quelle (http://www.scalix.com/wiki/index.php?title=HowTos/SpamAssassin))
#!/usr/local/bin/perl
use strict;
use warnings;
use Mail::IMAPClient;
my $host="your_mail_server_ip";
my $username="mboxadmin_user_name";
my $password="mboxadmin_password";
my @real_users=`/opt/scalix/bin/omshowu -m all -i`; # get all real user names.
foreach my $punter (@real_users) # Loop over them all.
{
chomp $punter; # Remove trailing carriage return.
print "$punter\n"; # Some output. Feel free to remove.
my $user="mboxadmin:$username:$punter"; # Set up superuser login.
my $imap = new Mail::IMAPClient( 'Server' => $host , 'User' => $user , 'Password' => $password ) or next; # connect to server.
my @folders=$imap->folders; # list folders.
foreach my $folder (@folders) # Look through each of them.
{
if (lc($folder) eq "junk e-mail") # "junk email" folder.
{
print "Found a spam folder: $folder\n";
$imap->select($folder) or next; # Select the folder.
print "Folder $folder selected.\n";
my @list=$imap->messages or next; # List all messages in folder.
print scalar(@list)." messages in folder.\n";
foreach my $msg (reverse(@list)) # Loop over them all.
{
my @email=$imap->fetch($msg,'RFC822'); # Fetch message.
open (SALEARN,"|/usr/bin/spamassassin -d | /usr/bin/sa-learn --spam") or print "$!\n"; # Feed to sa-learn.
print SALEARN "$email[1]";
close SALEARN;
open (REPORT,"|/usr/bin/spamassassin -d | /usr/bin/spamassassin -r") or print "$!\n"; # Report it. (SpamCop and Pyzor).
print REPORT "$email[1]";
close REPORT;
$imap->delete_message($msg) or next; # Delete it.
}
$imap->expunge($folder) or next; #Expunge folder.
}
}
}
Nur habe ich den Scalix-Server und den Spamassissan (mit dem Skript) auf unterschiedlichen Servern. Jetzt ist die Frage gibt es ne möglichkeit, dass das Skript sich die Daten holt und lokal verarbeitet?
Soweit ich das verstanden habe geht die Datei nur wenn beide Dienste auf einem Server sind. :(
Gruß proph
ich habe eine kleine Frage bezüglich eines perl-skriptes. Ich habe ein Skript gefunden was aus einem Scalix-IMAP-Postfach alle Nachrichten aus einen bestimmten Ordner fischt und dann mit sa-learn verarbeitet.
Hier das Skript (quelle (http://www.scalix.com/wiki/index.php?title=HowTos/SpamAssassin))
#!/usr/local/bin/perl
use strict;
use warnings;
use Mail::IMAPClient;
my $host="your_mail_server_ip";
my $username="mboxadmin_user_name";
my $password="mboxadmin_password";
my @real_users=`/opt/scalix/bin/omshowu -m all -i`; # get all real user names.
foreach my $punter (@real_users) # Loop over them all.
{
chomp $punter; # Remove trailing carriage return.
print "$punter\n"; # Some output. Feel free to remove.
my $user="mboxadmin:$username:$punter"; # Set up superuser login.
my $imap = new Mail::IMAPClient( 'Server' => $host , 'User' => $user , 'Password' => $password ) or next; # connect to server.
my @folders=$imap->folders; # list folders.
foreach my $folder (@folders) # Look through each of them.
{
if (lc($folder) eq "junk e-mail") # "junk email" folder.
{
print "Found a spam folder: $folder\n";
$imap->select($folder) or next; # Select the folder.
print "Folder $folder selected.\n";
my @list=$imap->messages or next; # List all messages in folder.
print scalar(@list)." messages in folder.\n";
foreach my $msg (reverse(@list)) # Loop over them all.
{
my @email=$imap->fetch($msg,'RFC822'); # Fetch message.
open (SALEARN,"|/usr/bin/spamassassin -d | /usr/bin/sa-learn --spam") or print "$!\n"; # Feed to sa-learn.
print SALEARN "$email[1]";
close SALEARN;
open (REPORT,"|/usr/bin/spamassassin -d | /usr/bin/spamassassin -r") or print "$!\n"; # Report it. (SpamCop and Pyzor).
print REPORT "$email[1]";
close REPORT;
$imap->delete_message($msg) or next; # Delete it.
}
$imap->expunge($folder) or next; #Expunge folder.
}
}
}
Nur habe ich den Scalix-Server und den Spamassissan (mit dem Skript) auf unterschiedlichen Servern. Jetzt ist die Frage gibt es ne möglichkeit, dass das Skript sich die Daten holt und lokal verarbeitet?
Soweit ich das verstanden habe geht die Datei nur wenn beide Dienste auf einem Server sind. :(
Gruß proph