patch-lib_MailScanner_GenericSpam_pm 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. $OpenBSD: patch-lib_MailScanner_GenericSpam_pm,v 1.1.1.1 2008/02/20 03:47:18 todd Exp $
  2. --- lib/MailScanner/GenericSpam.pm.orig Thu Dec 7 13:12:22 2006
  3. +++ lib/MailScanner/GenericSpam.pm Thu Dec 7 13:33:07 2006
  4. @@ -101,19 +101,19 @@ sub Checks {
  5. push(@WholeMessage, "\n");
  6. $message->{store}->ReadBody(\@WholeMessage, $maxsize);
  7. - my($GenericSpamResult, $GenericSpamReport);
  8. + my($GenericSpamResult, $GenericSpamReport, @GenericSpamHeaders);
  9. $GenericSpamResult = 0;
  10. $GenericSpamReport = "";
  11. - ($GenericSpamResult, $GenericSpamReport) =
  12. + ($GenericSpamResult, $GenericSpamReport, @GenericSpamHeaders) =
  13. GSForkAndTest($message, \@WholeMessage);
  14. - return ($GenericSpamResult, $GenericSpamReport);
  15. + return ($GenericSpamResult, $GenericSpamReport, @GenericSpamHeaders);
  16. }
  17. # Run the generic spam scanner, and capture the 2 lines of output
  18. sub GSForkAndTest {
  19. my($Message, $Contents) = @_;
  20. - my($pipe, $gsscore, $gsreport, $queuelength);
  21. + my($pipe, $gsscore, $gsreport, @gsheaders, $queuelength);
  22. my $PipeReturn = 0;
  23. $queuelength = MailScanner::Config::Value('gstimeoutlen', $Message);
  24. @@ -129,23 +129,25 @@ sub GSForkAndTest {
  25. # In the child
  26. $pipe->writer();
  27. $pipe->autoflush();
  28. - my($gsscore, $gsreport);
  29. + my($gsscore, $gsreport, @gsheaders);
  30. eval {
  31. #print STDERR "ClientIP = " . $Message->{clientip} . "\n";
  32. #print STDERR "From = " . $Message->{from} . "\n";
  33. #print STDERR "To = " . join(', ', @{$Message->{to}}) . "\n";
  34. #print STDERR "This is in the caller\n";
  35. - ($gsscore, $gsreport) = MailScanner::CustomConfig::GenericSpamScanner(
  36. - $Message->{clientip},
  37. - $Message->{from},
  38. - $Message->{to},
  39. + ($gsscore, $gsreport, @gsheaders) = MailScanner::CustomConfig::GenericSpamScanner(
  40. + $Message,
  41. $Contents);
  42. };
  43. $gsscore = $gsscore + 0.0;
  44. print $pipe "$gsscore\n";
  45. print $pipe $gsreport . "\n";
  46. + foreach my $header (@gsheaders) {
  47. + #print STDERR " to pipe .. <$header> \n";
  48. + print $pipe $header . "\n";
  49. + }
  50. $pipe->close();
  51. $pipe = undef;
  52. exit 0;
  53. @@ -157,6 +159,10 @@ sub GSForkAndTest {
  54. alarm MailScanner::Config::Value('gstimeout');
  55. $gsscore = <$pipe>;
  56. $gsreport = <$pipe>;
  57. + foreach my $h (<$pipe>) {
  58. + chomp $h;
  59. + push @gsheaders,$h;
  60. + }
  61. # Not sure if next 2 lines should be this way round...
  62. waitpid $pid, 0;
  63. @@ -246,7 +252,7 @@ sub GSForkAndTest {
  64. #print STDERR "Generic Spam Scanner points = $gsscore\n";
  65. #print STDERR "Generic Spam Scanner report = $gsreport\n";
  66. - return ($gsscore, $gsreport);
  67. + return ($gsscore, $gsreport, @gsheaders);
  68. }
  69. 1;