Trouble with training

Matthias Andree matthias.andree at gmx.de
Thu Mar 20 12:19:02 CET 2008


On Wed, 19 Mar 2008, 'Stefan Geißler' wrote:

> Hi,
> 
> I have a problem with training the bogofilter. I use a PHP script. This 
> script adds head and body of an email into a file and passes it as 
> parameter for training to the filter.
> I use following functions:
> 
> 1.) Retrieve the email header:
> function getplainheader()
> {
>   return 
> imap_fetchheader($this->rm_mailbox,$this->rm_currentmessage,FT_UID|FT_INTERNAL|FT_PREFETCHTEXT 
> );
> }
> 
> 2.) Retrieve the mail body:
> function dump_body2()
> {
>    return 
> imap_body($this->rm_mailbox,$this->rm_currentmessage,FT_UID|FT_INTERNAL);
> }
> 
> Then I do following:
> function evaluate_bogospam($rcmail )
> {
>      $mailtext = $rcmail->getplainheader();
>      $mailtext .= $rcmail->dump_body2();
> 
>      if( trim( $mailtext ) != "" )
>      {
>          $filename = 
> "/home/wwwdev/public_html/develope/receivemail/mailbody";
>          $fp = @fopen( $filename, "w" );
>          @fputs( $fp, $mailtext );
>          @fclose( $fp );
> 
>          $cmd = "bogofilter -T -d /home/wwwdev/public_html/local -I 
> ".$filename;
> 
>          exec( $cmd, $ausgabe2, $returnvar );
> 
>          echo "Bogo Filter return value : ".$returnvar . "   :   " . 
> $ausgabe2[0]."<br>";
>      }
> }
> 
> The problem is, that I get in bogosity an "unknown" while the test 
> function above gives me a clear "spam". The related mail was trained 
> before in the same way as shown above.

Missing the "test function above" and not knowing PHP much (lack of
interest and too many security loopholes in deployment), but taking .=
for a string concatenation operator:

Does $mailtext contain the separating blank line between header and
body? That's crucial, since bogofilter treats headers and body
separately.

-- 
Matthias Andree



More information about the Bogofilter mailing list