=== modified file 'Mailman/Queue/Runner.py'
--- Mailman/Queue/Runner.py	2007-05-08 03:16:04 +0000
+++ Mailman/Queue/Runner.py	2008-04-22 02:02:38 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 1998-2007 by the Free Software Foundation, Inc.
+# Copyright (C) 1998-2008 by the Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -103,12 +103,18 @@
                 # but other problems can occur in message parsing, e.g.
                 # ValueError, and exceptions can occur in unpickling too.
                 # We don't want the runner to die, so we just log and skip
-                # this entry, but preserve it for analysis.
+                # this entry, but maybe preserve it for analysis.
                 self._log(e)
-                syslog('error',
-                       'Skipping and preserving unparseable message: %s',
-                       filebase)
-                self._switchboard.finish(filebase, preserve=True)
+                if mm_cfg.QRUNNER_SAVE_BAD_MESSAGES:
+                    syslog('error',
+                           'Skipping and preserving unparseable message: %s',
+                           filebase)
+                    preserve=True
+                else:
+                    syslog('error',
+                           'Ignoring unparseable message: %s', filebase)
+                    preserve=False
+                self._switchboard.finish(filebase, preserve=preserve)
                 continue
             try:
                 self._onefile(msg, msgdata)

=== modified file 'Mailman/Queue/Switchboard.py'
--- Mailman/Queue/Switchboard.py	2008-02-14 16:53:52 +0000
+++ Mailman/Queue/Switchboard.py	2008-04-22 02:11:19 +0000
@@ -169,13 +169,13 @@
         bakfile = os.path.join(self.__whichq, filebase + '.bak')
         try:
             if preserve:
-                psvfile = os.path.join(mm_cfg.SHUNTQUEUE_DIR, filebase + '.psv')
+                psvfile = os.path.join(mm_cfg.BADQUEUE_DIR, filebase + '.psv')
                 # Create the directory if it doesn't yet exist.
                 # Copied from __init__.
                 omask = os.umask(0)                       # rwxrws---
                 try:
                     try:
-                        os.mkdir(mm_cfg.SHUNTQUEUE_DIR, 0770)
+                        os.mkdir(mm_cfg.BADQUEUE_DIR, 0770)
                     except OSError, e:
                         if e.errno <> errno.EEXIST: raise
                 finally:

=== modified file 'Mailman/Commands/cmd_subscribe.py'
--- Mailman/Commands/cmd_subscribe.py	2008-03-20 03:07:51 +0000
+++ Mailman/Commands/cmd_subscribe.py	2008-04-23 14:32:48 +0000
@@ -71,7 +71,8 @@
             return STOP
         argnum += 1
     # Fix the password/digest issue
-    if digest is None and password.lower() in ('digest', 'nodigest'):
+    if (digest is None
+            and password and password.lower() in ('digest', 'nodigest')):
         if password.lower() == 'digest':
             digest = 1
         else: