diff -Naur mimedefang-2.51/mimedefang.pl.in mimedefang-2.51.nate/mimedefang.pl.in
--- mimedefang-2.51/mimedefang.pl.in	2005-02-08 10:04:39.000000000 -0600
+++ mimedefang-2.51.nate/mimedefang.pl.in	2005-03-08 20:10:17.000000000 -0600
@@ -6018,7 +6018,7 @@
 # %DESCRIPTION:
 #  Scans message using SpamAssassin (http://www.spamassassin.org)
 #***********************************************************************
-sub spam_assassin_is_spam (;$) {
+sub spam_assassin_is_spam (;$$) {
 
     my($hits, $req, $tests, $report) = spam_assassin_check(@_);
     return undef if (!defined($hits));
@@ -6039,7 +6039,7 @@
 # %DESCRIPTION:
 #  Scans message using SpamAssassin (http://www.spamassassin.org)
 #***********************************************************************
-sub spam_assassin_check (;$) {
+sub spam_assassin_check (;$$) {
 
     my($status) = spam_assassin_status(@_);
     return undef if (!defined($status));
@@ -6064,17 +6064,35 @@
 # %DESCRIPTION:
 #  Scans message using SpamAssassin (http://www.spamassassin.org)
 #***********************************************************************
-sub spam_assassin_status (;$) {
+sub spam_assassin_status (;$$) {
+    my($config,$username) = @_;
 
-    my $object = spam_assassin_init(@_);
+    my $object = spam_assassin_init($config);
     return undef unless $object;
 
+	if ($username) {
+		push_status_tag("Setting up Preferences");
+		# Set up LDAP preferences if needed
+		if ("$username" =~ /^ldap:/) {
+			$username =~ s/ldap://g;
+			$SASpamTester->load_scoreonly_ldap($username);
+			$SASpamTester->signal_user_changed(
+				{
+					username => $username,
+					user_dir => undef
+				}
+			);
+		}
+		pop_status_tag();
+	}
+
     my $mail = spam_assassin_mail();
     return undef unless $mail;
 
     my $status;
     push_status_tag("Running SpamAssassin");
     $status = $object->check($mail);
+    $mail->finish();
     pop_status_tag();
     return $status;
 }

