Philip Prindeville wrote:
> Could we add an example of using envelope info?

SpamAssassin doesn't see the envelope.  Some MTAs add headers for 
envelope-header and envelope-recipients (Return-Path:, X-Apparently-To:, etc.)

If you're careful about how you call SpamAssassin you can fake envelope rules 
using these headers.

For example MIMEDefang adds the following headers prior to calling SpamAssassin:

Return-Path: (envelope-sender)
Received: (sendmail-style)
Apparently-To: (envelope-recipients)

(in mimedefang.pl, sub spam_assassin_mail)

    # Synthesize a "Return-Path" and "Received:" header
    my @sahdrs;
    push (@sahdrs, "Return-Path: $Sender\n");
    push (@sahdrs, split(/^/m, synthesize_received_header()));
    push (@sahdrs, gen_msgid_header()) if ($MessageID eq "NOQUEUE");
    # Add To: header if one missing
    if (open(IN, "<./HEADERS")) {
        my $hto = grep { /^To:/i } <IN>;
        close(IN);
        push(@sahdrs, "To: undisclosed-recipients:;\n") unless $hto;
    }

    if ($AddApparentlyToForSpamAssassin and
        ($#Recipients >= 0)) {
        push(@sahdrs, "Apparently-To: " .
             join(", ", @Recipients) . "\n");
    }
    unshift (@msg, @sahdrs);
    my $sa_ver = Mail::SpamAssassin->VERSION();
    # Only keep major version number
    $sa_ver =~ s/\..*//;
    if ($sa_ver >= 3) {
        if (!defined($SASpamTester)) {
            my $object = spam_assassin_init(@_);
            return undef unless $object;
        }
        return $SASpamTester->parse([EMAIL PROTECTED]);
    } else {
        return Mail::SpamAssassin::NoMailAudit->new(data=>[EMAIL PROTECTED]);
    }

-- 
Matthew.van.Eerde (at) hbinc.com               805.964.4554 x902
Hispanic Business Inc./HireDiversity.com       Software Engineer

Reply via email to