[Spambayes-checkins] SF.net SVN: spambayes: [3170] trunk/spambayes/scripts/sb_imapfilter.py
montanaro at users.sourceforge.net
montanaro at users.sourceforge.net
Sat Feb 9 21:29:05 CET 2008
Revision: 3170
http://spambayes.svn.sourceforge.net/spambayes/?rev=3170&view=rev
Author: montanaro
Date: 2008-02-09 12:29:05 -0800 (Sat, 09 Feb 2008)
Log Message:
-----------
patch from Dave Abrahams - SF #1653494 - fixes problems with IMAP recent command
Modified Paths:
--------------
trunk/spambayes/scripts/sb_imapfilter.py
Modified: trunk/spambayes/scripts/sb_imapfilter.py
===================================================================
--- trunk/spambayes/scripts/sb_imapfilter.py 2007-11-07 02:02:54 UTC (rev 3169)
+++ trunk/spambayes/scripts/sb_imapfilter.py 2008-02-09 20:29:05 UTC (rev 3170)
@@ -732,10 +732,13 @@
response = self.imap_server.recent()
data = self.imap_server.check_response("recent", response)
if data[0] is not None:
+ if options["globals", "verbose"]:
+ print "[imapfilter] found saved message %s in iteration" % self.uid, i
break
else:
- self.imap_server.print_log()
- raise BadIMAPResponseError("recent", "Cannot find saved message")
+ if options["globals", "verbose"]:
+ print "[imapfilter] can't find saved message after 100 iterations:", self.uid
+ # raise BadIMAPResponseError("recent", "Cannot find saved message")
# We need to update the UID, as it will have changed.
# Although we don't use the UID to keep track of messages, we do
@@ -872,14 +875,17 @@
msg.setId(mo.group(1))
break
else:
- msg.setId(self._generate_id())
+ newid = self._generate_id()
+ if options["globals", "verbose"]:
+ print "[imapfilter] saving %s with new id:" % msg.uid, newid
+ msg.setId(newid)
# Unfortunately, we now have to re-save this message, so that
# our id is stored on the IMAP server. The vast majority of
# messages have Message-ID headers, from what I can tell, so
# we should only rarely have to do this. It's less often than
# with the previous solution, anyway!
- msg = msg.get_full_message()
- msg.Save()
+ # msg = msg.get_full_message()
+ # msg.Save()
if options["globals", "verbose"]:
sys.stdout.write(".")
@@ -954,7 +960,11 @@
count["spam"] = 0
count["unsure"] = 0
for msg in self:
- if msg.GetClassification() is None:
+ cls = msg.GetClassification()
+ if cls is None or hamfolder is not None:
+ if options["globals", "verbose"]:
+ print "[imapfilter] classified as %s:"%cls, msg.uid
+
msg = msg.get_full_message()
if msg.could_not_retrieve:
# Something went wrong, and we couldn't even get
@@ -962,7 +972,11 @@
# Annoyingly, we'll try to do it every time the
# script runs, but hopefully the user will notice
# the errors and move it soon enough.
+
+ if options["globals", "verbose"]:
+ print "[imapfilter] could not retrieve:", msg.uid
continue
+
(prob, clues) = classifier.spamprob(msg.tokenize(),
evidence=True)
# Add headers and remember classification.
@@ -973,16 +987,26 @@
cls = msg.GetClassification()
if cls == options["Headers", "header_ham_string"]:
if hamfolder:
+ if options["globals", "verbose"]:
+ print "[imapfilter] moving to ham folder:", msg.uid
msg.MoveTo(hamfolder)
# Otherwise, we leave ham alone.
count["ham"] += 1
elif cls == options["Headers", "header_spam_string"]:
+ if options["globals", "verbose"]:
+ print "[imapfilter] moving to spam folder:", msg.uid
msg.MoveTo(spamfolder)
count["spam"] += 1
else:
+ if options["globals", "verbose"]:
+ print "[imapfilter] moving to unsure folder:", msg.uid
msg.MoveTo(unsurefolder)
count["unsure"] += 1
msg.Save()
+ else:
+ if options["globals", "verbose"]:
+ print "[imapfilter] already classified:", msg.uid
+
return count
@@ -1032,13 +1056,23 @@
def Filter(self):
assert self.imap_server, "Cannot do anything without IMAP server."
if not self.spam_folder:
- self.spam_folder = IMAPFolder(options["imap", "spam_folder"],
- self.imap_server, self.stats)
+ spam_folder_name = options["imap", "spam_folder"]
+ if options["globals", "verbose"]:
+ print "[imapfilter] spam folder:", spam_folder_name
+ self.spam_folder = IMAPFolder(
+ spam_folder_name, self.imap_server, self.stats)
+
if not self.unsure_folder:
- self.unsure_folder = IMAPFolder(options["imap",
- "unsure_folder"],
- self.imap_server, self.stats)
+ unsure_folder_name = options["imap", "unsure_folder"]
+ if options["globals", "verbose"]:
+ print "[imapfilter] unsure folder:", unsure_folder_name
+ self.unsure_folder = IMAPFolder(
+ unsure_folder_name, self.imap_server, self.stats)
+
ham_folder_name = options["imap", "ham_folder"]
+ if options["globals", "verbose"]:
+ print "[imapfilter] ham folder:", ham_folder_name
+
if ham_folder_name and not self.ham_folder:
self.ham_folder = IMAPFolder(ham_folder_name, self.imap_server,
self.stats)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Spambayes-checkins
mailing list