[spambayes-bugs] [ spambayes-Bugs-793830 ] Last message arrived on Server not filtered when starting

SourceForge.net noreply at sourceforge.net
Fri Jan 21 04:22:03 CET 2005


Bugs item #793830, was opened at 2003-08-24 05:41
Message generated for change (Settings changed) made by anadelonbrin
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=498103&aid=793830&group_id=61702

Category: Outlook
Group: Outlook 008
>Status: Closed
>Resolution: Fixed
Priority: 5
Submitted By: Juergen Kremp (kremp)
Assigned to: Mark Hammond (mhammond)
Summary: Last message arrived on Server not filtered when starting

Initial Comment:
Hi, 

I use Outlook Plugin Version 007. It is used in an 
Environment of a central Microsoft Exchange 2000 
Server to which I connect with an Outlook 2000 client.

I observe that when starting the client, all messages in 
the Inbox that arrived during the time period where the 
Client was unavailable are filtered by SpamBayes, 
***except*** the last one that arrived. It is unfiltered 
and shown with 0% rate. When manually rating (Show 
spam clues...), the rate indicates that it is clearly Spam. 
Also performing a complete rating/filtering (Filter now) 
rates the message correctly and moves it accordingly.

If Outlook is permamently running, I do not observe such 
effect. It seems to be related to the code initially 
examining the Inbox when starting Outlook.

Juergen Kremp




----------------------------------------------------------------------

Comment By: Juergen Kremp (kremp)
Date: 2004-07-20 01:40

Message:
Logged In: YES 
user_id=850764

I got new hardware with changed operating system (Microsoft
Windows XP Professional) and installed 1.0rc1. In this
configuration, the problem does not occur. 

----------------------------------------------------------------------

Comment By: Jim Brown (brown2611)
Date: 2004-02-10 03:31

Message:
Logged In: YES 
user_id=963745

I believe this is the same as bug #876281.

As far as I can tell, having only started looking at Python and 
the SpamBayes Windows code yesterday, here is why this 
happens:

1. When SB starts, it (eventually) invokes 
BayesManager.EnsureOutlookFieldsForFolder() for each folder. 
This method finds the first MalItem in the specified folder and 
looks for the "Spam" UserProperty attached to that MailItem. 
If the MailItem does not have the "Spam" UserProperty, SB 
adds the UserProperty to the MailItem, causing the MailItem 
to have a Spam score of 0.

2. In trying to process missed messages, SB invokes 
MAPIMsgStoreFolder.GetNewUnscoredMessageGenerator(), 
which excludes any MailItem that already has the "Spam" 
UserProperty from processing.

Voila. The item most recently received in a folder while SB 
was not running is automatically assigned a score of 0 and 
not filtered.

Apparently, there isn't a clean way to detect if a folder has a 
particular user defined field. So, the only way to check for 
the presence of the user defined field in the folder is to check 
the items in the folder. SB (correctly) assumes that adding 
the UserProperty to the first MailItem will force the creation 
of the user defined field in the folder. However, this is not a 
benign act.

Possible solutions:

* Don't force the creation of the user defined field until SB 
has an actual score to store. However, I fear there may be a 
great number of places in the code that assume the Spam 
field already exists. For example, 
GetNewUnscoredMessageGenerator() certainly makes this 
assumption. The error resulting from the lack of the Spam 
field could be trapped, but I don't know the code well enough 
to find all the places where the absence of the field might be 
a problem. Nonetheless, this seems to be the correct solution 
to me.

* EnsureOutlookFieldsForFolder() could check more than just 
the first MailItem in the folder. However, this doesn't avoid 
the problem if every message in the folder is a missed 
message.

* If SB is going to force the creation of the Spam field, go 
ahead and filter the message. Aside from not being terribly 
clean, its not clear to me that enough of the code has been 
initialized by this point to filter a message.

* If SB is going to force the creation of the Spam field, 
initialize it to a value that is easily detected as unscored, for 
example -1. However, I'm not confident that the code doesn't 
depend on 0 <= Spam <= 100. In addition, I don't know how 
many places in the code would have to be changed to 
recognize this value.

* Change the minimum score to 0.0001, or the like, and 
detect a score of 0 as an unscored message. Kludgey and 
one would still have to find all of the places where something 
with a ham-like score (or any score) is excluded from further 
filtering (e.g., addin.ProcessMessage()).

* Since OutlookAddin.ProcessMissedMessages() only _seems_ 
effectively to be invoked at startup, it could be modified to 
always process the first MailItem if the item is unread and 
has a score of exactly zero. Again, kludgey, but at least the 
kludge is confined to a single place. On the other hand, it 
looks to me like SB has already hooked into the folders it is 
watching at this point. if SB is filtering in the background, I 
suspect that any mail received before the "processing start 
delay" expires would bump the improperly flagged message 
out of the first position. Hmmm.

* One could treat anything with a score of 0 as an unscored 
message, but it isn't really desirable to rescore all of those 
messages, since the majority of them have presumably 
already been filtered correctly.

Any feedback from someone who actually knows the code?

---Jim

----------------------------------------------------------------------

Comment By: Jim Brown (brown2611)
Date: 2004-01-30 18:00

Message:
Logged In: YES 
user_id=963745

I can confirm this problem with Plugin 0.81 on Outlook 2002 
SP-2 and XP Pro with Exchange 2000. I'm running SpamBayes 
in background mode with a 1.0 sec start delay and a 0.5 sec 
delay between messages.

It appears that SpamBayes fails to find and filter the most 
recently received email message when Outlook is started.

Example: I started Outlook at about 11:40 PM. The most 
recent email in my inbox was received at 10:57 PM, when 
Outlook was not running. Here's the log from SpamBayes  
with verbosity 1. It clearly shows that SpamBayes did not 
find the message upon startup:

---
System verbosity set to 1
No old pickle file to migrate
Loaded bayes database from 'C:\Documents and 
Settings\brown\Application 
Data\SpamBayes\default_bayes_database.db'
Loaded message database from 'C:\Documents and 
Settings\brown\Application 
Data\SpamBayes\default_message_database.db'
Bayes database initialized with 25710 spam and 22311 good 
messages
Loaded databases in 11.4339ms
SpamBayes Outlook Addin, Binary version 0.81 (September 9, 
2003) starting (with engine SpamBayes Beta2, version 0.2 
(July 2003))
on Windows 5.1.2600 (Service Pack 1)
using Python 2.3+ (#46, Aug  6 2003, 16:39:24) [MSC v.1200 
32 bit (Intel)]
SpamBayes: Watching for new messages in folder  Inbox
SpamBayes: Watching for new messages in folder  Junk 
(pending)
Processing missed spam in folder 'Inbox' by starting a timer
New message timer started - id=25680, delay=1000
FAILED to add the toolbar 
item 'SpamBayesCommand.Manager' - (-
2147352567, 'Exception occurred.', (0, None, None, None, 0, -
2147467259), None)
Deleted the dead popup control - re-creating
The timer with id=25680 fired
The new message timer found no new items, so is stopping
---


----------------------------------------------------------------------

Comment By: Jim Brown (brown2611)
Date: 2004-01-30 17:57

Message:
Logged In: YES 
user_id=963745

I can confirm this problem with Plugin 0.81 on Outlook 2002 
SP-2 and XP Pro with Exchange 2000. I'm running SpamBayes 
in background mode with a 1.0 sec start delay and a 0.5 sec 
delay between messages.

It appears that SpamBayes fails to find and filter the most 
recently received email message when Outlook is started.

Example: I started Outlook at about 11:40 PM. The most 
recent email in my inbox was received at 10:57 PM, when 
Outlook was not running. Here's the log from SpamBayes  
with verbosity 1. It clearly shows that SpamBayes did not 
find the message upon startup:

---
System verbosity set to 1
No old pickle file to migrate
Loaded bayes database from 'C:\Documents and 
Settings\brown\Application 
Data\SpamBayes\default_bayes_database.db'
Loaded message database from 'C:\Documents and 
Settings\brown\Application 
Data\SpamBayes\default_message_database.db'
Bayes database initialized with 25710 spam and 22311 good 
messages
Loaded databases in 11.4339ms
SpamBayes Outlook Addin, Binary version 0.81 (September 9, 
2003) starting (with engine SpamBayes Beta2, version 0.2 
(July 2003))
on Windows 5.1.2600 (Service Pack 1)
using Python 2.3+ (#46, Aug  6 2003, 16:39:24) [MSC v.1200 
32 bit (Intel)]
SpamBayes: Watching for new messages in folder  Inbox
SpamBayes: Watching for new messages in folder  Junk 
(pending)
Processing missed spam in folder 'Inbox' by starting a timer
New message timer started - id=25680, delay=1000
FAILED to add the toolbar 
item 'SpamBayesCommand.Manager' - (-
2147352567, 'Exception occurred.', (0, None, None, None, 0, -
2147467259), None)
Deleted the dead popup control - re-creating
The timer with id=25680 fired
The new message timer found no new items, so is stopping
---


----------------------------------------------------------------------

Comment By: Jim Brown (brown2611)
Date: 2004-01-30 17:57

Message:
Logged In: YES 
user_id=963745

I can confirm this problem with Plugin 0.81 on Outlook 2002 
SP-2 and XP Pro with Exchange 2000. I'm running SpamBayes 
in background mode with a 1.0 sec start delay and a 0.5 sec 
delay between messages.

It appears that SpamBayes fails to find and filter the most 
recently received email message when Outlook is started.

Example: I started Outlook at about 11:40 PM. The most 
recent email in my inbox was received at 10:57 PM, when 
Outlook was not running. Here's the log from SpamBayes  
with verbosity 1. It clearly shows that SpamBayes did not 
find the message upon startup:

---
System verbosity set to 1
No old pickle file to migrate
Loaded bayes database from 'C:\Documents and 
Settings\brown\Application 
Data\SpamBayes\default_bayes_database.db'
Loaded message database from 'C:\Documents and 
Settings\brown\Application 
Data\SpamBayes\default_message_database.db'
Bayes database initialized with 25710 spam and 22311 good 
messages
Loaded databases in 11.4339ms
SpamBayes Outlook Addin, Binary version 0.81 (September 9, 
2003) starting (with engine SpamBayes Beta2, version 0.2 
(July 2003))
on Windows 5.1.2600 (Service Pack 1)
using Python 2.3+ (#46, Aug  6 2003, 16:39:24) [MSC v.1200 
32 bit (Intel)]
SpamBayes: Watching for new messages in folder  Inbox
SpamBayes: Watching for new messages in folder  Junk 
(pending)
Processing missed spam in folder 'Inbox' by starting a timer
New message timer started - id=25680, delay=1000
FAILED to add the toolbar 
item 'SpamBayesCommand.Manager' - (-
2147352567, 'Exception occurred.', (0, None, None, None, 0, -
2147467259), None)
Deleted the dead popup control - re-creating
The timer with id=25680 fired
The new message timer found no new items, so is stopping
---


----------------------------------------------------------------------

Comment By: Jim Brown (brown2611)
Date: 2004-01-30 17:56

Message:
Logged In: YES 
user_id=963745

I can confirm this problem with Plugin 0.81 on Outlook 2002 
SP-2 and XP Pro with Exchange 2000. I'm running SpamBayes 
in background mode with a 1.0 sec start delay and a 0.5 sec 
delay between messages.

It appears that SpamBayes fails to find and filter the most 
recently received email message when Outlook is started.

Example: I started Outlook at about 11:40 PM. The most 
recent email in my inbox was received at 10:57 PM, when 
Outlook was not running. Here's the log from SpamBayes  
with verbosity 1. It clearly shows that SpamBayes did not 
find the message upon startup:

---
System verbosity set to 1
No old pickle file to migrate
Loaded bayes database from 'C:\Documents and 
Settings\brown\Application 
Data\SpamBayes\default_bayes_database.db'
Loaded message database from 'C:\Documents and 
Settings\brown\Application 
Data\SpamBayes\default_message_database.db'
Bayes database initialized with 25710 spam and 22311 good 
messages
Loaded databases in 11.4339ms
SpamBayes Outlook Addin, Binary version 0.81 (September 9, 
2003) starting (with engine SpamBayes Beta2, version 0.2 
(July 2003))
on Windows 5.1.2600 (Service Pack 1)
using Python 2.3+ (#46, Aug  6 2003, 16:39:24) [MSC v.1200 
32 bit (Intel)]
SpamBayes: Watching for new messages in folder  Inbox
SpamBayes: Watching for new messages in folder  Junk 
(pending)
Processing missed spam in folder 'Inbox' by starting a timer
New message timer started - id=25680, delay=1000
FAILED to add the toolbar 
item 'SpamBayesCommand.Manager' - (-
2147352567, 'Exception occurred.', (0, None, None, None, 0, -
2147467259), None)
Deleted the dead popup control - re-creating
The timer with id=25680 fired
The new message timer found no new items, so is stopping
---


----------------------------------------------------------------------

Comment By: Pete Marion (ima_user)
Date: 2004-01-10 00:26

Message:
Logged In: YES 
user_id=923210

I have confirmed this running Windows XP Home and Outlook 
2002 sonnecting to a POP / SMTP server. Outlook Addin, 
Binary version 0.81 (September 9,
2003). 

----------------------------------------------------------------------

Comment By: John Marrett (jmarrett)
Date: 2003-10-24 01:17

Message:
Logged In: YES 
user_id=642463

I am experiencing the same problem with SpamBayes version
0.81 (September 9, 2003) connected to Microsoft Exchange
server 5.5.

----------------------------------------------------------------------

Comment By: Juergen Kremp (kremp)
Date: 2003-10-11 01:05

Message:
Logged In: YES 
user_id=850764

I installed Outlook Addin, Binary version 0.81 (September 9,
2003). It shows the same effect. 

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=498103&aid=793830&group_id=61702


More information about the Spambayes-bugs mailing list