--- amavisd.orig 2008-12-15 01:50:09.000000000 +0100 +++ amavisd 2009-02-04 15:26:19.000000000 +0100 @@ -992,4 +992,5 @@ X-Spam-Status X-Spam-Level X-Spam-Flag X-Spam-Score X-Spam-Report X-Spam-Checker-Version X-Spam-Tests + X-Spam-CRM114-Status X-Spam-CRM114-CacheID X-DSPAM-Signature X-DSPAM-Result X-DSPAM-Confidence X-DSPAM-Probability X-DSPAM-User X-DSPAM-Factors @@ -10210,10 +10211,19 @@ } if ($spam_presence_checked) { - my($spam_level,$spam_status,$spam_report,$spam_summary) = - @$cache_entry{'SL','SS','SR','SY'}; +# my($spam_level,$spam_status,$spam_report,$spam_summary) = +# @$cache_entry{'SL','SS','SR','SY'}; + my($spam_level,$spam_status,$spam_report,$spam_summary, + $crm114_score,$crm114_status,$crm114_cacheid) = + @$cache_entry{'SL','SS','SR','SY','SCS','SCT','SCI'}; $msginfo->spam_level($spam_level); $msginfo->spam_status($spam_status); $msginfo->spam_report($spam_report); $msginfo->spam_summary($spam_summary); + $msginfo->supplementary_info('CRM114SCORE', + $crm114_score) if defined $crm114_score; + $msginfo->supplementary_info('CRM114STATUS', + $crm114_status) if defined $crm114_status; + $msginfo->supplementary_info('CRM114CACHEID', + $crm114_cacheid) if defined $crm114_cacheid; } do_log(1,"cached %s from <%s> (%s,%s)", $body_digest, $sender, @@ -10482,7 +10492,13 @@ $elapsed{'TimeElapsedSpamCheck'} = Time::HiRes::time - $t0_sect; snmp_count('OpsSpamCheck'); - @$cache_entry{'St','SL','SS','SR','SY'} = +# @$cache_entry{'St','SL','SS','SR','SY'} = +# (int($now), $msginfo->spam_level, $msginfo->spam_status, +# $msginfo->spam_report, $msginfo->spam_summary); + @$cache_entry{'St','SL','SS','SR','SY','SCS','SCT','SCI'} = (int($now), $msginfo->spam_level, $msginfo->spam_status, - $msginfo->spam_report, $msginfo->spam_summary); + $msginfo->spam_report, $msginfo->spam_summary, + $msginfo->supplementary_info('CRM114SCORE'), + $msginfo->supplementary_info('CRM114STATUS'), + $msginfo->supplementary_info('CRM114CACHEID')); $spam_presence_checked = 1; } @@ -11636,5 +11652,6 @@ @headers_to_be_removed = qw( X-Spam-Status X-Spam-Level X-Spam-Flag X-Spam-Score - X-Spam-Report X-Spam-Checker-Version X-Spam-Tests); + X-Spam-Report X-Spam-Checker-Version X-Spam-Tests + X-Spam-CRM114-Status X-Spam-CRM114-CacheID); push(@headers_to_be_removed, qw( X-DSPAM-Result X-DSPAM-Confidence X-DSPAM-Probability @@ -11820,4 +11837,17 @@ if $allowed_hdrs && $allowed_hdrs->{lc('X-Spam-Status')}; } + if ($is_local) { + my($crm114_status) = $msginfo->supplementary_info('CRM114STATUS'); + if (defined $crm114_status && + $allowed_hdrs && $allowed_hdrs->{lc('X-Spam-CRM114-Status')}) { + $hdr_edits->add_header('X-Spam-CRM114-Status', sprintf("%s ( %s )", + $crm114_status, $msginfo->supplementary_info('CRM114SCORE')), 1); + } + my($crm114_cacheid) = $msginfo->supplementary_info('CRM114CACHEID'); + if (defined $crm114_cacheid && + $allowed_hdrs && $allowed_hdrs->{lc('X-Spam-CRM114-CacheID')}) { + $hdr_edits->add_header('X-Spam-CRM114-CacheID', $crm114_cacheid, 1); + } + } if ($do_tag2 && $is_local) { # SA reports may contain any octet, i.e. 8-bit data from a mail @@ -21190,5 +21220,6 @@ for my $t (qw(TESTS AUTOLEARN AUTOLEARNSCORE SC SCRULE SCTYPE LANGUAGES RELAYCOUNTRY ASN ASNCIDR DCCB DCCR DCCREP - DKIMDOMAIN DKIMIDENTITY AWLSIGNERMEAN)) { + DKIMDOMAIN DKIMIDENTITY AWLSIGNERMEAN + CRM114STATUS CRM114SCORE CRM114CACHEID)) { $supplementary_info{$t} = $per_msg_status->et_tag($t); }