From anadelonbrin at users.sourceforge.net Mon May 9 08:30:26 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sun, 08 May 2005 23:30:26 -0700 Subject: [Spambayes-checkins] spambayes/spambayes Corpus.py,1.23,1.24 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4653/spambayes Modified Files: Corpus.py Log Message: Make MessageFactory a new-style class. Index: Corpus.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/Corpus.py,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** Corpus.py 22 Apr 2005 07:15:09 -0000 1.23 --- Corpus.py 9 May 2005 06:30:23 -0000 1.24 *************** *** 251,255 **** ! class MessageFactory: '''Abstract Message Factory''' def create(self, key, content=None): --- 251,255 ---- ! class MessageFactory(object): '''Abstract Message Factory''' def create(self, key, content=None): From anadelonbrin at users.sourceforge.net Fri May 13 05:16:34 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu, 12 May 2005 20:16:34 -0700 Subject: [Spambayes-checkins] spambayes/Outlook2000/docs troubleshooting.html, 1.27, 1.28 Message-ID: Update of /cvsroot/spambayes/spambayes/Outlook2000/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5687/Outlook2000/docs Modified Files: troubleshooting.html Log Message: Clarify the instructions for finding the temp folder, based on user suggestion. Index: troubleshooting.html =================================================================== RCS file: /cvsroot/spambayes/spambayes/Outlook2000/docs/troubleshooting.html,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** troubleshooting.html 16 Jan 2005 22:09:34 -0000 1.27 --- troubleshooting.html 13 May 2005 03:16:31 -0000 1.28 *************** *** 329,333 ****
  • In the Address Bar, simply type, at the end, \Local Settings (thereby giving the full path name), and press Enter.
  • !

    Windows Explorer will then show this folder.

    or

    --- 329,334 ----
  • In the Address Bar, simply type, at the end, \Local Settings (thereby giving the full path name), and press Enter.
  • !

    Windows Explorer will then show this folder, and you can open the ! Temp folder, which is in it.

    or

    *************** *** 337,342 ****
  • In the list, select Show hidden files and folders.
  • Select OK.
  • !

    This folder will now be visible. You may like to then reset this ! option back to the default value.

    --- 338,343 ----
  • In the list, select Show hidden files and folders.
  • Select OK.
  • !

    The temp folder will now be visible, and you can then open it. ! You may like to then reset this option back to the default value.

    From anadelonbrin at users.sourceforge.net Fri May 13 06:23:14 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu, 12 May 2005 21:23:14 -0700 Subject: [Spambayes-checkins] spambayes/scripts sb_imapfilter.py,1.58,1.59 Message-ID: Update of /cvsroot/spambayes/spambayes/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15921/scripts Modified Files: sb_imapfilter.py Log Message: Fix [ 1182754 ] 1.1a1: imapfilter browser chokes on incorrect password Index: sb_imapfilter.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/scripts/sb_imapfilter.py,v retrieving revision 1.58 retrieving revision 1.59 diff -C2 -d -r1.58 -r1.59 *** sb_imapfilter.py 21 Apr 2005 07:09:09 -0000 1.58 --- sb_imapfilter.py 13 May 2005 04:23:11 -0000 1.59 *************** *** 148,152 **** from spambayes import tokenizer, storage, message, Dibbler from spambayes.UserInterface import UserInterfaceServer ! from spambayes.ImapUI import IMAPUserInterface from spambayes.Version import get_current_version --- 148,152 ---- from spambayes import tokenizer, storage, message, Dibbler from spambayes.UserInterface import UserInterfaceServer ! from spambayes.ImapUI import IMAPUserInterface, LoginFailure from spambayes.Version import get_current_version *************** *** 171,174 **** --- 171,175 ---- (self.command, self.response) + class IMAPSession(BaseIMAP): '''A class extending the IMAP4 class, with a few optimizations''' *************** *** 245,259 **** """Log in to the IMAP server, catching invalid username/password.""" assert self.connected, "Must be connected before logging in." try: ! if 'AUTH=CRAM-MD5' in self.capabilities: ! self.login_cram_md5(username, pwd) ! else: ! BaseIMAP.login(self, username, pwd) # superclass login except BaseIMAP.error, e: ! msg = "There was an error logging in to the IMAP server." \ ! " The username (%s) and/or password may " \ ! "be incorrect." % (username,) ! print msg ! sys.exit() self.logged_in = True --- 246,263 ---- """Log in to the IMAP server, catching invalid username/password.""" assert self.connected, "Must be connected before logging in." + if 'AUTH=CRAM-MD5' in self.capabilities: + login_func = self.login_cram_md5 + args = (username, pwd) + description = "MD5" + else: + login_func = BaseIMAP.login # superclass login + args = (self, username, pwd) + description = "plain-text" try: ! login_func(*args) except BaseIMAP.error, e: ! msg = "The username (%s) and/or password (sent in %s) may " \ ! "be incorrect." % (username, description) ! raise LoginFailure(msg) self.logged_in = True *************** *** 1220,1225 **** if os.path.exists(fn): options.merge_file(fn) ! ! imap.login(username, password) imap_filter.imap_server = imap --- 1224,1233 ---- if os.path.exists(fn): options.merge_file(fn) ! ! try: ! imap.login(username, password) ! except LoginFailure, e: ! print str(e) ! continue imap_filter.imap_server = imap From anadelonbrin at users.sourceforge.net Fri May 13 06:24:29 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Thu, 12 May 2005 21:24:29 -0700 Subject: [Spambayes-checkins] spambayes/spambayes ImapUI.py,1.46,1.47 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16118/spambayes Modified Files: ImapUI.py Log Message: Fix [ 1182754 ] 1.1a1: imapfilter browser chokes on incorrect password Index: ImapUI.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/ImapUI.py,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -d -r1.46 -r1.47 *** ImapUI.py 14 Apr 2005 06:44:02 -0000 1.46 --- ImapUI.py 13 May 2005 04:24:27 -0000 1.47 *************** *** 109,112 **** --- 109,125 ---- ) + + # This is here because we need to refer to it here, and in sb_imapfilter. + # I suppose it really belongs somewhere else, where both can refer to it, + # but there isn't any such place, and creating it just for this is rather + # pointless. + class LoginFailure(Exception): + """Login to the IMAP server failed.""" + def __init__(self, details): + self.details = details + def __str__(self): + return "Login failure: %s" % (self.details,) + + class IMAPUserInterface(UserInterface.UserInterface): """Serves the HTML user interface for the proxies.""" *************** *** 182,185 **** --- 195,205 ---- available_folders.extend(imap.folder_list()) + if not available_folders: + content = self._buildBox(_("Error"), None, + _("No folders available")) + self.write(content) + self._writePostamble() + return + content = self.html.configForm.clone() content.configFormContent = "" *************** *** 202,206 **** for i in xrange(len(self.imaps)): imap = self.imaps[i] ! new_imaps.append(self._login_to_imap_server(imap, i)) self.imaps = new_imaps --- 222,228 ---- for i in xrange(len(self.imaps)): imap = self.imaps[i] ! imap_logged_in = self._login_to_imap_server(imap, i) ! if imap_logged_in: ! new_imaps.append(imap_logged_in) self.imaps = new_imaps *************** *** 215,219 **** _("Please check server/port details.")) self.write(content) - self._writePostamble() return None if server.find(':') > -1: --- 237,240 ---- *************** *** 231,235 **** _("Please check server/port details.")) self.write(content) - self._writePostamble() return None usernames = options["imap", "username"] --- 252,255 ---- *************** *** 238,242 **** _("Must specify username first.")) self.write(content) - self._writePostamble() return None if not self.imap_pwds: --- 258,261 ---- *************** *** 246,250 **** _("Must specify password first.")) self.write(content) - self._writePostamble() return None try: --- 265,268 ---- *************** *** 254,258 **** _("Please check username/password details.")) self.write(content) ! self._writePostamble() return None return imap --- 272,279 ---- _("Please check username/password details.")) self.write(content) ! return None ! except LoginFailure, e: ! content = self._buildBox(_("Error"), None, str(e)) ! self.write(content) return None return imap *************** *** 266,269 **** --- 287,297 ---- available_folders.extend(imap.folder_list()) + if not available_folders: + content = self._buildBox(_("Error"), None, + _("No folders available")) + self.write(content) + self._writePostamble() + return + content = self.html.configForm.clone() content.configFormContent = "" From sjoerd at users.sourceforge.net Wed May 18 16:10:34 2005 From: sjoerd at users.sourceforge.net (Sjoerd Mullender) Date: Wed, 18 May 2005 07:10:34 -0700 Subject: [Spambayes-checkins] spambayes/scripts sb_imapfilter.py,1.59,1.60 Message-ID: Update of /cvsroot/spambayes/spambayes/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29992 Modified Files: sb_imapfilter.py Log Message: In each iteration, create a new IMAPSession object and hence a new connection to the server. The old code was to create one IMAPSession object and repeatedly login and logout from the server. This, however, can't work. Login is only allowed when the IMAP server is in the NONAUTH state, and logout leaves the server in the LOGOUT state. In other words, login fails after a logout. There is also no way to change the state from LOGOUT to NONAUTH. Index: sb_imapfilter.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/scripts/sb_imapfilter.py,v retrieving revision 1.59 retrieving revision 1.60 diff -C2 -d -r1.59 -r1.60 *** sb_imapfilter.py 13 May 2005 04:23:11 -0000 1.59 --- sb_imapfilter.py 18 May 2005 14:10:30 -0000 1.60 *************** *** 1191,1195 **** imaps = [] for server, port, username, password in servers_data: ! imaps.append((IMAPSession(server, port, imapDebug, doExpunge), username, password)) --- 1191,1195 ---- imaps = [] for server, port, username, password in servers_data: ! imaps.append(((server, port, imapDebug, doExpunge), username, password)) *************** *** 1206,1210 **** options.set_restore_point() while True: ! for imap, username, password in imaps: if options["globals", "verbose"]: print "Account: %s:%s" % (imap.server, imap.port) --- 1206,1211 ---- options.set_restore_point() while True: ! for (server, port, imapDebug, doExpunge), username, password in imaps: ! imap = IMAPSession(server, port, imapDebug, doExpunge) if options["globals", "verbose"]: print "Account: %s:%s" % (imap.server, imap.port) From anadelonbrin at users.sourceforge.net Sun May 22 05:32:24 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sat, 21 May 2005 20:32:24 -0700 Subject: [Spambayes-checkins] spambayes/spambayes UserInterface.py, 1.57, 1.58 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17045/spambayes Modified Files: UserInterface.py Log Message: Fix the handling of the notate_to and notate_subject options. Previously, although these could be set to whatever the header_X_string options were, that could only be at runtime, not when loading in the config string - so they would revert whenever spambayes was restarted. Now we special case them all over the damn place (stupid OE). Here we do the special case for offering them in the config page, and checking them in a submitted config page. Index: UserInterface.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/UserInterface.py,v retrieving revision 1.57 retrieving revision 1.58 diff -C2 -d -r1.57 -r1.58 *** UserInterface.py 7 Apr 2005 00:25:42 -0000 1.57 --- UserInterface.py 22 May 2005 03:32:19 -0000 1.58 *************** *** 722,727 **** html_key = sect + '_' + opt # Populate the rows with the details and add them to the table. ! if type(options.valid_input(sect, opt)) in types.StringTypes: # we provide a text input newConfigRow1 = configTextRow1.clone() --- 722,741 ---- html_key = sect + '_' + opt + # Annoyingly, we have a special case. The notate_to and + # notate_subject allowed values have to be set to the same + # values as the header_x_ options. See also sf #944109. + # This code was originally in Options.py, after loading in the + # options. But that doesn't work, because if we are setting + # both in a config file, we need it done immediately. + # We now need the hack here, *and* in OptionsClass.py + if sect == "Headers" and opt in ("notate_to", "notate_subject"): + valid_input = (options["Headers", "header_ham_string"], + options["Headers", "header_spam_string"], + options["Headers", "header_unsure_string"]) + else: + valid_input = options.valid_input(sect, opt) + # Populate the rows with the details and add them to the table. ! if isinstance(valid_input, types.StringTypes): # we provide a text input newConfigRow1 = configTextRow1.clone() *************** *** 736,740 **** firstOpt = True i = 0 ! for val in options.valid_input(sect, opt): newOption = blankOption.clone() if options.multiple_values_allowed(sect, opt): --- 750,754 ---- firstOpt = True i = 0 ! for val in valid_input: newOption = blankOption.clone() if options.multiple_values_allowed(sect, opt): *************** *** 886,889 **** --- 900,918 ---- nice_section_name = sect continue + + # Annoyingly, we have a special case. The notate_to and + # notate_subject allowed values have to be set to the same + # values as the header_x_ options. See also sf #944109. + # This code was originally in Options.py, after loading in the + # options. But that doesn't work, because if we are setting + # both in a config file, we need it done immediately. + # We now need the hack here, *and* in OptionsClass.py + if sect == "Headers" and opt in ("notate_to", "notate_subject"): + valid_input = (options["Headers", "header_ham_string"], + options["Headers", "header_spam_string"], + options["Headers", "header_unsure_string"]) + else: + valid_input = options.valid_input(sect, opt) + html_key = sect + '_' + opt if not parms.has_key(html_key): *************** *** 908,914 **** (entered_value, nice_section_name, options.display_name(sect, opt)) ! if type(options.valid_input(sect, opt)) == type((0,1)): errmsg += _('. Valid values are: ') ! for valid in options.valid_input(sect, opt): errmsg += str(valid) + ',' errmsg = errmsg[:-1] # cut last ',' --- 937,943 ---- (entered_value, nice_section_name, options.display_name(sect, opt)) ! if isinstance(valid_input, types.TupleType): errmsg += _('. Valid values are: ') ! for valid in valid_input: errmsg += str(valid) + ',' errmsg = errmsg[:-1] # cut last ',' From anadelonbrin at users.sourceforge.net Sun May 22 05:32:58 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sat, 21 May 2005 20:32:58 -0700 Subject: [Spambayes-checkins] spambayes/spambayes OptionsClass.py, 1.27, 1.28 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17124/spambayes Modified Files: OptionsClass.py Log Message: Fix the handling of the notate_to and notate_subject options. Previously, although these could be set to whatever the header_X_string options were, that could only be at runtime, not when loading in the config string - so they would revert whenever spambayes was restarted. Now we special case them all over the damn place (stupid OE). Here we do the special case for setting the options. Index: OptionsClass.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/OptionsClass.py,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** OptionsClass.py 16 Mar 2005 03:37:11 -0000 1.27 --- OptionsClass.py 22 May 2005 03:32:56 -0000 1.28 *************** *** 98,101 **** --- 98,116 ---- return not not val + try: + import textwrap + raise ImportError + except ImportError: + # textwrap was added in 2.3 + # We only use this for printing out errors and docstrings, so + # it doesn't need to be great (if you want it great, get a more + # recent Python!). So we do it the dumb way; the textwrap code + # could be duplicated here if anyone cared. + def wrap(s): + length = 10 + return [s[i:i+length].strip() for i in xrange(0, len(s), length)] + else: + wrap = textwrap.wrap + __all__ = ['OptionsClass', 'HEADER_NAME', 'HEADER_VALUE', *************** *** 654,662 **** if self.conversion_table.has_key((sect, opt.lower())): sect, opt = self.conversion_table[sect, opt.lower()] if self.is_valid(sect, opt, val): self._options[sect, opt.lower()].set(val) else: ! print >> sys.stderr, ("Attempted to set [%s] %s with invalid" ! " value %s (%s)" % (sect, opt.lower(), val, type(val))) --- 669,698 ---- if self.conversion_table.has_key((sect, opt.lower())): sect, opt = self.conversion_table[sect, opt.lower()] + + # Annoyingly, we have a special case. The notate_to and + # notate_subject allowed values have to be set to the same + # values as the header_x_ options, but this can't be done + # (AFAIK) dynmaically. If this isn't the case, then if the + # header_x_string values are changed, the notate_ options don't + # work. Outlook Express users like both of these options...so + # we fix it here. See also sf #944109. + # This code was originally in Options.py, after loading in the + # options. But that doesn't work, because if we are setting + # both in a config file, we need it done immediately. + # We now need the hack here, *and* in UserInterface.py + # For the moment, this will do. Use a real mail client, for + # goodness sake! + if sect == "Headers" and opt in ("notate_to", "notate_subject"): + header_strings = (self.get("Headers", "header_ham_string"), + self.get("Headers", + "header_spam_string"), + self.get("Headers", + "header_unsure_string")) + return val in header_strings if self.is_valid(sect, opt, val): self._options[sect, opt.lower()].set(val) else: ! print >> sys.stderr, ("Attempted to set [%s] %s with " ! "invalid value %s (%s)" % (sect, opt.lower(), val, type(val))) *************** *** 685,689 **** def _report_option_error(self, sect, opt, val, stream, msg): - import textwrap if sect in self.sections(): vopts = self.options(True) --- 721,724 ---- *************** *** 694,698 **** print >> stream, "Valid options for", sect, "are:" vopts = ', '.join(vopts) ! vopts = textwrap.wrap(vopts) for line in vopts: print >> stream, ' ', line --- 729,733 ---- print >> stream, "Valid options for", sect, "are:" vopts = ', '.join(vopts) ! vopts = wrap(vopts) for line in vopts: print >> stream, ' ', line *************** *** 703,707 **** print >> stream, "Valid sections are:" vsects = ', '.join(self.sections()) ! vsects = textwrap.wrap(vsects) for line in vsects: print >> stream, ' ', line --- 738,742 ---- print >> stream, "Valid sections are:" vsects = ', '.join(self.sections()) ! vsects = wrap(vsects) for line in vsects: print >> stream, ' ', line *************** *** 742,746 **** def display(self, add_comments=False): '''Display options in a config file form.''' - import textwrap output = StringIO.StringIO() keys = self._options.keys() --- 777,780 ---- *************** *** 760,764 **** doc = "No information available, sorry." doc = re.sub(r"\s+", " ", doc) ! output.write("\n# %s\n" % ("\n# ".join(textwrap.wrap(doc)),)) self._options[sect, opt].write_config(output) return output.getvalue() --- 794,798 ---- doc = "No information available, sorry." doc = re.sub(r"\s+", " ", doc) ! output.write("\n# %s\n" % ("\n# ".join(wrap(doc)),)) self._options[sect, opt].write_config(output) return output.getvalue() From anadelonbrin at users.sourceforge.net Sun May 22 05:33:17 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Sat, 21 May 2005 20:33:17 -0700 Subject: [Spambayes-checkins] spambayes/spambayes Options.py,1.123,1.124 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17160/spambayes Modified Files: Options.py Log Message: Fix the handling of the notate_to and notate_subject options. Previously, although these could be set to whatever the header_X_string options were, that could only be at runtime, not when loading in the config string - so they would revert whenever spambayes was restarted. Now we special case them all over the damn place (stupid OE). Here we are just ripping out the old code. Index: Options.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/Options.py,v retrieving revision 1.123 retrieving revision 1.124 diff -C2 -d -r1.123 -r1.124 *** Options.py 6 Apr 2005 02:37:17 -0000 1.123 --- Options.py 22 May 2005 03:33:15 -0000 1.124 *************** *** 434,438 **** or only spam. This is a disaster. ! As unknown_word_strength tends toward infintity, all probabilities tend toward unknown_word_prob. All reports were that a value near 0.4 worked best, so this does not seem to be corpus-dependent."""), --- 434,438 ---- or only spam. This is a disaster. ! As unknown_word_strength tends toward infinity, all probabilities tend toward unknown_word_prob. All reports were that a value near 0.4 worked best, so this does not seem to be corpus-dependent."""), *************** *** 1227,1244 **** options.merge_file(optionsPathname) - # Annoyingly, we have a special case. The notate_to and notate_subject - # allowed values have to be set to the same values as the header_x_ - # options, but this can't be done (AFAIK) dynmaically. If this isn't - # the case, then if the header_x_string values are changed, the - # notate_ options don't work. Outlook Express users like both of - # these options...so we fix it here. See also sf #944109. - header_strings = (options["Headers", "header_ham_string"], - options["Headers", "header_spam_string"], - options["Headers", "header_unsure_string"]) - notate_to = options.get_option("Headers", "notate_to") - notate_subject = options.get_option("Headers", "notate_subject") - notate_to.allowed_values = header_strings - notate_subject.allowed_values = header_strings - def get_pathname_option(section, option): --- 1227,1230 ---- From anthonybaxter at users.sourceforge.net Mon May 23 14:47:21 2005 From: anthonybaxter at users.sourceforge.net (Anthony Baxter) Date: Mon, 23 May 2005 05:47:21 -0700 Subject: [Spambayes-checkins] website related.ht,1.15,1.16 Message-ID: Update of /cvsroot/spambayes/website In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5691 Modified Files: related.ht Log Message: wecanstopspam is a spam site now (ironically) Index: related.ht =================================================================== RCS file: /cvsroot/spambayes/website/related.ht,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** related.ht 9 Jan 2004 04:19:51 -0000 1.15 --- related.ht 23 May 2005 12:47:19 -0000 1.16 *************** *** 10,16 **** where everyone is welcome to contribute.
  • -
  • Gary Robinson has a well-organized - Spam Wiki. -
  • --- 10,13 ---- From anadelonbrin at users.sourceforge.net Wed May 25 01:42:16 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Tue, 24 May 2005 16:42:16 -0700 Subject: [Spambayes-checkins] spambayes WHAT_IS_NEW.txt,1.38,1.39 Message-ID: Update of /cvsroot/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19396 Modified Files: WHAT_IS_NEW.txt Log Message: Bring somewhat more up-to-date. Index: WHAT_IS_NEW.txt =================================================================== RCS file: /cvsroot/spambayes/spambayes/WHAT_IS_NEW.txt,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** WHAT_IS_NEW.txt 16 Mar 2005 03:19:44 -0000 1.38 --- WHAT_IS_NEW.txt 24 May 2005 23:41:58 -0000 1.39 *************** *** 13,17 **** very cutting edge software. It is likely that there are a few unresolved bugs with this release. If you would rather wait for a more stable release ! to have the new features here, please continue to use 1.0.2 until 1.1 final is released. --- 13,17 ---- very cutting edge software. It is likely that there are a few unresolved bugs with this release. If you would rather wait for a more stable release ! to have the new features here, please continue to use 1.0.4 until 1.1 final is released. *************** *** 60,65 **** to view it - 640x480 users will need to continue with 1.0.2) and enhanced to (among other things) include a new "Statistics" tab. ! o Enhance the "Show Clues" message. This now includes information about ! the last time the message was trained or classified. o For messages received from a local Exchange server, which have no Internet headers, we now generate more (and better) headers from the --- 60,65 ---- to view it - 640x480 users will need to continue with 1.0.2) and enhanced to (among other things) include a new "Statistics" tab. ! o The "Show Clues" message is enchanced. This now includes information ! about the last time the message was trained or classified. o For messages received from a local Exchange server, which have no Internet headers, we now generate more (and better) headers from the *************** *** 71,75 **** functionality for unsure/spam messages. o The "Delete As Spam" button is now simply "Spam", and the ! "Recover From Spam" button simply "Not Spam". o Notification sounds can now be set, via the Manager dialog. o The SpamBayes menu now includes an "Empty Spam Folder" option. --- 71,78 ---- functionality for unsure/spam messages. o The "Delete As Spam" button is now simply "Spam", and the ! "Recover From Spam" button simply "Not Spam". The behaviour of ! the buttons has not changed. You may need to recreate the toolbar ! to see these changes (right click on the toolbar, click Customize, ! select SpamBayes, click Delete, then restart Outlook). o Notification sounds can now be set, via the Manager dialog. o The SpamBayes menu now includes an "Empty Spam Folder" option. *************** *** 91,94 **** --- 94,103 ---- separator) would pass through SpamBayes without classification, or a X-Spambayes-Exception header. This is no longer the case. + o If you run sb_server as a Windows service messages are now logged + to the Windows Event log rather than to SpamBayes log files. + o Installation of the Windows service for sb_server has been improved, + and a better data directory is now used (if a configuration file + does not already exist, then a "SpamBayesData" directory in the + directory of the application is used). Web interface (sb_server.py and sb_imapfilter.py) *************** *** 99,102 **** --- 108,114 ---- o A new option "Use bigrams" is available from the Advanced Configuration page. + o Messages that are uploaded (from the "Upload" box on the main page, + or via sb_upload.py) are now properly added to the cache directories, + and _pop3proxyham.mbox and pop3proxy_spam.mbox are no longer created. o Various minor fixes and improvements. *************** *** 118,121 **** --- 130,135 ---- the folders to filter, the thresholds, or any other options (this currently does not include the database names). + o AUTH CRAM-MD5 authentication is now supported, in addition to plaintext + AUTH Login. o Many minor fixes and improvements. *************** *** 146,150 **** o The sb_upload.py script's help string has been improved, and the -n (--null) command line option now works. The script is now also ! to train as well as upload. o The tte.py script has had many improvements, including Python 2.3 compatibility, addition of a --ratio flag, deletion of correctly --- 160,164 ---- o The sb_upload.py script's help string has been improved, and the -n (--null) command line option now works. The script is now also ! able to train as well as upload. o The tte.py script has had many improvements, including Python 2.3 compatibility, addition of a --ratio flag, deletion of correctly *************** *** 159,163 **** The following bugs tracked via the Sourceforge system were fixed: 1078923, 1022848, 831864, 922063, 1051081, 903905, 1036601, 790757, ! 944109, 959937, 943852, 941639, 986353, 990700, 933473, 981970, 1071319 A URL containing the details of these bugs can be made by appending the --- 173,178 ---- The following bugs tracked via the Sourceforge system were fixed: 1078923, 1022848, 831864, 922063, 1051081, 903905, 1036601, 790757, ! 944109, 959937, 943852, 941639, 986353, 990700, 933473, 981970, 1071319, ! 1166146, 1175439 A URL containing the details of these bugs can be made by appending the *************** *** 168,182 **** Feature Requests Added ====================== ! No feature requests tracked via the Sourceforge system were added for this ! release. 870524, 940547, 715248, 938992, 1039057, 909088, 887984, 753708, 848365, 1144670, 1122067 Patches integrated =================== ! No patches tracked via the Sourceforge system were integrated for this ! release. ! 1052816, 962693, 831941, 858925, 800671 --- 183,205 ---- Feature Requests Added ====================== ! The following feature requests tracked via the Sourceforge system were added ! in this release: 870524, 940547, 715248, 938992, 1039057, 909088, 887984, 753708, 848365, 1144670, 1122067 + A URL containing the details of these bugs can be made by appending the + bug number to this URL: + http://sourceforge.net/tracker/index.php?func=detail&group_id=61702&atid=498103&aid= + Patches integrated =================== ! The following patches tracked via the Sourceforge system were integrated for ! this release: ! 1052816, 962693, 831941, 858925, 800671, 1169939 ! ! A URL containing the details of these bugs can be made by appending the ! bug number to this URL: ! http://sourceforge.net/tracker/index.php?func=detail&group_id=61702&atid=498103&aid= From anadelonbrin at users.sourceforge.net Thu May 26 03:38:45 2005 From: anadelonbrin at users.sourceforge.net (Tony Meyer) Date: Wed, 25 May 2005 18:38:45 -0700 Subject: [Spambayes-checkins] spambayes/spambayes tokenizer.py,1.35,1.36 Message-ID: Update of /cvsroot/spambayes/spambayes/spambayes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27239/spambayes Modified Files: tokenizer.py Log Message: msg.get_type() is deprecated in favour of msg.get_content_type(), so switch to that to avoid DeprecationWarnings with Python 2.4 and the check_octets option. Index: tokenizer.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/spambayes/tokenizer.py,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** tokenizer.py 3 Apr 2005 23:30:54 -0000 1.35 --- tokenizer.py 26 May 2005 01:38:42 -0000 1.36 *************** *** 622,626 **** """Return a set of all msg parts with type 'application/octet-stream'.""" return Set(filter(lambda part: ! part.get_type() == 'application/octet-stream', msg.walk())) --- 622,626 ---- """Return a set of all msg parts with type 'application/octet-stream'.""" return Set(filter(lambda part: ! part.get_content_type() == 'application/octet-stream', msg.walk())) From sjoerd at users.sourceforge.net Mon May 30 09:02:14 2005 From: sjoerd at users.sourceforge.net (Sjoerd Mullender) Date: Mon, 30 May 2005 00:02:14 -0700 Subject: [Spambayes-checkins] spambayes/scripts sb_imapfilter.py,1.60,1.61 Message-ID: Update of /cvsroot/spambayes/spambayes/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19054/scripts Modified Files: sb_imapfilter.py Log Message: After closing a folder, there is no current folder, so set current_folder to None. When the following select fails, no attempt will be now made to close the last folder again, which would result in an uncaught exception from the call to self.close. Index: sb_imapfilter.py =================================================================== RCS file: /cvsroot/spambayes/spambayes/scripts/sb_imapfilter.py,v retrieving revision 1.60 retrieving revision 1.61 diff -C2 -d -r1.60 -r1.61 *** sb_imapfilter.py 18 May 2005 14:10:30 -0000 1.60 --- sb_imapfilter.py 30 May 2005 07:02:11 -0000 1.61 *************** *** 305,308 **** --- 305,309 ---- # anything with). self.close() + self.current_folder = None if folder == "":