[Mimedefang] How can mimedefang use spamc/spamd funcitons of	spamassassin?
    John Nemeth 
    jnemeth at victoria.tc.ca
       
    Tue Apr 12 17:22:05 EDT 2005
    
    
  
On Sep 2,  6:37am, "Keith Patton" wrote:
} 
}  I need to create a per user set of rules for spamassassin. I see where 
} spamassassin supports it with ldap or sql, however it only appears to 
} work using the spamc/spamd pair not spamassasin -t..
     No, it works fine with the Mail::SpamAssassin modules.
} The best I can figure out is that mimedefang is using spamassassin -t 
} and not spamc/spamd.
     No, it directly uses the Mail::SpamAssassin modules.
} Is there anyone out here that has accomplished getting it to use 
} spamc/spamd?  or does anyone have any ideas on how to accomplish with 
} the least amount of effort?
     I store SpamAssassin preferences in a MySQL database.  I use
MIMEDefang's stream_by_recipient() to split up multi-recipient messages.
Then I simply do:
$SASpamTester->load_scoreonly_sql($user);
prior to:
my($hits, $req, $names, $report) = spam_assassin_check();
$user is found using this function (is_local_virtual() determines if
the domain is one that is handled by virtusertable, and is
is_local_alias() determines if the domain is considered to be
equivalent to the primary hostname; they do this by checking a list of
domains which is initialised in filter_initialize by reading them from
a file):
sub should_check_for_spam ($) {
    my($recip) = @_;
    my($value) = undef;
    $recip =~ tr/<>//d;
    $user = $recip;
    $user =~ s/(^.*)\@.*/$1/;
    $domain = lc $recip;
    $domain =~ s/.*\@(.*$)/$1/;
    $fulladdr = $user . '@' . $domain;
    if (is_local_virtual($domain)) {
        $dbh = get_db_connection();
        $quoteduser = $dbh->quote($fulladdr);
        $sth = $dbh->prepare(qq{SELECT value FROM userpref WHERE username = $quo
teduser && preference = 'checkspam'});
        $sth->execute();
        $value = $sth->fetchrow_array();
        $sth->finish();
        if (!defined($value) || $value ne "no") {
            return $fulladdr;
        }
    }
    if (is_local_alias($domain)) {
        $dbh = get_db_connection();
        $quoteduser = $dbh->quote($user);
        $sth = $dbh->prepare(qq{SELECT value FROM userpref WHERE username = $quo
teduser && preference = 'checkspam'});
        $sth->execute();
        $value = $sth->fetchrow_array();
        $sth->finish();
        if (!defined($value) || $value ne "no") {
            return $user;
        }
    }
    return undef;
}
}-- End of excerpt from "Keith Patton"
    
    
More information about the MIMEDefang
mailing list