Hello,
     I just release a patch for "Mail-SpamAssassin-2.11", Just fix the mime multi-part 
process question. Hope anybody can help me test it, Check is it work.
     In the origin SpamAssassin-2.11, It can't handle the multi-part mail send the 
outlook express, and Can't handle the line break with "\n" but not "\r\n", for this 
reason, I release this patch.

------start cut next line--------------------------------------------

diff -Naur origin/Mail-SpamAssassin-2.11/lib/Mail/SpamAssassin/PerMsgStatus.pm 
new/Mail-SpamAssassin-2.11/lib/Mail/SpamAssassin/PerMsgStatus.pm
--- origin/Mail-SpamAssassin-2.11/lib/Mail/SpamAssassin/PerMsgStatus.pm Mon Mar  4 
09:17:35 2002
+++ new/Mail-SpamAssassin-2.11/lib/Mail/SpamAssassin/PerMsgStatus.pm Sat Mar 16 
+10:49:56 2002
@@ -658,18 +658,35 @@
   my $bodytext = $self->get_decoded_body_text_array();
 
   my $text = '';
+  my $tmptext = '';
   my $lastwasmime = 0;
+  my $notfirstenter = 0;
   foreach $_ (@{$bodytext}) {
     /^SPAM: / and next;         # SpamAssassin markup
 
     /^--/ and $lastwasmime=1 and next;  # MIME bits
     if ($lastwasmime) {
       /^$/ and $lastwasmime=0;
+      if (!$lastwasmime) {
+        if ($notfirstenter) {
+          $text .= MIME::Base64::decode_base64($tmptext);
+        } else {
+          $notfirstenter = 1;
+          $text .= $tmptext;
+        }
+        $tmptext = '';
+      }
       /Content-.*: / and next;
       /^\s/ and next;
     }
 
-    $text .= $_;
+    $tmptext .= $_;
+  }
+
+  if ($notfirstenter) {
+    $text .= MIME::Base64::decode_base64($tmptext);
+  } else {
+    $text .= $tmptext;
   }
   $text =~ s/=\r?\n//gis; # QP line endings
 
diff -Naur origin/Mail-SpamAssassin-2.11/spamproxy/spamproxyd.raw 
new/Mail-SpamAssassin-2.11/spamproxy/spamproxyd.raw
--- origin/Mail-SpamAssassin-2.11/spamproxy/spamproxyd.raw Fri Mar  1 05:07:21 2002
+++ new/Mail-SpamAssassin-2.11/spamproxy/spamproxyd.raw Sat Mar 16 09:41:03 2002
@@ -141,8 +141,9 @@
     # --irj
 
     $message = $client->{MSG};
-    @msg = split ("\r\n", $message);
-    $arraycont = @msg; for(0..$arraycont) { $msg[$_] .= "\r\n"; }
+    $message =~ s/\r//gis;
+    @msg = split ("\n", $message);
+    $arraycont = @msg; for(0..$arraycont) { $msg[$_] .= "\n"; }
     %args = (data => \@msg);
     $mail = Mail::SpamAssassin::NoMailAudit->new(%args);
 
-----stop cut here------------------------------------------------------


.
-------
Floatboat Chen
==============
http://www.linuxaid.com.cn
http://www.linuxaid.com.cn/forum
Jjȧdx%RƬ)jY%lqzm?X(~zwXb?jȧd


Reply via email to