[Mimedefang] Pseudo-headers for calling SA
Kevin A. McGrail
kmcgrail at pccc.com
Wed Apr 5 11:56:39 EDT 2006
----- Original Message -----
From: "Philip Prindeville" <philipp_subx at redfish-solutions.com>
> When Mimedefang calls SA, what pseudo-headers does it generate
> in the message and where in the code does it insert them?
>
> I was wondering about the recipients being inserted...
>
> I see where the "Return-Path:" gets generated, but not the recipient
> list...
Well, I add a lot of pseudo headers from MD so that SA can trigger on them
and I believe it adds them to INPUTMSG.
Perhaps these functions will help.
Regards,
KAM
sub change_header_immediately {
my (%params) = @_;
&append_header_immediately(%params, change=>1);
#md_syslog('warning', "Changing $params{'header'} immediately");
}
sub append_header_immediately {
#IN ORDER TO HAVE A HEADER TEST IN SPAMASSASSIN REACT TO DATA THAT MD
CREATES, WE HAVE TO EDIT THE INPUTMSG FILE PRIOR TO
#CALLING SA. USING action_change_header, ETC WILL NOT WORK. NO CHANGES
TO THIS FILE ARE SAVED SO IF YOU WANT HEADERS
#ADDED OR APPENDED, USE STANDARD MD CALLS LIKE:
# action_change_header('Date', $date);
# &change_header_immediately(header=>"Date: $date");
my (%params) = @_;
my ($filehandle, $output, $firstlineonly, $header);
$filehandle = new IO::File('+< ./INPUTMSG');
$firstlineonly = 1;
$params{'change'} ||= 0;
$header = $params{'header'};
$header =~ s/^([^:.]*): .*$/$1/;
if (-s "./INPUTMSG" < 256*1024 && $filehandle) {
while (<$filehandle>) {
if ($params{'change'} > 0) {
if ($_ =~ /^$header:/) {
$output .= "$params{'header'}\n";
} else {
$output .= $_;
}
} elsif ($_ =~ /^$/ && $firstlineonly) {
$output .= "$params{'header'}\n$_";
$firstlineonly = 0;
} else {
$output .= $_;
}
}
}
seek $filehandle, 0, 0;
print $filehandle $output;
close ($filehandle);
#md_syslog('warning', "Adding $params{'header'} immediately");
}
More information about the MIMEDefang
mailing list