#!/usr/bin/perl ############################################################################# # # This script has been developed # by Jesper Knudsen at http://sme.swerts-knudsen.dk # # Revision History: # # January 18, 2006: Initial version ############################################################################# # # Each user needs ssh - chsh -s /bin/bash # use Sys::Hostname; use esmith::AccountsDB; my $hostname = hostname(); my $adb = esmith::AccountsDB->open_ro() or die "Couldnt' open AccountsDB\n"; my @users = $adb->users; foreach my $user (@users) { my $firstname = $user->prop('FirstName'); my $lastname = $user->prop('LastName'); my $key = $user->key; printf("Checking for user (%s): %s %s\n", $key,$firstname, $lastname); $MailDir = "/home/e-smith/files/users/" . $key . "/Maildir"; opendir(LOGDIR, $MailDir); my $dirname = sprintf "LearnAsSpam"; my @logdirs = sort grep { /$dirname/ } readdir(LOGDIR); closedir(LOGDIR); foreach my $logdir (@logdirs) { my $SpamDir = $MailDir . "/" . $logdir . "/cur/"; # printf("Checking Dir: %s\n",$SpamDir); opendir(SPAMDIR, $SpamDir); my @spamfiles = sort grep { /$hostname/ } readdir(SPAMDIR); closedir(SPAMDIR); foreach $spamfile (@spamfiles) { my $filetolearn = $Maildir . $SpamDir . $spamfile; $filetolearn =~ s/;/\\;/g; $filetolearn =~ s/:/\\:/g; printf("Learning Spammail: %s\n",$filetolearn); #my $result = `su - $key -c "/usr/bin/sa-learn --spam $filetolearn"`; my $result = `su - root -c "/usr/bin/sa-learn --spam $filetolearn"`; printf("Result of sa-learn: %s\n",$result); # Now delete the file after learning #my $delete = `su - $key -c "rm -f $filetolearn"`; my $delete = `rm -f $filetolearn`; # printf("Result of delete: %s\n",$delete); } } }