You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@spamassassin.apache.org by Steven Manross <st...@manross.net> on 2005/03/28 18:12:49 UTC

SA 3.02 rewrite_mail problem

I'm having issues rewriting mail. 

In the case that spam has been found, the message rewrites fine.

In the case of real mail, I want the SA headers inserted, but it seems
that if I rewrite_mail on non-spam, the message loses all headers
(except SA headers) and improperly formats the message text (HTML
becomes text, with visible HTML tags).

I must say that I am very impressed with the status of 3.02 and am
hoping this is a config problem on my end, but can't seem to find my own
answer in my searches for it.

Upgrading from 2.60 was relatively painless and it looks to handle the
message parts better.  This code was working on 2.60 (with changes based
on version differences).

The workaround for now is NOT to change the $message_text with
rewrite_mail for non-spam, as doing so will make a messs of the mail.
GTUBE seem fine, and the nonspam (after) seems hosed.  Any help would be
appreciated. (example below)

I have added the "add_header all" config line in the local.cf for each
of the headers I want in each message.

Code snippet follows.

SA 3.02
ActivePerl 5.8 (Build 811)
W2K SP4
Exchange Server 2000 (all available SPs and Hotfixes)

my $spamtest = new Mail::SpamAssassin ({
  userprefs_filename   => 'X:/spam/assassin/prefs/user_prefs',
  local_tests_only     => 1,
  username             => 'someuser'
});

if (is_message_spam($message_text,$spamtest,$mailobj,$statusobj)) {
  #do stuff
} else {
  #do other stuff
}

exit 1;

sub is_message_spam {
  my $message_txt = $_[0];
  my $spamtest = $_[1];
  my @array = split(/\n/,$message_txt);
  my $mail = $spamtest->parse(\@array,1);
  my $status = $spamtest->check($mail);
  $mail = $status->get_message();
  $_[2] = $mail;
  $_[3] = $status;
  #$message_txt = $status->rewrite_mail();
  #$_[0] = $message_txt;
  if ($status->is_spam()) {
    $message_txt = $status->rewrite_mail();
    $_[0] = $message_txt;
    return 1;
  } else {
    return 0;
  }
}


NON-SPAM AFTER
--------------
X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on 
	homeexch2.manross.net
X-Spam-Level: 
X-Spam-Status: No, score=0.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_60

	autolearn=no version=3.0.2

This is a multi-part message in MIME format.

--Message-Boundary-19990614
Content-Type: text/plain;
	charset="US-ASCII"
Content-Description: Mail message body
Content-Transfer-Encoding: 7bit

This is a message from Perl with an attachment.
--Message-Boundary-19990614
Content-Type: text/plain;
	type=Unknown;
	name="boot.ini"
Content-Description: boot.ini
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment

[boot
loader]timeout=3D30default=3Dmulti(0)disk(0)rdisk(0)partition(1)\WINNT[o
perating systems]multi(0)disk(0)rdisk(0)partition(1)\WINNT=3D"My System"
--Message-Boundary-19990614--

NONSPAM BEFORE -- HEADERS
-------------------------
thread-index: AcUy9fmcNHhQyjavTVKbUKvxBooZ4g==
Received: from localhost ([x.x.x.x]) by xxxxxxxx.xxxxxxx.xxx with
Microsoft SMTPSVC(5.0.2195.6713); Sun, 27 Mar 2005 10:53:57 -0700
Content-Transfer-Encoding: 7bit
To: <xx...@xxxxxx.xxx>
Content-Class: urn:content-classes:message
Importance: normal
Priority: normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1478
From: "ME" <xx...@xxxxxxx.xxx>
X-Mailer: Perl+Mail::Sender 0.7.08 by Jan Krynicky
Subject: Perl Mail with Attachment test
MIME-Version: 1.0
Content-Type: Multipart/Mixed;
	boundary="Message-Boundary-19990614"
Return-Path: <xx...@xxxxxxx.xxx>
Message-ID: <xx...@xxxxxxxxx.xxxxxxxx.xxx>
X-OriginalArrivalTime: 27 Mar 2005 17:53:57.0443 (UTC)
FILETIME=[F2F4C130:01C532F5]
Date: 27 Mar 2005 10:53:57 -0700