You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-user@james.apache.org by Jerry M <te...@malcolms.com> on 2007/02/05 19:34:49 UTC

Updating Bayesian Tables From Outside of James

Just checking to see if this has already been done, or if someone can 
offer a little technical advice....

Here's the situation....

    1) I have my config set up such that if the Bayesian filter flags 
spam, I route the message to a separate parallel inbox for the user 
named "spam.<inboxname>".  The intent here is to keep the flagged notes 
available to the user to review, but not make the user download tons of 
"probable spam" along with the good email.  Setting up a 2nd inbox gives 
the user control for separate handling of spam as they choose.  They can 
download from this inbox as well, or they can ignore it and leave it on 
the server.  (I have a pruner task that runs periodically and cleans out 
old spam from the spam mailboxes).

    2) I have a servlet that will let them see their list of spam in 
this spam inbox via a web page ( I'm not using POP or anything... I'm 
simply querying the inbox table for matching records from their spam inbox).

    3) If they find a mis-flagged note that is not spam, they simply 
click a button on the note and I move the note back to their regular 
inbox to be downloaded.

OK, all of that works fine... But if a note is incorrectly flagged as 
spam, I need to pass this knowledge to the Bayesian filter.  I know the 
documented way to do this is to wait till it downloads, then send it as 
an attachment to not.spam@.... etc., etc.  But that takes additional 
work on the user's part and/or my part and is a pain I'd like to avoid.

The fact is, I knew when the user clicked the button that it was not 
spam.  However, at that point, I'm not in James.  I'm simply using a 
servlet to access the mail db.  But I'd like to go ahead and notify the 
Bayesian filter automatically at that point.

The brute-force way to do this inside the servlet is to read the message 
record out of the database, construct an email from it and make it an 
attachment on another email, set the address to not.spam@.... and do a 
sendmail to James.  Maybe that's the best way to do it.  If so, I can do 
that.  But I'm just curious if there are any easier ways where I can, 
for example, just move the db record from the Inbox table to the spool 
table and change the address to not.spam, or something like that.

Recommendations?  Can someone that understands the inner workings of 
James tell me if there are any simpler processes for a servlet to take a 
note that's currently in the inbox and get the Bayesian feeder to 
process it as either spam or not-spam?

BTW... I'm a very proficient Java programmer.  So I can code just about 
anything, as long as I understand the workings of the code I'm calling.

Thanks.

Jerry


---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
For additional commands, e-mail: server-user-help@james.apache.org


Re: Updating Bayesian Tables From Outside of James

Posted by Tom Brown <to...@gmail.com>.
I think that programatically sending a copy of the message to
"not.spam" would be the best way to accomplish this task. This is
because it would allow the internals of JAMES (or the bayesian filter)
to change dramatically with no impact to your software. Just think of
it as a black-box API.

Of course, this will not return the same performance as would a more
tightly integrated solution, but you'll thank yourself if you ever
want to upgrade...

Disclaimer: I'm not an expert on the JAMES internals, just an
interested observer.

Tom

On 2/5/07, Jerry M <te...@malcolms.com> wrote:
> Just checking to see if this has already been done, or if someone can
> offer a little technical advice....
>
> Here's the situation....
>
>     1) I have my config set up such that if the Bayesian filter flags
> spam, I route the message to a separate parallel inbox for the user
> named "spam.<inboxname>".  The intent here is to keep the flagged notes
> available to the user to review, but not make the user download tons of
> "probable spam" along with the good email.  Setting up a 2nd inbox gives
> the user control for separate handling of spam as they choose.  They can
> download from this inbox as well, or they can ignore it and leave it on
> the server.  (I have a pruner task that runs periodically and cleans out
> old spam from the spam mailboxes).
>
>     2) I have a servlet that will let them see their list of spam in
> this spam inbox via a web page ( I'm not using POP or anything... I'm
> simply querying the inbox table for matching records from their spam inbox).
>
>     3) If they find a mis-flagged note that is not spam, they simply
> click a button on the note and I move the note back to their regular
> inbox to be downloaded.
>
> OK, all of that works fine... But if a note is incorrectly flagged as
> spam, I need to pass this knowledge to the Bayesian filter.  I know the
> documented way to do this is to wait till it downloads, then send it as
> an attachment to not.spam@.... etc., etc.  But that takes additional
> work on the user's part and/or my part and is a pain I'd like to avoid.
>
> The fact is, I knew when the user clicked the button that it was not
> spam.  However, at that point, I'm not in James.  I'm simply using a
> servlet to access the mail db.  But I'd like to go ahead and notify the
> Bayesian filter automatically at that point.
>
> The brute-force way to do this inside the servlet is to read the message
> record out of the database, construct an email from it and make it an
> attachment on another email, set the address to not.spam@.... and do a
> sendmail to James.  Maybe that's the best way to do it.  If so, I can do
> that.  But I'm just curious if there are any easier ways where I can,
> for example, just move the db record from the Inbox table to the spool
> table and change the address to not.spam, or something like that.
>
> Recommendations?  Can someone that understands the inner workings of
> James tell me if there are any simpler processes for a servlet to take a
> note that's currently in the inbox and get the Bayesian feeder to
> process it as either spam or not-spam?
>
> BTW... I'm a very proficient Java programmer.  So I can code just about
> anything, as long as I understand the workings of the code I'm calling.
>
> Thanks.
>
> Jerry
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
For additional commands, e-mail: server-user-help@james.apache.org