1 |
brianr |
1.1 |
diff -Nur smeserver-learn-1.0/root/usr/bin/Learn.pl.MESSYOUTPUT smeserver-learn-1.0/root/usr/bin/Learn.pl |
2 |
|
|
--- smeserver-learn-1.0/root/usr/bin/Learn.pl.MESSYOUTPUT 2016-03-07 11:00:23.000000000 +0100 |
3 |
|
|
+++ smeserver-learn-1.0/root/usr/bin/Learn.pl 2016-03-08 08:21:55.000000000 +0100 |
4 |
|
|
@@ -85,8 +85,8 @@ |
5 |
|
|
if (! @logdirs and ($sadb->get_prop($mode, "Uniq") eq "enabled")) { |
6 |
|
|
($login,$pass,$uid,$gid) = getpwnam($key) |
7 |
|
|
or die "$key not in passwd file"; |
8 |
|
|
+ print "+->mkdir :". $MailDir . "/" . $dirname . "\n"; |
9 |
|
|
foreach $a ('','/cur','/tmp','/new'){ |
10 |
|
|
- print "mkdir :". $MailDir . "/" . $dirname . "$a\n"; |
11 |
|
|
mkdir $MailDir . "/" . $dirname . "$a"; |
12 |
|
|
chown $uid,$gid,$MailDir . "/" . $dirname . "$a"; |
13 |
|
|
} |
14 |
|
|
@@ -100,7 +100,7 @@ |
15 |
|
|
$a=(substr($a, 0, 1) eq '.')? $a: ".$a"; |
16 |
|
|
my $Link= $MailDir . "/" . $a; |
17 |
|
|
if (! -e $Link) { |
18 |
|
|
- print "create link $Link on $junkdir\n"; |
19 |
|
|
+ print "+->create link $Link on $junkdir\n"; |
20 |
|
|
symlink($junkdir, $Link) or die "Can't create symlink from $Link to $junkdir: $!"; |
21 |
|
|
}; |
22 |
|
|
} |
23 |
|
|
@@ -137,20 +137,21 @@ |
24 |
|
|
#sa-learn here to avoid its loading for each files, when it can walk in directories on itself! |
25 |
|
|
my $SpamDir = ($sadb->get_prop($mode, "LearnNew") eq "enabled")? $MailDir . "/" . $logdir : $MailDir . "/" . $logdir . "/cur/" ; |
26 |
|
|
#taking action according to actual mode |
27 |
|
|
- if ($mode eq "LearnAsSpam") { |
28 |
|
|
- my $result = `/usr/bin/sa-learn --spam --showdots $SpamDir`; |
29 |
|
|
- printf("Learning Spam from %s: %s\n",$SpamDir,$result); |
30 |
|
|
+ my $counter = 0; |
31 |
|
|
+ find( { wanted => sub { -f && $counter++;}, no_chdir => 1, follow_fast => 1 }, $SpamDir ); |
32 |
|
|
+ if ($mode eq "LearnAsSpam" and $counter>0) { |
33 |
|
|
+ my $result = `/usr/bin/sa-learn --spam $SpamDir`; |
34 |
|
|
+ chomp($result); printf("+Learning Spam from %s: %s\n",$logdir,$result); |
35 |
|
|
} |
36 |
|
|
- elsif ($mode eq "LearnAsHam") { |
37 |
|
|
- my $result = `/usr/bin/sa-learn --ham --showdots $SpamDir`; |
38 |
|
|
- printf("Learning Ham from %s: %s\n",$SpamDir,$result); |
39 |
|
|
+ elsif ($mode eq "LearnAsHam" and $counter>0) { |
40 |
|
|
+ my $result = `/usr/bin/sa-learn --ham $SpamDir`; |
41 |
|
|
+ chomp($result);printf("+Learning Ham from %s: %s\n",$logdir,$result); |
42 |
|
|
} |
43 |
|
|
|
44 |
|
|
@list= ($sadb->get_prop($mode, "LearnNew") eq "enabled") ? ('/cur/','/new/'):('/cur/'); |
45 |
|
|
foreach $a (@list){ |
46 |
|
|
- my $SpamDir = $MailDir . "/" . $logdir . "$a";#JPP why only the cur and not the new? |
47 |
|
|
+ my $SpamDir = $MailDir . "/" . $logdir . "$a"; |
48 |
|
|
# list and sort file in dir |
49 |
|
|
- printf("Checking Dir: %s\n",$SpamDir); |
50 |
|
|
opendir(SPAMDIR, $SpamDir); |
51 |
|
|
my @spamfiles = sort grep { /$hostname/ } readdir(SPAMDIR); |
52 |
|
|
closedir(SPAMDIR); |
53 |
|
|
@@ -164,7 +165,7 @@ |
54 |
|
|
|
55 |
|
|
#taking action according to actual mode |
56 |
|
|
if ($mode eq "LearnInWL") { |
57 |
|
|
- printf("Learning in WhiteList: %s\n",$filetolearnbash); |
58 |
|
|
+ printf("+Learning in WhiteList: %s\n",$filetolearnbash); |
59 |
|
|
`/usr/bin/LearnInWL.pl $filetolearnbash`; |
60 |
|
|
} |
61 |
|
|
# if we are in LearnAsSpam mode and DeleteAfterLearn is enabled delete message, else tagging a move message |