[Mimedefang] Patch: Custom headers for SA check
Jonas Eckerman
jonas_lists at frukt.org
Mon May 22 12:15:57 EDT 2006
Hi!
I thought it might be useful to have a simple way of adding custom header that SpamAssassin rules can match on. With this small patch the list
@SpamAssassinHeaders
is available from relay_begin and on.
To add headers simple put them in the list (they should end with "\n"). Here's an example from my filter:
---8<---
my ($hits, $req, $names, $report);
# Add extra headers for checks?
if ($RelayHostname) {
my $xh = sprintf('X-Reverse-FQDN-Check-Results: IP_FQDN_%02u,USER_FQDN_%02u,MAIL_FQDN_%02u,NO_FQDN_%02u',
check_ip_fqdn($RelayHostname,$RelayAddr),
check_user_fqdn($RelayHostname),
check_mail_fqdn($RelayHostname),
check_no_fqdn($RelayHostname,$RelayAddr),
);
debug_log(1,"$xh, $RelayHostname, $RelayAddr");
push @SpamAssassinHeaders, "$xh\n";
}
if ($is_result_query) {
debug_log(2,"spam: running spamassassin query");
($hits, $req, $names, $report) = spam_assassin_check('/usr/local/etc/mimedefang/sa-mimedefang-query.cf');
} else {
debug_log(2,"spam: running spamassassin");
($hits, $req, $names, $report) = spam_assassin_check();
}
---8<---
The headers are added when mimedefang.pl adds other headers before calling SpamAssassin, so this ought to be cheaper than updating the files that mimedefang.pl uses when creating messages for SpamAssassin.
If this patch is a bad idea, please tell me so. :-)
Regards
/Jonas
--
Jonas Eckerman, FSDB & Fruktträdet
http://whatever.frukt.org/
http://www.fsdb.org/
http://www.frukt.org/
-------------- next part --------------
--- mimedefang.pl Fri May 12 15:58:29 2006
+++ mimedefang.pl.new Fri May 12 15:48:48 2006
@@ -58,7 +58,8 @@
$AddApparentlyToForSpamAssassin $WarningCounter
@VirusScannerMessageRoutines @VirusScannerEntityRoutines
$VirusScannerRoutinesInitialized $MDOpenLogCalled
- %SendmailMacros %RecipientMailers $CachedTimezone);
+ %SendmailMacros %RecipientMailers $CachedTimezone
+ @SpamAssassinHeaders);
use vars qw($GeneralWarning);
use vars qw($HTMLFoundEndBody $HTMLBoilerplate $SASpamTester);
@@ -5472,6 +5473,7 @@
undef @StatusTags;
undef @ESMTPArgs;
undef @SenderESMTPArgs;
+ undef @SpamAssassinHeaders;
}
sub builtin_create_parser () {
@@ -5602,6 +5604,9 @@
}
}
+ # Setup empty spamassassin header list
+ @SpamAssassinHeaders = ();
+
# Call pre-scan filter if defined
if (defined(&filter_begin)) {
push_status_tag("In filter_begin");
@@ -6478,6 +6483,7 @@
push(@sahdrs, "Apparently-To: " .
join(", ", @Recipients) . "\n");
}
+ unshift (@msg, @SpamAssassinHeaders);
unshift (@msg, @sahdrs);
my $sa_ver = Mail::SpamAssassin->VERSION();
# Only keep major version number
More information about the MIMEDefang
mailing list