#!/usr/bin/perl -w # Script for delete old spam and virus mails # And Learn Spam and Ham # Author: Michael Korn # Version: 0.1 use strict; # get all possible spam that wasn't deleted already my @files = `find /var/vmail/*/*/ -not -mtime -14 -a -type f -a \\( -path '*.Spam/cur/*' -o -path '*.Spam/new/*' -o -path '*.Virus/cur/*' -o -path '*.Virus/cur/*' \\) -print`; chomp(@files); unlink(@files); my $lastuser = ''; my @user; @files = `find /var/vmail/*/*/ -type d -a -not -empty -a \\( -path '*.Learn-Ham/cur' -o -path '*.Learn-Ham/new' \\) -print`; chomp(@files); for (my $i=0;$i<@files;$i++) { my($domain, $mailuser) = $files[$i] =~ /\/var\/vmail\/([^\/]+)\/([^\/]+)\//; if ($lastuser ne $mailuser."@".$domain) { @user = `echo "SELECT value FROM modules_sasettings_sa WHERE preference='bayes_sql_override_username' AND (username = '$mailuser\@$domain' OR username = '\$GLOBAL' OR username = CONCAT('%','$domain')) ORDER BY username DESC Limit 1;" |mysql -u spamassassin -p"Xxxx" syscp -h 127.0.0.1`; chomp($user[1]); $lastuser = $mailuser."@".$domain; } `/usr/bin/sa-learn --ham --no-sync -u $user[1] $files[$i]`; unlink(glob($files[$i]."/*")); } $lastuser = ''; @files = `find /var/kunden/mail/*/*/ -type d -a -not -empty -a \\( -path '*.Learn-Spam/cur' -o -path '*.Learn-Spam/new' \\) -print`; chomp(@files); for (my $i=0;$i<@files;$i++) { my($domain, $mailuser) = $files[$i] =~ /\/var\/vmail\/([^\/]+)\/([^\/]+)\//; if ($lastuser ne $mailuser."@".$domain) { @user = `echo "SELECT value FROM modules_sasettings_sa WHERE preference='bayes_sql_override_username' AND (username = '$mailuser\@$domain' OR username = '\$GLOBAL' OR username = CONCAT('%','$domain')) ORDER BY username DESC Limit 1;" |mysql -u spamassassin -p"XXXX" syscp -h 127.0.0.1`; chomp($user[1]); $lastuser = $mailuser."@".$domain; } `/usr/bin/sa-learn --spam --no-sync -u $user[1] $files[$i]`; unlink(glob($files[$i]."/*")); } `/usr/bin/sa-learn --sync`;