<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/TR/REC-html40" xmlns:v = 
"urn:schemas-microsoft-com:vml" xmlns:o = 
"urn:schemas-microsoft-com:office:office" xmlns:w = 
"urn:schemas-microsoft-com:office:word" xmlns:m = 
"http://schemas.microsoft.com/office/2004/12/omml"><HEAD>
<META content="text/html; charset=utf-8" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.23588">
<STYLE><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Texte brut Car";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
span.TextebrutCar
        {mso-style-name:"Texte brut Car";
        mso-style-priority:99;
        mso-style-link:"Texte brut";
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1004236920;
        mso-list-type:hybrid;
        mso-list-template-ids:-37034752 -670011980 202113049 202113051 202113039 202113049 202113051 202113039 202113049 202113051;}
@list l0:level1
        {mso-level-text:%1-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></STYLE>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></HEAD>
<BODY lang=FR-CA link=#0563c1 vLink=#954f72>
<DIV>Is the output to screen or to a file?</DIV>
<DIV> </DIV>
<DIV>Thanks.</DIV>
<DIV><BR><FONT size=2 face=Arial>*********** REPLY SEPARATOR 
***********<BR><BR>On 22/06/2015 at 5:51 PM Denis Beauchemin wrote:</FONT></DIV>
<BLOCKQUOTE 
style="BORDER-LEFT: #000000 2px solid; PADDING-LEFT: 5px; MARGIN-LEFT: 5px">
  <DIV class=WordSection1>
  <P class=MsoPlainText><SPAN lang=EN-CA>My log lines look like 
  this:<o:p></o:p></SPAN></P>
  <P class=MsoPlainText><SPAN lang=EN-CA>Jun 22 13:26:16 10.32.103.21 smtps2 
  MailScanner[47071]: Message t5MHQFDv033375 from 10.32.106.21 
  (someone@usherbrooke.ca) to usherbrooke.ca is n'<SPAN 
  style="BACKGROUND: yellow; mso-highlight: yellow">est pas un polluriel, 
  SpamAssassin</SPAN> (<SPAN style="BACKGROUND: lime; mso-highlight: lime">not 
  cached,</SPAN> <SPAN 
  style="BACKGROUND: aqua; mso-highlight: aqua">score=</SPAN>-6.206, <SPAN 
  style="BACKGROUND: gray; mso-highlight: gray">requis</SPAN> 6.5, autolearn=not 
  spam, BAYES_00 -1.90, HTML_MESSAGE 0.00, RDNS_NONE 0.79, UDES_FROM01 -3.00, 
  UDES_FROM02 -0.10, UDES_FROMTO01 -2.00)<o:p></o:p></SPAN></P>
  <P class=MsoPlainText><SPAN lang=EN-CA>Jun 22 13:27:23 10.32.103.28 smtpe1 
  MailScanner[61090]: Message t5MHR8mw063252 from 64.5.96.10 
  (someone@alliinclusive.space) to usherbrooke.ca is <SPAN 
  style="BACKGROUND: yellow; mso-highlight: yellow">est un polluriel, 
  SpamAssassin</SPAN> (<SPAN style="BACKGROUND: lime; mso-highlight: lime">not 
  cached,</SPAN> <SPAN 
  style="BACKGROUND: aqua; mso-highlight: aqua">score=</SPAN>7.776, <SPAN 
  style="BACKGROUND: gray; mso-highlight: gray">requis</SPAN> 6.5, <SPAN 
  style="BACKGROUND: silver; mso-highlight: silver">autolearn=spam</SPAN>, 
  BAYES_50 0.80, HTML_EXTRA_CLOSE 0.00, HTML_MESSAGE 0.00, HTML_TAG_BALANCE_BODY 
  1.16, MIME_HTML_ONLY 0.72, MIME_HTML_ONLY_MULTI 0.00, MPART_ALT_DIFF 0.79, 
  RDNS_NONE 0.79, STYLE_GIBBERISH 3.50, T_REMOTE_IMAGE 
  0.01)<o:p></o:p></SPAN></P>
  <P class=MsoPlainText><SPAN lang=EN-CA><o:p> </o:p></SPAN></P>
  <P class=MsoPlainText><SPAN lang=EN-CA>The script does a first grep for the 
  strings in <SPAN 
  style="BACKGROUND: yellow; mso-highlight: yellow">yellow</SPAN>. There’s a 
  third string that matches all ham/spam: <SPAN 
  style="BACKGROUND: yellow; mso-highlight: yellow">un polluriel, 
  SpamAssassin</SPAN><o:p></o:p></SPAN></P>
  <P class=MsoPlainText><SPAN lang=EN-CA><o:p> </o:p></SPAN></P>
  <P class=MsoPlainText><SPAN lang=EN-CA>Then Perl is used to search for lines 
  that match:<o:p></o:p></SPAN></P>
  <P style="TEXT-INDENT: -18pt; MARGIN-LEFT: 36pt; mso-list: l0 level1 lfo1" 
  class=MsoPlainText><![if !supportLists]><SPAN lang=EN-CA><SPAN 
  style="mso-list: Ignore">1-<SPAN 
  style="FONT: 7pt 'Times New Roman'">      
  </SPAN></SPAN></SPAN><![endif]><SPAN lang=EN-CA>The <SPAN 
  style="BACKGROUND: yellow; mso-highlight: yellow">yellow</SPAN> string 
  followed by “ (“<o:p></o:p></SPAN></P>
  <P style="TEXT-INDENT: -18pt; MARGIN-LEFT: 36pt; mso-list: l0 level1 lfo1" 
  class=MsoPlainText><![if !supportLists]><SPAN lang=EN-CA><SPAN 
  style="mso-list: Ignore">2-<SPAN 
  style="FONT: 7pt 'Times New Roman'">      
  </SPAN></SPAN></SPAN><![endif]><SPAN lang=EN-CA>Then the <SPAN 
  style="BACKGROUND: lime; mso-highlight: lime">green</SPAN> string (could also 
  be “cached”)<o:p></o:p></SPAN></P>
  <P style="TEXT-INDENT: -18pt; MARGIN-LEFT: 36pt; mso-list: l0 level1 lfo1" 
  class=MsoPlainText><![if !supportLists]><SPAN lang=EN-CA><SPAN 
  style="mso-list: Ignore">3-<SPAN 
  style="FONT: 7pt 'Times New Roman'">      
  </SPAN></SPAN></SPAN><![endif]><SPAN lang=EN-CA>Then the <SPAN 
  style="BACKGROUND: aqua; mso-highlight: aqua">blue</SPAN> strings, including 
  the digits, decimal point and minus sign<o:p></o:p></SPAN></P>
  <P style="TEXT-INDENT: -18pt; MARGIN-LEFT: 36pt; mso-list: l0 level1 lfo1" 
  class=MsoPlainText><![if !supportLists]><SPAN lang=EN-CA><SPAN 
  style="mso-list: Ignore">4-<SPAN 
  style="FONT: 7pt 'Times New Roman'">      
  </SPAN></SPAN></SPAN><![endif]><SPAN lang=EN-CA>Then the <SPAN 
  style="BACKGROUND: gray; mso-highlight: gray">dark grey</SPAN> strings, 
  including the digits, decimal point and minus sign<o:p></o:p></SPAN></P>
  <P style="TEXT-INDENT: -18pt; MARGIN-LEFT: 36pt; mso-list: l0 level1 lfo1" 
  class=MsoPlainText><![if !supportLists]><SPAN lang=EN-CA><SPAN 
  style="mso-list: Ignore">5-<SPAN 
  style="FONT: 7pt 'Times New Roman'">      
  </SPAN></SPAN></SPAN><![endif]><SPAN lang=EN-CA>Then the <SPAN 
  style="BACKGROUND: silver; mso-highlight: silver">light gray</SPAN> string 
  that could be omitted<o:p></o:p></SPAN></P>
  <P style="TEXT-INDENT: -18pt; MARGIN-LEFT: 36pt; mso-list: l0 level1 lfo1" 
  class=MsoPlainText><![if !supportLists]><SPAN lang=EN-CA><SPAN 
  style="mso-list: Ignore">6-<SPAN 
  style="FONT: 7pt 'Times New Roman'">      
  </SPAN></SPAN></SPAN><![endif]><SPAN lang=EN-CA>Then all the rules names and 
  their respective score (could be negative)<o:p></o:p></SPAN></P>
  <P class=MsoPlainText><SPAN lang=EN-CA><o:p> </o:p></SPAN></P>
  <P class=MsoPlainText><SPAN lang=EN-CA>At the end the matching rules are 
  printed sorted as requested.<o:p></o:p></SPAN></P>
  <P class=MsoPlainText><SPAN lang=EN-CA><o:p> </o:p></SPAN></P>
  <P class=MsoPlainText><SPAN lang=EN-CA>Denis<o:p></o:p></SPAN></P>
  <P class=MsoPlainText><SPAN lang=EN-CA><o:p> </o:p></SPAN></P>
  <P class=MsoPlainText><SPAN style="mso-fareast-language: FR-CA" 
  lang=FR>-----Message d'origine-----<BR>De : MailScanner 
  [mailto:mailscanner-bounces@lists.mailscanner.info] De la part de Peter 
  Nitschke<BR>Envoyé : 22 juin 2015 13:21<BR>À : 
  mailscanner@lists.mailscanner.info<BR>Objet : RE: Check which rules 
  hit</SPAN></P>
  <P class=MsoPlainText><o:p> </o:p></P>
  <P class=MsoPlainText>This looks interesting.<o:p></o:p></P>
  <P class=MsoPlainText><o:p> </o:p></P>
  <P class=MsoPlainText>I edited to English for spam, not spam etc, but when I 
  run it, it just says "processing /var/log/maillog" and is very fast, but I get 
  nothing, no output to screen or file that I can find.<o:p></o:p></P>
  <P class=MsoPlainText><o:p> </o:p></P>
  <P class=MsoPlainText>Any suggestions how I can understand it 
  better?<o:p></o:p></P>
  <P class=MsoPlainText><o:p> </o:p></P>
  <P class=MsoPlainText>Thanks,<o:p></o:p></P>
  <P class=MsoPlainText><o:p> </o:p></P>
  <P class=MsoPlainText>Peter<o:p></o:p></P>
  <P class=MsoPlainText><o:p> </o:p></P>
  <P class=MsoPlainText><o:p> </o:p></P>
  <P class=MsoPlainText>*********** REPLY SEPARATOR  
  ***********<o:p></o:p></P>
  <P class=MsoPlainText><o:p> </o:p></P>
  <P class=MsoPlainText>On 19/06/2015 at 12:26 PM Denis Beauchemin 
  wrote:<o:p></o:p></P>
  <P class=MsoPlainText><o:p> </o:p></P>
  <P class=MsoPlainText>>This encoded message has been converted to an 
  attachment.<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>I created this script a while back just to do 
  that:<o:p></o:p></P>
  <P class=MsoPlainText>>#!/usr/bin/perl -w<o:p></o:p></P>
  <P class=MsoPlainText>>#<o:p></o:p></P>
  <P class=MsoPlainText>># Script that looks through maillog to find all 
  messages tagged as spam <o:p></o:p></P>
  <P class=MsoPlainText>># by MailScanner.  It then tallies the 
  different SpamAssassin rules <o:p></o:p></P>
  <P class=MsoPlainText>>that # fired.<o:p></o:p></P>
  <P class=MsoPlainText>># Denis Beauchemin, 20050516<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>use Getopt::Long;<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>># Where some commands reside:<o:p></o:p></P>
  <P class=MsoPlainText>>my $GREP   = "/bin/grep";<o:p></o:p></P>
  <P class=MsoPlainText>>my $GUNZIP = "/bin/gunzip";<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>># Value of "Spam =" in %report-dir%/languages.conf 
  my $isSpamString  = <o:p></o:p></P>
  <P class=MsoPlainText>>"est un polluriel, SpamAssassin";<o:p></o:p></P>
  <P class=MsoPlainText>>my $isHamString   = "est pas un polluriel, 
  SpamAssassin";<o:p></o:p></P>
  <P class=MsoPlainText>>my $allString     = " un 
  polluriel, SpamAssassin";<o:p></o:p></P>
  <P class=MsoPlainText>># Value of "score =" in 
  %report-dir%/languages.conf<o:p></o:p></P>
  <P class=MsoPlainText>>my $scoreString   = 
  "score=";<o:p></o:p></P>
  <P class=MsoPlainText>># Value of "required =" in 
  %report-dir%/languages.conf<o:p></o:p></P>
  <P class=MsoPlainText>>my $reqdString    = "requis 
  ";<o:p></o:p></P>
  <P class=MsoPlainText>>my $autoString    = 
  "autolearn=spam";<o:p></o:p></P>
  <P class=MsoPlainText>>my $cachedString  = "cached, ";<o:p></o:p></P>
  <P class=MsoPlainText>>my $nCachedString = "not cached, ";<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>my $maillog = "/var/log/maillog";<o:p></o:p></P>
  <P class=MsoPlainText>>@maillogs = ();<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>my $sortByName = 0;<o:p></o:p></P>
  <P class=MsoPlainText>>my $sortByHits = 0;<o:p></o:p></P>
  <P class=MsoPlainText>>my $getHam = 0;<o:p></o:p></P>
  <P class=MsoPlainText>>my $getAll = 0;<o:p></o:p></P>
  <P class=MsoPlainText>>my $help = 0;<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>GetOptions(<o:p></o:p></P>
  <P class=MsoPlainText>>    'sortbyname|byname' => 
  \$sortByName,<o:p></o:p></P>
  <P class=MsoPlainText>>    'sortbyhits|byhits' => 
  \$sortByHits,<o:p></o:p></P>
  <P class=MsoPlainText>>    'log=s' => 
  \@maillogs,<o:p></o:p></P>
  <P class=MsoPlainText>>    'ham'   => 
  \$getHam,<o:p></o:p></P>
  <P class=MsoPlainText>>    'all'   => 
  \$getAll,<o:p></o:p></P>
  <P class=MsoPlainText>>    'help'  => 
  \$help,<o:p></o:p></P>
  <P class=MsoPlainText>>);<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>if ( $help ) {<o:p></o:p></P>
  <P class=MsoPlainText>>    print '<o:p></o:p></P>
  <P class=MsoPlainText>>This program tallies SpamAssassin\'s rules that were 
  triggered when an <o:p></o:p></P>
  <P class=MsoPlainText>>email was detected as spam by 
  MailScanner.<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>You can search for ham with the --ham option. 
  <o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>You can search for all SpamAssassin results with the 
  --all option.<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>By default it sorts the results by rule name. It can 
  also sort them by <o:p></o:p></P>
  <P class=MsoPlainText>>number of hits if called with --sortbyhits (or 
  --byhits).<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>The option --sortbyname (or --byname) is the default 
  one.<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>If you don\'t want to use the current maillog, 
  specify a different one <o:p></o:p></P>
  <P class=MsoPlainText>>with --log new-maillog.<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>All unknown command line parameters will be treated 
  as additional file <o:p></o:p></P>
  <P class=MsoPlainText>>names to process.<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>It is OK for a log file to be 
gzipped.<o:p></o:p></P>
  <P class=MsoPlainText>>';<o:p></o:p></P>
  <P class=MsoPlainText>>    exit;<o:p></o:p></P>
  <P class=MsoPlainText>>}<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>push @maillogs, @ARGV;<o:p></o:p></P>
  <P class=MsoPlainText>>@maillogs = ( $maillog ) if ( @maillogs  == 0 
  ); #print "Maillogs: <o:p></o:p></P>
  <P class=MsoPlainText>>@maillogs\n"; #my $searchString = $getHam ? 
  $isHamString : <o:p></o:p></P>
  <P class=MsoPlainText>>$isSpamString; my $searchString; if ( $getAll ) 
  {<o:p></o:p></P>
  <P class=MsoPlainText>>    $searchString = 
  "$allString";<o:p></o:p></P>
  <P class=MsoPlainText>>} elsif ( $getHam ) {<o:p></o:p></P>
  <P class=MsoPlainText>>    $searchString = 
  "$isHamString";<o:p></o:p></P>
  <P class=MsoPlainText>>} else {<o:p></o:p></P>
  <P class=MsoPlainText>>    $searchString = 
  "$isSpamString";<o:p></o:p></P>
  <P class=MsoPlainText>>}<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>foreach my $maillog ( @maillogs ) {<o:p></o:p></P>
  <P class=MsoPlainText>>    print "Processing 
  $maillog...\n";<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>    $sortByName++ if ( ( $sortByName 
  == 0 ) && ( $sortByHits == 0<o:p></o:p></P>
  <P class=MsoPlainText>) );<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>    my $openCmd = "LANG=C $GREP 
  \"$searchString\" $maillog |";<o:p></o:p></P>
  <P class=MsoPlainText>>    if ( $maillog =~ /\.gz$/ ) 
  {<o:p></o:p></P>
  <P class=MsoPlainText>>        $openCmd 
  = "$GUNZIP -c $maillog | LANG=C $GREP<o:p></o:p></P>
  <P class=MsoPlainText>\"$searchString\"<o:p></o:p></P>
  <P class=MsoPlainText>>|";<o:p></o:p></P>
  <P class=MsoPlainText>>    }<o:p></o:p></P>
  <P class=MsoPlainText>>    open LOG, "$openCmd" || die 
  "Cannot open $maillog";<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>    while ( <LOG> ) 
  {<o:p></o:p></P>
  <P class=MsoPlainText>>        next 
  unless /$searchString<o:p></o:p></P>
  <P 
  class=MsoPlainText>>\((?:$cachedString|$nCachedString)$scoreString[-\d.]+, 
  $reqdStrin<o:p></o:p></P>
  <P class=MsoPlainText>>g[-\d.]+,(?: $autoString,)?(.*)$/;<o:p></o:p></P>
  <P class=MsoPlainText>>        my $hits 
  = $1;<o:p></o:p></P>
  <P class=MsoPlainText>>        foreach 
  my $hit ( $hits =~ / ([^\s]+) -?[\d.]+(?:,|\))/g ) {<o:p></o:p></P>
  <P 
  class=MsoPlainText>>            
  $hit{$hit}++;<o:p></o:p></P>
  <P class=MsoPlainText>>        
  }<o:p></o:p></P>
  <P class=MsoPlainText>>    }<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>    close LOG;<o:p></o:p></P>
  <P class=MsoPlainText>>}<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>if ( $sortByName ) {<o:p></o:p></P>
  <P class=MsoPlainText>>    foreach my $hit ( sort keys %hit 
  ) {<o:p></o:p></P>
  <P class=MsoPlainText>>        printf 
  "%27s %5d\n", $hit, $hit{$hit};<o:p></o:p></P>
  <P class=MsoPlainText>>    }<o:p></o:p></P>
  <P class=MsoPlainText>>} elsif ( $sortByHits ) {<o:p></o:p></P>
  <P class=MsoPlainText>>    foreach my $hit ( sort 
  {$hit{$b}<=>$hit{$a}} keys %hit ) {<o:p></o:p></P>
  <P class=MsoPlainText>>        printf 
  "%27s %5d\n", $hit, $hit{$hit};<o:p></o:p></P>
  <P class=MsoPlainText>>    }<o:p></o:p></P>
  <P class=MsoPlainText>>}<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>-----Message d'origine-----<o:p></o:p></P>
  <P class=MsoPlainText>>De : MailScanner [<A 
  href="mailto:mailscanner-bounces@lists.mailscanner.info"><SPAN 
  style="COLOR: windowtext; TEXT-DECORATION: none">mailto:mailscanner-bounces@lists.mailscanner.info</SPAN></A>]<o:p></o:p></P>
  <P class=MsoPlainText>De<o:p></o:p></P>
  <P class=MsoPlainText>>la part de Peter Nitschke<o:p></o:p></P>
  <P class=MsoPlainText>>Envoyé : 19 juin 2015 02:21<o:p></o:p></P>
  <P class=MsoPlainText>>À : <A 
  href="mailto:mailscanner@lists.mailscanner.info"><SPAN 
  style="COLOR: windowtext; TEXT-DECORATION: none">mailscanner@lists.mailscanner.info</SPAN></A><o:p></o:p></P>
  <P class=MsoPlainText>>Objet : Check which rules hit<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>I have built up a large number of rules for SA to 
  use with MS and many <o:p></o:p></P>
  <P class=MsoPlainText>>are probably now obsolete.<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>How can I monitor which rules are getting 
  hits?<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>Thanks.<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>Peter<o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>>--<o:p></o:p></P>
  <P class=MsoPlainText>>MailScanner mailing list<o:p></o:p></P>
  <P class=MsoPlainText>><A 
  href="mailto:mailscanner@lists.mailscanner.info"><SPAN 
  style="COLOR: windowtext; TEXT-DECORATION: none">mailscanner@lists.mailscanner.info</SPAN></A><o:p></o:p></P>
  <P class=MsoPlainText>><A 
  href="http://lists.mailscanner.info/listinfo/mailscanner"><SPAN 
  style="COLOR: windowtext; TEXT-DECORATION: none">http://lists.mailscanner.info/listinfo/mailscanner</SPAN></A><o:p></o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText>><o:p> </o:p></P>
  <P class=MsoPlainText><o:p> </o:p></P>
  <P class=MsoPlainText>--<o:p></o:p></P>
  <P class=MsoPlainText>MailScanner mailing<o:p></o:p></P>
  <P class=MsoPlainText>>list<o:p></o:p></P>
  <P class=MsoPlainText><A 
  href="mailto:mailscanner@lists.mailscanner.info"><SPAN 
  style="COLOR: windowtext; TEXT-DECORATION: none">mailscanner@lists.mailscanner.info</SPAN></A><o:p></o:p></P>
  <P class=MsoPlainText><A 
  href="http://lists.mailscanner.info/listinfo/mailscanner"><SPAN 
  style="COLOR: windowtext; TEXT-DECORATION: none">http://lists.mailscanner.info/listinfo/mailscanner</SPAN></A><o:p></o:p></P>
  <P class=MsoPlainText><o:p> </o:p></P>
  <P class=MsoPlainText><o:p> </o:p></P>
  <P class=MsoPlainText><o:p> </o:p></P></DIV><FONT size=2 
Arial></BLOCKQUOTE></FONT></BODY></HTML>