1 |
unnilennium |
1.1 |
diff -up smeserver-learn-1.0/root/usr/bin/Learn.pl.SME9282 smeserver-learn-1.0/root/usr/bin/Learn.pl |
2 |
|
|
--- smeserver-learn-1.0/root/usr/bin/Learn.pl.SME9282 2016-03-16 07:38:34.092000000 -0400 |
3 |
|
|
+++ smeserver-learn-1.0/root/usr/bin/Learn.pl 2016-03-16 07:32:47.000000000 -0400 |
4 |
|
|
@@ -22,6 +22,8 @@ use File::Find; |
5 |
|
|
use File::Copy; |
6 |
|
|
use File::Basename; |
7 |
|
|
use File::Path; |
8 |
|
|
+use Encode qw/encode decode/; |
9 |
|
|
+use utf8; |
10 |
|
|
|
11 |
|
|
my $hostname = hostname(); |
12 |
|
|
|
13 |
|
|
@@ -32,7 +34,8 @@ my $sadb = esmith::ConfigDB->open_ro() |
14 |
|
|
or die "Could not open ConfigurationDB ( reason : ".esmith::DB->error." )\n"; |
15 |
|
|
|
16 |
|
|
# some variables of interest |
17 |
|
|
-my $subjectTAG=quotemeta $sadb->get_prop("spamassassin", "Subject"); |
18 |
|
|
+my $subjectTAG= $sadb->get_prop("spamassassin", "Subject"); |
19 |
|
|
+my $tag= $sadb->get_prop("LearnAsSpam", "tag"); |
20 |
|
|
my $MessageRetentionTime = $sadb->get_prop('spamassassin', '$MessageRetentionTime')|| "15"; |
21 |
|
|
my $DelayToMove = $sadb->get_prop("LearnAsSpam", "DelayToMove") || $MessageRetentionTime ; # delay in day before moving files |
22 |
|
|
$DelayToMove= $DelayToMove<$MessageRetentionTime ? $DelayToMove : 0; # set 0 to disable |
23 |
|
|
@@ -184,7 +187,7 @@ foreach my $user (@users) { |
24 |
|
|
if (defined($sadb->get_prop($mode, "tag"))) { |
25 |
|
|
# Opening, reading in one scalar and parsing mail |
26 |
|
|
$/=undef; |
27 |
|
|
- open(MAILFILE,$filetolearn); |
28 |
|
|
+ open(MAILFILE,"<:encoding(UTF-8)",$filetolearn); |
29 |
|
|
my $emailbrut = <MAILFILE>; |
30 |
|
|
close(MAILFILE); |
31 |
|
|
$/="\n"; |
32 |
|
|
@@ -193,12 +196,14 @@ foreach my $user (@users) { |
33 |
|
|
#changing subject (tagging), opening and writing new mail |
34 |
|
|
my $Subject= $email->header("Subject"); |
35 |
|
|
if ( ($mode ne "LearnAsSpam") && ($sadb->get_prop($mode, "RemoveSPAMTag") eq "enabled") ) { |
36 |
|
|
- ($Subject= $Subject) =~ s/$subjectTAG//; |
37 |
|
|
- my $tag= $sadb->get_prop("LearnAsSpam", "tag"); |
38 |
|
|
- ($Subject= $Subject) =~ s/$tag//; |
39 |
|
|
+ for my $test ( quotemeta $subjectTAG , quotemeta $tag) { |
40 |
|
|
+ ($Subject= $Subject) =~ s/$test//; |
41 |
|
|
+ } |
42 |
|
|
} |
43 |
|
|
- $email->header_set("Subject", $sadb->get_prop($mode, "tag").$Subject); |
44 |
|
|
- open(MAILFILEWRITE,">$filetolearn"); |
45 |
|
|
+ # encoding as MIME Q (not B) with UTF8 as default. |
46 |
|
|
+ my $cleanTag= encode("MIME-Q",$sadb->get_prop($mode, "tag")); |
47 |
|
|
+ $email->header_set("Subject",$cleanTag.$Subject); |
48 |
|
|
+ open(MAILFILEWRITE,">","$filetolearn"); |
49 |
|
|
print(MAILFILEWRITE $email->as_string); |
50 |
|
|
close(MAILFILEWRITE) |
51 |
|
|
} |