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