aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Mailman/Defaults.py.in198
-rw-r--r--Mailman/Gui/NonDigest.py36
-rw-r--r--Mailman/Handlers/SMTPDirect.py24
-rw-r--r--Mailman/Queue/Switchboard.py6
-rw-r--r--README-I18N.en98
-rw-r--r--admin/www/admins.html2
-rw-r--r--admin/www/bugs.html9
-rw-r--r--admin/www/devs.html4
-rw-r--r--admin/www/docs.html2
-rw-r--r--admin/www/download.html2
-rw-r--r--admin/www/faq.html9
-rw-r--r--admin/www/features.html9
-rw-r--r--admin/www/help.html9
-rw-r--r--admin/www/i18n.ht11
-rw-r--r--admin/www/i18n.html13
-rw-r--r--admin/www/index.html2
-rw-r--r--admin/www/install.html2
-rw-r--r--admin/www/inthenews.html7
-rw-r--r--admin/www/jwzrebuttal.html2
-rw-r--r--admin/www/lists.html9
-rw-r--r--admin/www/mgrs.html9
-rw-r--r--admin/www/mirrors.html9
-rw-r--r--admin/www/otherstuff.html2
-rw-r--r--admin/www/prev.html9
-rw-r--r--admin/www/requirements.html2
-rw-r--r--admin/www/site.html2
-rw-r--r--admin/www/todo.ht2
-rw-r--r--admin/www/todo.html4
-rw-r--r--admin/www/users.html2
-rw-r--r--admin/www/version.html2
-rwxr-xr-xbin/add_members44
-rwxr-xr-xbin/rmlist71
-rwxr-xr-xcron/checkdbs1
33 files changed, 347 insertions, 266 deletions
diff --git a/Mailman/Defaults.py.in b/Mailman/Defaults.py.in
index 613cd7ce..819a9062 100644
--- a/Mailman/Defaults.py.in
+++ b/Mailman/Defaults.py.in
@@ -31,6 +31,16 @@ def minutes(m): return m * 60
def hours(h): return h * 60 * 60
def days(d): return d * 60 * 60 * 24
+# Some convenient constants
+try:
+ True, False
+except NameError:
+ True = 1
+ False = 0
+
+Yes = yes = On = on = True
+No = no = Off = off = False
+
#####
@@ -91,8 +101,8 @@ MAILMAN_SITE_LIST = 'mailman'
# makes me nervous to hand out site auth cookies because if this cookie is
# cracked or intercepted, the intruder will have access to every list on the
# site. OTOH, it's dang handy to not have to re-authenticate to every list on
-# the site. Set this value to 1 to allow site admin cookies.
-ALLOW_SITE_ADMIN_COOKIES = 0
+# the site. Set this value to Yes to allow site admin cookies.
+ALLOW_SITE_ADMIN_COOKIES = No
# Command that is used to convert text/html parts into plain text. This
# should output results to standard output. %(filename)s will contain the
@@ -112,12 +122,12 @@ HTML_TO_PLAIN_TEXT_COMMAND = '/usr/bin/lynx -dump %(filename)s'
# DEFAULT_HOST_NAME.
VIRTUAL_HOSTS = {}
-# When set, the listinfo and admin overviews of lists on the machine will be
-# confined to only those lists whose web_page_url configuration option host is
-# included within the URL by which the page is visited - only those "on the
-# virtual host". If unset, then all advertised (i.e. public) lists are
-# included in the overview.
-VIRTUAL_HOST_OVERVIEW = 1
+# When set to Yes, the listinfo and admin overviews of lists on the machine
+# will be confined to only those lists whose web_page_url configuration option
+# host is included within the URL by which the page is visited - only those
+# "on the virtual host". When set to No, all advertised (i.e. public) lists
+# are included in the overview.
+VIRTUAL_HOST_OVERVIEW = On
# Helper function; use this in your mm_cfg.py files. If optional emailhost is
@@ -194,10 +204,11 @@ WEB_HIGHLIGHT_COLOR = '#dddddd' # If true, alternating rows
PUBLIC_ARCHIVE_URL = 'http://%(hostname)s/pipermail/%(listname)s'
# Are archives on or off by default?
-DEFAULT_ARCHIVE = 1 # 0=Off, 1=On
+DEFAULT_ARCHIVE = On
# Are archives public or private by default?
-DEFAULT_ARCHIVE_PRIVATE = 0 # 0=public, 1=private
+# 0=public, 1=private
+DEFAULT_ARCHIVE_PRIVATE = 0
# ARCHIVE_TO_MBOX
#-1 - do not do any archiving
@@ -207,7 +218,6 @@ DEFAULT_ARCHIVE_PRIVATE = 0 # 0=public, 1=private
# use this to make both external archiving mechanism work and
# mailman's builtin html archiving. the flat mail file can be
# useful for searching, external archivers, etc.
-#
ARCHIVE_TO_MBOX = 2
# 0 - yearly
@@ -221,16 +231,17 @@ DEFAULT_DIGEST_VOLUME_FREQUENCY = 1
# These variables control the use of an external archiver. Normally if
# archiving is turned on (see ARCHIVE_TO_MBOX above and the list's archive*
# attributes) the internal Pipermail archiver is used. This is the default if
-# both of these variables are set to false. When either is set, the value
-# should be a shell command string which will get passed to os.popen(). This
-# string can contain %(listname)s for dictionary interpolation. The name of
-# the list being archived will be substituted for this.
+# both of these variables are set to No. When either is set, the value should
+# be a shell command string which will get passed to os.popen(). This string
+# can contain %(listname)s for dictionary interpolation. The name of the list
+# being archived will be substituted for this. Please note that os.popen() is
+# used.
#
# Note that if you set one of these variables, you should set both of them
# (they can be the same string). This will mean your external archiver will
# be used regardless of whether public or private archives are selected.
-PUBLIC_EXTERNAL_ARCHIVER = 0
-PRIVATE_EXTERNAL_ARCHIVER = 0
+PUBLIC_EXTERNAL_ARCHIVER = No
+PRIVATE_EXTERNAL_ARCHIVER = No
# A filter module that converts from multipart messages to "flat" messages
# (i.e. containing a single payload). This is required for Pipermail, and you
@@ -272,11 +283,11 @@ ARCHIVE_SCRUBBER = 'Mailman.Handlers.Scrubber'
# program.
ARCHIVE_HTML_SANITIZER = 1
-# Set this to 1 to enable gzipping of the downloadable archive .txt file.
+# Set this to Yes to enable gzipping of the downloadable archive .txt file.
# Note that this is /extremely/ inefficient, so an alternative is to just
# collect the messages in the associated .txt file and run a cron job every
# night to generate the txt.gz file. See cron/nightly_gzip for details.
-GZIP_ARCHIVE_TXT_FILES = 0
+GZIP_ARCHIVE_TXT_FILES = No
# This sets the default `clobber date' policy for the archiver. When a
# message is to be archived either by Pipermail or an external archiver,
@@ -291,10 +302,10 @@ ARCHIVER_CLOBBER_DATE_POLICY = 2
ARCHIVER_ALLOWABLE_SANE_DATE_SKEW = days(15)
# Pipermail archives contain the raw email addresses of the posting authors.
-# Some view this as a goldmine for spam harvesters. Set this to true to
+# Some view this as a goldmine for spam harvesters. Set this to Yes to
# moderately obscure email addresses, but note that this breaks mailto: URLs
# in the archives too.
-ARCHIVER_OBSCURES_EMAILADDRS = 1
+ARCHIVER_OBSCURES_EMAILADDRS = Yes
# Pipermail assumes that messages bodies contain US-ASCII text.
# Change this option to define a different character set to be used as
@@ -569,15 +580,15 @@ VERP_FORMAT = '%(bounces)s+%(mailbox)s=%(host)s'
VERP_REGEXP = r'^(?P<bounces>[^+]+?)\+(?P<mailbox>[^=]+)=(?P<host>[^@]+)@.*$'
# A perfect opportunity for doing VERP is the password reminders, which are
-# already addressed individually to each recipient. This flag, if true,
-# enables VERPs on all password reminders.
-VERP_PASSWORD_REMINDERS = 0
+# already addressed individually to each recipient. Set this to Yes to enable
+# VERPs on all password reminders.
+VERP_PASSWORD_REMINDERS = No
# Another good opportunity is when regular delivery is personalized. Here
# again, we're already incurring the performance hit for addressing each
-# individual recipient. Set this to true to enable VERPs on all personalized
+# individual recipient. Set this to Yes to enable VERPs on all personalized
# regular deliveries (personalized digests aren't supported yet).
-VERP_PERSONALIZED_DELIVERIES = 0
+VERP_PERSONALIZED_DELIVERIES = No
# And finally, we can VERP normal, non-personalized deliveries. However,
# because it can be a significant performance hit, we allow you to decide how
@@ -600,8 +611,8 @@ VERP_CONFIRM_FORMAT = '%(addr)s+%(cookie)s'
# VERP_CONFIRM_FORMAT.
VERP_CONFIRM_REGEXP = r'^(?P<addr>[^+]+?)\+(?P<cookie>[^@]+)@.*$'
-# Set this to true to enable VERP-like (more user friendly) confirmations
-VERP_CONFIRMATIONS = 0
+# Set this to Yes to enable VERP-like (more user friendly) confirmations
+VERP_CONFIRMATIONS = No
# This is the maximum number of automatic responses sent to an address because
# of -request messages or posting hold messages. This limit prevents response
@@ -637,15 +648,17 @@ QRUNNERS = [
('VirginRunner', 1), # internally crafted (virgin birth) messages
]
-# Set this to true to use the `Maildir' delivery option. If you change this
+# Set this to Yes to use the `Maildir' delivery option. If you change this
# you will need to re-run bin/genaliases for MTAs that don't use list
-# auto-detection. Also, the line after USE_MAILDIR to your mm_cfg.py file.
+# auto-detection.
#
# WARNING: If you want to use Maildir delivery, you /must/ start Mailman's
# qrunner as root, or you will get permission problems.
#
# NOTE: Maildir delivery is experimental for Mailman 2.1.
-USE_MAILDIR = 0
+USE_MAILDIR = No
+# NOTE: If you set USE_MAILDIR = Yes, add the following line to your mm_cfg.py
+# file (uncommented of course!)
# QRUNNERS.append(('MaildirRunner', 1))
# After processing every file in the qrunner's slice, how long should the
@@ -657,9 +670,9 @@ QRUNNER_SLEEP_TIME = seconds(1)
# When a message that is unparsable (by the email package) is received, what
# should we do with it? The most common cause of unparsable messages is
# broken MIME encapsulation, and the most common cause of that is viruses like
-# Nimda. Set this variable to 0 to discard such messages, or to 1 to store
+# Nimda. Set this variable to No to discard such messages, or to Yes to store
# them in qfiles/bad subdirectory.
-QRUNNER_SAVE_BAD_MESSAGES = 1
+QRUNNER_SAVE_BAD_MESSAGES = Yes
@@ -673,18 +686,18 @@ QRUNNER_SAVE_BAD_MESSAGES = 1
DEFAULT_SERVER_LANGUAGE = 'en'
# When allowing only members to post to a mailing list, how is the sender of
-# the message determined? If this variable is set to 1, then first the
+# the message determined? If this variable is set to Yes, then first the
# message's envelope sender is used, with a fallback to the sender if there is
-# no envelope sender. Set this variable to 0 to always use the sender.
+# no envelope sender. Set this variable to No to always use the sender.
#
# The envelope sender is set by the SMTP delivery and is thus less easily
# spoofed than the sender, which is typically just taken from the From: header
# and thus easily spoofed by the end-user. However, sometimes the envelope
# sender isn't set correctly and this will manifest itself by postings being
# held for approval even if they appear to come from a list member. If you
-# are having this problem, set this variable to 0, but understand that some
+# are having this problem, set this variable to No, but understand that some
# spoofed messages may get through.
-USE_ENVELOPE_SENDER = 0
+USE_ENVELOPE_SENDER = No
# Membership tests for posting purposes are usually performed by looking at a
# set of headers, passing the test if any of their values match a member of
@@ -702,24 +715,24 @@ DEFAULT_ADMIN_MEMBER_CHUNKSIZE = 30
# size (though this will slow down rendering those pages).
ADMINDB_PAGE_TEXT_LIMIT = 4096
-# Set this variable to 1 to allow list owners to delete their own mailing
+# Set this variable to Yes to allow list owners to delete their own mailing
# lists. You may not want to give them this power, in which case, setting
-# this variable to 0 instead requires list removal to be done by the site
+# this variable to No instead requires list removal to be done by the site
# administrator, via the command line script bin/rmlist.
-OWNERS_CAN_DELETE_THEIR_OWN_LISTS = 0
+OWNERS_CAN_DELETE_THEIR_OWN_LISTS = No
-# Set this variable to 1 to allow list owners to set the "personalized" flags
-# on their mailing lists. Turning these on tells Mailman to send separate
-# email messages to each user instead of batching them together for delivery
-# to the MTA. This gives each member a more personalized message, but can
-# have a heavy impact on the performance of your system.
-OWNERS_CAN_ENABLE_PERSONALIZATION = 0
+# Set this variable to Yes to allow list owners to set the "personalized"
+# flags on their mailing lists. Turning these on tells Mailman to send
+# separate email messages to each user instead of batching them together for
+# delivery to the MTA. This gives each member a more personalized message,
+# but can have a heavy impact on the performance of your system.
+OWNERS_CAN_ENABLE_PERSONALIZATION = No
# Should held messages be saved on disk as Python pickles or as plain text?
# The former is more efficient since we don't need to go through the
# parse/generate roundtrip each time, but the latter might be preferred if you
# want to edit the held message on disk.
-HOLD_MESSAGES_AS_PICKLES = 1
+HOLD_MESSAGES_AS_PICKLES = Yes
# These define the available types of external message metadata formats, and
# the one to use by default. MARSHAL format uses Python's built-in marshal
@@ -757,13 +770,15 @@ DEFAULT_NEW_MEMBER_OPTIONS = 256
#####
-# List defaults
+# List defaults. NOTE: Changing these values does NOT change the
+# configuration of an existing list. It only defines the default for new
+# lists you subsequently create.
#####
# Should a list, by default be advertised? What is the default maximum number
# of explicit recipients allowed? What is the default maximum message size
# allowed?
-DEFAULT_LIST_ADVERTISED = 1
+DEFAULT_LIST_ADVERTISED = Yes
DEFAULT_MAX_NUM_RECIPIENTS = 10
DEFAULT_MAX_MESSAGE_SIZE = 40 # KB
@@ -782,17 +797,17 @@ DEFAULT_MAIL_COMMANDS_MAX_LINES = 25
# Is the list owner notified of admin requests immediately by mail, as well as
# by daily pending-request reminder?
-DEFAULT_ADMIN_IMMED_NOTIFY = 1
+DEFAULT_ADMIN_IMMED_NOTIFY = Yes
# Is the list owner notified of subscribes/unsubscribes?
-DEFAULT_ADMIN_NOTIFY_MCHANGES = 0
+DEFAULT_ADMIN_NOTIFY_MCHANGES = No
# Should list members, by default, have their posts be moderated?
-DEFAULT_DEFAULT_MEMBER_MODERATION = 0
+DEFAULT_DEFAULT_MEMBER_MODERATION = No
# Should non-member posts which are auto-discarded also be forwarded to the
# moderators?
-DEFAULT_FORWARD_AUTO_DISCARDS = 1
+DEFAULT_FORWARD_AUTO_DISCARDS = Yes
# What shold happen to non-member posts which are do not match explicit
# non-member actions?
@@ -804,31 +819,30 @@ DEFAULT_GENERIC_NONMEMBER_ACTION = 1
# Bounce if 'To:', 'Cc:', or 'Resent-To:' fields don't explicitly name list?
# This is an anti-spam measure
-DEFAULT_REQUIRE_EXPLICIT_DESTINATION = 1
+DEFAULT_REQUIRE_EXPLICIT_DESTINATION = Yes
# Alternate names acceptable as explicit destinations for this list.
DEFAULT_ACCEPTABLE_ALIASES ="""
"""
# For mailing lists that have only other mailing lists for members:
-DEFAULT_UMBRELLA_LIST = 0
+DEFAULT_UMBRELLA_LIST = No
# For umbrella lists, the suffix for the account part of address for
# administrative notices (subscription confirmations, password reminders):
DEFAULT_UMBRELLA_MEMBER_ADMIN_SUFFIX = "-owner"
# This variable controls whether monthly password reminders are sent.
-DEFAULT_SEND_REMINDERS = 1
+DEFAULT_SEND_REMINDERS = Yes
-# Send welcome messages to new users? Probably should keep this set to 1.
-DEFAULT_SEND_WELCOME_MSG = 1
+# Send welcome messages to new users?
+DEFAULT_SEND_WELCOME_MSG = Yes
-# Send goodbye messages to unsubscribed members? Probably should keep this
-# set to 1.
-DEFAULT_SEND_GOODBYE_MSG = 1
+# Send goodbye messages to unsubscribed members?
+DEFAULT_SEND_GOODBYE_MSG = Yes
# Wipe sender information, and make it look like the list-admin
# address sends all messages
-DEFAULT_ANONYMOUS_LIST = 0
+DEFAULT_ANONYMOUS_LIST = No
# {header-name: regexp} spam filtering - we include some for example sake.
DEFAULT_BOUNCE_MATCHING_HEADERS = """
@@ -850,9 +864,8 @@ from: .*@uplinkpro.com
DEFAULT_REPLY_GOES_TO_LIST = 0
# Mailman can be configured to strip any existing Reply-To: header, or simply
-# extend any existing Reply-To: with one based on the above setting. This is
-# a boolean variable.
-DEFAULT_FIRST_STRIP_REPLY_TO = 0
+# extend any existing Reply-To: with one based on the above setting.
+DEFAULT_FIRST_STRIP_REPLY_TO = No
# SUBSCRIBE POLICY
# 0 - open list (only when ALLOW_OPEN_SUBSCRIBE is set to 1) **
@@ -864,8 +877,8 @@ DEFAULT_FIRST_STRIP_REPLY_TO = 0
# subscribes (next variable)
DEFAULT_SUBSCRIBE_POLICY = 1
-# does this site allow completely unchecked subscriptions?
-ALLOW_OPEN_SUBSCRIBE = 0
+# Does this site allow completely unchecked subscriptions?
+ALLOW_OPEN_SUBSCRIBE = No
# The default policy for unsubscriptions. 0 (unmoderated unsubscribes) is
# highly recommended!
@@ -878,22 +891,22 @@ DEFAULT_PRIVATE_ROSTER = 1
# When exposing members, make them unrecognizable as email addrs, so
# web-spiders can't pick up addrs for spam purposes.
-DEFAULT_OBSCURE_ADDRESSES = 1
+DEFAULT_OBSCURE_ADDRESSES = Yes
# RFC 2369 defines List-* headers which are added to every message sent
# through to the mailing list membership. These are a very useful aid to end
# users and should always be added. However, not all MUAs are compliant and
# if a list's membership has many such users, they may clamor for these
-# headers to be suppressed. By setting this variable to 1, list owners will
-# be given the option to suppress these headers. By setting it to 0, list
+# headers to be suppressed. By setting this variable to Yes, list owners will
+# be given the option to suppress these headers. By setting it to No, list
# owners will not be given the option to suppress these headers (although some
# header suppression may still take place, i.e. for announce-only lists, or
# lists with no archives).
-ALLOW_RFC2369_OVERRIDES = 1
+ALLOW_RFC2369_OVERRIDES = Yes
# Defaults for content filtering on mailing lists. DEFAULT_FILTER_CONTENT is
# a flag which if set to true, turns on content filtering.
-DEFAULT_FILTER_CONTENT = 0
+DEFAULT_FILTER_CONTENT = No
# DEFAULT_FILTER_MIME_TYPES is a list of MIME types to be removed. This is a
# list of strings of the format "maintype/subtype" or simply "maintype".
@@ -908,7 +921,7 @@ DEFAULT_PASS_MIME_TYPES = ['multipart/mixed',
# Whether text/html should be converted to text/plain after content filtering
# is performed. Conversion is done according to HTML_TO_PLAIN_TEXT_COMMAND
-DEFAULT_CONVERT_HTML_TO_PLAINTEXT = 1
+DEFAULT_CONVERT_HTML_TO_PLAINTEXT = Yes
# Default action to take on filtered messages.
# 0 = Discard, 1 = Reject, 2 = Forward, 3 = Preserve
@@ -916,29 +929,29 @@ DEFAULT_FILTER_ACTION = 0
# Whether to allow list owners to preserve content filtered messages to a
# special queue on the disk.
-OWNERS_CAN_PRESERVE_FILTERED_MESSAGES = 1
+OWNERS_CAN_PRESERVE_FILTERED_MESSAGES = Yes
# Check for administrivia in messages sent to the main list?
-DEFAULT_ADMINISTRIVIA = 1
+DEFAULT_ADMINISTRIVIA = Yes
#####
-# Digestification defaults
+# Digestification defaults. Same caveat applies here as with list defaults.
#####
# Will list be available in non-digested form?
-DEFAULT_NONDIGESTABLE = 1
+DEFAULT_NONDIGESTABLE = Yes
# Will list be available in digested form?
-DEFAULT_DIGESTABLE = 1
+DEFAULT_DIGESTABLE = Yes
DEFAULT_DIGEST_HEADER = ""
DEFAULT_DIGEST_FOOTER = DEFAULT_MSG_FOOTER
-DEFAULT_DIGEST_IS_DEFAULT = 0
-DEFAULT_MIME_IS_DEFAULT_DIGEST = 0
+DEFAULT_DIGEST_IS_DEFAULT = No
+DEFAULT_MIME_IS_DEFAULT_DIGEST = No
DEFAULT_DIGEST_SIZE_THRESHHOLD = 30 # KB
-DEFAULT_DIGEST_SEND_PERIODIC = 1
+DEFAULT_DIGEST_SEND_PERIODIC = Yes
# Headers which should be kept in both RFC 1153 (plain) and MIME digests. RFC
# 1153 also specifies these headers in this exact order, so order matters.
@@ -961,11 +974,11 @@ PLAIN_DIGEST_KEEP_HEADERS = [
#####
-# Bounce processing defaults
+# Bounce processing defaults. Same caveat applies here as with list defaults.
#####
# Should we do any bounced mail response at all?
-DEFAULT_BOUNCE_PROCESSING = 1
+DEFAULT_BOUNCE_PROCESSING = Yes
# Bounce processing works like this: when a bounce from a member is received,
# we look up the `bounce info' for this member. If there is no bounce info,
@@ -1008,14 +1021,14 @@ DEFAULT_BOUNCE_YOU_ARE_DISABLED_WARNINGS_INTERVAL = days(7)
# Does the list owner get messages to the -bounces (and -admin) address that
# failed to match by the bounce detector?
-DEFAULT_BOUNCE_UNRECOGNIZED_GOES_TO_LIST_OWNER = 1
+DEFAULT_BOUNCE_UNRECOGNIZED_GOES_TO_LIST_OWNER = Yes
# Notifications on bounce actions. The first specifies whether the list owner
# should get a notification when a member is disabled due to bouncing, while
# the second specifies whether the owner should get one when the member is
# removed due to bouncing.
-DEFAULT_BOUNCE_NOTIFY_OWNER_ON_DISABLE = 1
-DEFAULT_BOUNCE_NOTIFY_OWNER_ON_REMOVAL = 1
+DEFAULT_BOUNCE_NOTIFY_OWNER_ON_DISABLE = Yes
+DEFAULT_BOUNCE_NOTIFY_OWNER_ON_REMOVAL = Yes
@@ -1047,10 +1060,10 @@ DELIVERY_RETRY_WAIT = hours(1)
# VARIABLES DEPENDING ON THE SIZE OF YOUR LISTS, THE PERFORMANCE OF YOUR
# HARDWARE, NETWORK AND GENERAL MAIL HANDLING CAPABILITIES, ETC.
-# Set this to true to turn on MailList object lock debugging messages, which
+# Set this to On to turn on MailList object lock debugging messages, which
# will be written to logs/locks. If you think you're having lock problems, or
# just want to tune the locks for your system, turn on lock debugging.
-LIST_LOCK_DEBUGGING = 0
+LIST_LOCK_DEBUGGING = Off
# This variable specifies how long the lock will be retained for a specific
# operation on a mailing list. Watch your logs/lock file and if you see a lot
@@ -1065,11 +1078,11 @@ LIST_LOCK_LIFETIME = hours(5)
# the message will be re-queued for later delivery.
LIST_LOCK_TIMEOUT = seconds(10)
-# Set this to true to turn on lock debugging messages for the pending requests
+# Set this to On to turn on lock debugging messages for the pending requests
# database, which will be written to logs/locks. If you think you're having
# lock problems, or just want to tune the locks for your system, turn on lock
# debugging.
-PENDINGDB_LOCK_DEBUGGING = 0
+PENDINGDB_LOCK_DEBUGGING = Off
# This variable specifies how long an attempt will be made to acquire a
# pendingdb lock by the incoming qrunner process. If the lock acquisition
@@ -1088,8 +1101,8 @@ PENDINGDB_LOCK_ATTEMPTS = 10
#####
# Nothing below here is user configurable. Most of these values are in this
-# file for convenience. Don't change any of them or override any of them in
-# your mm_cfg.py file!
+# file for internal system convenience. Don't change any of them or override
+# any of them in your mm_cfg.py file!
#####
# These directories are used to find various important files in the Mailman
@@ -1254,6 +1267,7 @@ add_language('ko', _('Korean'), 'euc-kr')
add_language('lt', _('Lithuanian'), 'iso-8859-13')
add_language('nl', _('Dutch'), 'iso-8859-1')
add_language('no', _('Norwegian'), 'iso-8859-1')
+add_language('pl', _('Polish'), 'iso-8859-2')
add_language('pt', _('Portuguese'), 'iso-8859-1')
add_language('pt_BR', _('Portuguese (Brazil)'), 'iso-8859-1')
add_language('ru', _('Russian'), 'koi8-r')
diff --git a/Mailman/Gui/NonDigest.py b/Mailman/Gui/NonDigest.py
index 900f865f..b66c5c4f 100644
--- a/Mailman/Gui/NonDigest.py
+++ b/Mailman/Gui/NonDigest.py
@@ -1,17 +1,17 @@
-# Copyright (C) 2001,2002 by the Free Software Foundation, Inc.
+# Copyright (C) 2001-2003 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
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
-#
+#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-#
+#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
+# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
"""GUI component for managing the non-digest delivery options.
@@ -104,17 +104,35 @@ class NonDigest(GUIBase):
# get a bogus warning if the header/footer contains a personalization
# substitution variable, and we're transitioning from no
# personalization to personalization enabled.
+ headfoot = Utils.maketext('headfoot.html', mlist=mlist, raw=1)
+ if mm_cfg.OWNERS_CAN_ENABLE_PERSONALIZATION:
+ extra = _("""\
+When <a href="?VARHELP=nondigest/personalize">personalization</a> is enabled
+for this list, additional substitution variables are allowed in your headers
+and footers:
+
+<ul><li><b>user_address</b> - The address of the user,
+ coerced to lower case.
+ <li><b>user_delivered_to</b> - The case-preserved address
+ that the user is subscribed with.
+ <li><b>user_password</b> - The user's password.
+ <li><b>user_name</b> - The user's full name.
+ <li><b>user_optionsurl</b> - The url to the user's option
+ page.
+</ul>
+""")
+ else:
+ extra = ''
+
info.extend([('msg_header', mm_cfg.Text, (10, WIDTH), 0,
_('Header added to mail sent to regular list members'),
_('''Text prepended to the top of every immediately-delivery
- message. ''') + Utils.maketext('headfoot.html',
- mlist=mlist, raw=1)),
-
+ message. ''') + headfoot + extra),
+
('msg_footer', mm_cfg.Text, (10, WIDTH), 0,
_('Footer added to mail sent to regular list members'),
_('''Text appended to the bottom of every immediately-delivery
- message. ''') + Utils.maketext('headfoot.html',
- mlist=mlist, raw=1)),
+ message. ''') + headfoot + extra),
])
return info
diff --git a/Mailman/Handlers/SMTPDirect.py b/Mailman/Handlers/SMTPDirect.py
index 4724c3a1..acaa77e2 100644
--- a/Mailman/Handlers/SMTPDirect.py
+++ b/Mailman/Handlers/SMTPDirect.py
@@ -50,7 +50,7 @@ DOT = '.'
# Manage a connection to the SMTP server
class Connection:
def __init__(self):
- self.__connect()
+ self.__conn = None
def __connect(self):
self.__conn = smtplib.SMTP()
@@ -58,26 +58,32 @@ class Connection:
self.__numsessions = mm_cfg.SMTP_MAX_SESSIONS_PER_CONNECTION
def sendmail(self, envsender, recips, msgtext):
+ if self.__conn is None:
+ self.__connect()
try:
results = self.__conn.sendmail(envsender, recips, msgtext)
except smtplib.SMTPException:
- # For safety, reconnect
- self.__conn.quit()
- self.__connect()
- # Let exceptions percolate up
+ # For safety, close this connection. The next send attempt will
+ # automatically re-open it. Pass the exception on up.
+ self.quit()
raise
- # Decrement the session counter, reconnecting if necessary
+ # This session has been successfully completed.
self.__numsessions -= 1
# By testing exactly for equality to 0, we automatically handle the
# case for SMTP_MAX_SESSIONS_PER_CONNECTION <= 0 meaning never close
# the connection. We won't worry about wraparound <wink>.
if self.__numsessions == 0:
- self.__conn.quit()
- self.__connect()
+ self.quit()
return results
def quit(self):
- self.__conn.quit()
+ if self.__conn is None:
+ return
+ try:
+ self.__conn.quit()
+ except smtplib.SMTPException:
+ pass
+ self.__conn = None
diff --git a/Mailman/Queue/Switchboard.py b/Mailman/Queue/Switchboard.py
index 9a254039..77179fcf 100644
--- a/Mailman/Queue/Switchboard.py
+++ b/Mailman/Queue/Switchboard.py
@@ -72,8 +72,8 @@ class _Switchboard:
self.__upper = None
# BAW: test performance and end-cases of this algorithm
if numslices <> 1:
- self.__lower = (shamax * slice) / numslices
- self.__upper = (shamax * (slice+1)) / numslices
+ self.__lower = ((shamax+1) * slice) / numslices
+ self.__upper = (((shamax+1) * (slice+1)) / numslices) - 1
def whichq(self):
return self.__whichq
@@ -139,7 +139,7 @@ class _Switchboard:
# plain text. Second, the actual message file. However, we want to
# first unlink the message file and then the .db file, because the
# qrunner only cues off of the .db file
- msg = data = None
+ msg = None
try:
data = self._ext_read(dbfile)
os.unlink(dbfile)
diff --git a/README-I18N.en b/README-I18N.en
index b3efcd64..1f3c2432 100644
--- a/README-I18N.en
+++ b/README-I18N.en
@@ -132,33 +132,77 @@ DONATING YOUR TRANSLATION BACK TO MAILMAN
CURRENT LIST OF LANGUAGE SUPPORTED OUT-OF-THE BOX
- As of this writing (23-Dec-2002), Mailman 2.1 supports the
- following languages out of the box:
-
- - Czech
- - Chinese (Simplified and Traditional, but may have problems)
- - Dutch
- - English
- - Estonian
- - Finnish
- - French
- - German
- - Hungarian
- - Italian
- - Japanese
- - Korean
- - Lithuanian
- - Norwegian
- - Portuguese (Brazil)
- - Russian
- - Spanish
- - Swedish
-
- We've also had volunteers for these languages, although they
- aren't yet integrated into the code base:
-
- - Catalan
- - Polish
+ See http://www.list.org/i18n.html
+
+
+MORE INSTRUCTIONS
+
+ Here is the recipe that Simone Piunno used for the Italian
+ translations:
+
+ "You can start without much technical knowledge, but if you want
+ to keep your translation up-to-date (while the development branch
+ evolves into the next stable release) you'd better learn how to
+ use cvs and diff.
+
+ Here is my recipe.
+
+ Basically, you'll start by copying templates/en/* to your sandbox dir
+ and then translating each file. Keep in mind that %(foo)s is a
+ variable reference (much like %s in C) and must be left untouched.
+ Also, you must be able to recognize a markup tag (eg, <foo>) because
+ they must be left untouched too, and you should know how to escape
+ non-ASCII characters, e.g. "è" -> "&egrave;", but only in html files.
+ Remember that if you need a literal % sign, it must be doubled: %%
+
+ Next, you copy messages/mailman.pot, renaming it to serbian.po.
+ You can open this file with kbabel (a tool included in KDE SDK) and
+ translate each string (original on the higher half of the window, your
+ translation on the bottom half).
+
+ If you are a masochist, you can even use emacs PO mode ;)
+ Keep attention to the same markers and escaping as above, with the added
+ complexity that here it's harder to say when a string is html (e.g. used
+ for web UI) or pure text (e.g used for email interface)
+
+ Then you try to compile you .po file:
+
+ msgfmt -v -o serbian.mo serbian.po
+
+ No error messages should appear.
+
+ Next, copy your files on an installed mailman tree, and run
+ bin/transcheck XX, where XX is your coutry code.
+
+ No warning should appear (but maybe some warning is ok, if you really
+ know what you're doing).
+
+ Now, try to run your translation (add an "add_language" line to
+ Mailman/Defaults.py) and check the many scattered pieces blend
+ together well. Sometimes you'll need some adjustment.
+
+ When you're satistied, pack up a tar.gz with the following structure:
+
+ messages/XX/LC_MESSAGES/mailman.po
+ messages/XX/LC_MESSAGES/mailman.mo
+ templates/XX/admindbdetails.html
+ templates/XX/admindbpreamble.html
+ .
+ .
+ templates/XX/userpass.txt
+ templates/XX/verify.txt
+
+ (XX is your country code) and send it to Barry Warsaw.
+
+ By that time, your translation could be somewhat obsolete, because
+ templates and mailman.pot could have been evolved meanwhile.
+
+ Don't panic.
+
+ You'll need to check diffs to find what changed and how, so that
+ you can easily update your files.
+
+ Save everything everytime, you'll need it.
MORE INSTRUCTIONS
diff --git a/admin/www/admins.html b/admin/www/admins.html
index 9309a4cb..ac3e9917 100644
--- a/admin/www/admins.html
+++ b/admin/www/admins.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Mon Mar 31 16:00:37 2003 -->
+<!-- Sat Apr 19 21:58:48 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
diff --git a/admin/www/bugs.html b/admin/www/bugs.html
index 8c174924..c3f9b15d 100644
--- a/admin/www/bugs.html
+++ b/admin/www/bugs.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Thu Dec 26 22:31:20 2002 -->
+<!-- Sat Apr 19 21:58:48 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
@@ -80,7 +80,10 @@ Overview
<a href="features.html">Features</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
-<a href="otherstuff.html">Logos and Papers</a>
+<a href="i18n.html">Internationalization</a>
+</td></tr>
+<tr><td bgcolor="#eecfa1">
+<a href="otherstuff.html">Rants, Papers, and Logos</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="inthenews.html">Mailman in Use</a>
@@ -129,7 +132,7 @@ Email Us
&nbsp;
</td></tr>
<tr><td bgcolor="#eecfa1">
-&copy; 1998-2002
+&copy; 1998-2003
Free Software Foundation, Inc. Verbatim copying and distribution of this
entire article is permitted in any medium, provided this notice is preserved.
diff --git a/admin/www/devs.html b/admin/www/devs.html
index 41d1eb3f..b5fc03bb 100644
--- a/admin/www/devs.html
+++ b/admin/www/devs.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Thu Dec 26 22:30:21 2002 -->
+<!-- Sat Apr 19 21:58:48 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
@@ -110,7 +110,7 @@ Email Us
&nbsp;
</td></tr>
<tr><td bgcolor="#eecfa1">
-&copy; 1998-2002
+&copy; 1998-2003
Free Software Foundation, Inc. Verbatim copying and distribution of this
entire article is permitted in any medium, provided this notice is preserved.
diff --git a/admin/www/docs.html b/admin/www/docs.html
index 3c41e88c..add5b0db 100644
--- a/admin/www/docs.html
+++ b/admin/www/docs.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Mon Mar 31 16:00:38 2003 -->
+<!-- Sat Apr 19 21:58:48 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
diff --git a/admin/www/download.html b/admin/www/download.html
index 43bb5d8f..d9cc416b 100644
--- a/admin/www/download.html
+++ b/admin/www/download.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Mon Mar 31 16:00:38 2003 -->
+<!-- Sat Apr 19 21:58:49 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
diff --git a/admin/www/faq.html b/admin/www/faq.html
index 60c0ec7e..764b661a 100644
--- a/admin/www/faq.html
+++ b/admin/www/faq.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Thu Dec 26 22:30:25 2002 -->
+<!-- Sat Apr 19 21:58:55 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
@@ -80,7 +80,10 @@ Overview
<a href="features.html">Features</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
-<a href="otherstuff.html">Logos and Papers</a>
+<a href="i18n.html">Internationalization</a>
+</td></tr>
+<tr><td bgcolor="#eecfa1">
+<a href="otherstuff.html">Rants, Papers, and Logos</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="inthenews.html">Mailman in Use</a>
@@ -116,7 +119,7 @@ Email Us
&nbsp;
</td></tr>
<tr><td bgcolor="#eecfa1">
-&copy; 1998-2002
+&copy; 1998-2003
Free Software Foundation, Inc. Verbatim copying and distribution of this
entire article is permitted in any medium, provided this notice is preserved.
diff --git a/admin/www/features.html b/admin/www/features.html
index 878be8de..874f4867 100644
--- a/admin/www/features.html
+++ b/admin/www/features.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Thu Dec 26 22:30:22 2002 -->
+<!-- Sat Apr 19 21:58:49 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
@@ -80,7 +80,10 @@ Overview
<b>Features</b>
</td></tr>
<tr><td bgcolor="#eecfa1">
-<a href="otherstuff.html">Logos and Papers</a>
+<a href="i18n.html">Internationalization</a>
+</td></tr>
+<tr><td bgcolor="#eecfa1">
+<a href="otherstuff.html">Rants, Papers, and Logos</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="inthenews.html">Mailman in Use</a>
@@ -123,7 +126,7 @@ Email Us
&nbsp;
</td></tr>
<tr><td bgcolor="#eecfa1">
-&copy; 1998-2002
+&copy; 1998-2003
Free Software Foundation, Inc. Verbatim copying and distribution of this
entire article is permitted in any medium, provided this notice is preserved.
diff --git a/admin/www/help.html b/admin/www/help.html
index e70186b2..274e55c7 100644
--- a/admin/www/help.html
+++ b/admin/www/help.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Thu Dec 26 22:30:22 2002 -->
+<!-- Sat Apr 19 21:58:49 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
@@ -80,7 +80,10 @@ Overview
<a href="features.html">Features</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
-<a href="otherstuff.html">Logos and Papers</a>
+<a href="i18n.html">Internationalization</a>
+</td></tr>
+<tr><td bgcolor="#eecfa1">
+<a href="otherstuff.html">Rants, Papers, and Logos</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="inthenews.html">Mailman in Use</a>
@@ -130,7 +133,7 @@ Email Us
&nbsp;
</td></tr>
<tr><td bgcolor="#eecfa1">
-&copy; 1998-2002
+&copy; 1998-2003
Free Software Foundation, Inc. Verbatim copying and distribution of this
entire article is permitted in any medium, provided this notice is preserved.
diff --git a/admin/www/i18n.ht b/admin/www/i18n.ht
index 2a8b09da..b1cade0d 100644
--- a/admin/www/i18n.ht
+++ b/admin/www/i18n.ht
@@ -48,7 +48,7 @@ Project</a> for future language support.
<dl>
<p><dt><b>Catalan</b></dt>
- <dd><a href="mailto:jordi@debian.org">Jordi Mallach</a> is heading
+ <dd><a href="mailto:toni.panades@partal.com">Toni Panades</a> is heading
up the Catalan translation effort.
<p><dt><b>Chinese</b> Simplified (GB), and Big5</dt>
@@ -128,14 +128,13 @@ Project</a> for future language support.
</dd>
<p><dt><b>Polish</b></dt>
- <dd>Contrary to what you might think knowing my last name, I don't
- know a word of Polish. :) Fortunately,
+ <dd>Polish translations have been contributed by
+ <a href="mailto:sawickib@iem.pw.edu.pl">Bartosz Sawicki</a> with
+ help from the rest of the translation team:
<a href="mailto:Pawel.Kolodziejczyk@comarch.pl">Pawel
Kolodziejczyk</a>, <a href="mailto:wanted@mwd.pl">Marcin
Sochacki</a>, and
- <a href="mailto:m.zaborowski@il.pw.edu.pl">Marcin Zaborowski</a>
- have volunteered to spearhead the Polish
- translations.
+ <a href="mailto:m.zaborowski@il.pw.edu.pl">Marcin Zaborowski</a>.
<p><dt><b>Portuguese</b></dt>
<dd>The following folks are working on the Portuguese
diff --git a/admin/www/i18n.html b/admin/www/i18n.html
index 56a9e131..7a5b3a2b 100644
--- a/admin/www/i18n.html
+++ b/admin/www/i18n.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Sat Apr 19 00:45:21 2003 -->
+<!-- Sat Apr 19 21:58:49 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
@@ -197,7 +197,7 @@ Project</a> for future language support.
<dl>
<p><dt><b>Catalan</b></dt>
- <dd><a href="mailto:jordi@debian.org">Jordi Mallach</a> is heading
+ <dd><a href="mailto:toni.panades@partal.com">Toni Panades</a> is heading
up the Catalan translation effort.
<p><dt><b>Chinese</b> Simplified (GB), and Big5</dt>
@@ -277,14 +277,13 @@ Project</a> for future language support.
</dd>
<p><dt><b>Polish</b></dt>
- <dd>Contrary to what you might think knowing my last name, I don't
- know a word of Polish. :) Fortunately,
+ <dd>Polish translations have been contributed by
+ <a href="mailto:sawickib@iem.pw.edu.pl">Bartosz Sawicki</a> with
+ help from the rest of the translation team:
<a href="mailto:Pawel.Kolodziejczyk@comarch.pl">Pawel
Kolodziejczyk</a>, <a href="mailto:wanted@mwd.pl">Marcin
Sochacki</a>, and
- <a href="mailto:m.zaborowski@il.pw.edu.pl">Marcin Zaborowski</a>
- have volunteered to spearhead the Polish
- translations.
+ <a href="mailto:m.zaborowski@il.pw.edu.pl">Marcin Zaborowski</a>.
<p><dt><b>Portuguese</b></dt>
<dd>The following folks are working on the Portuguese
diff --git a/admin/www/index.html b/admin/www/index.html
index 3d82f6db..482faadb 100644
--- a/admin/www/index.html
+++ b/admin/www/index.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Sat Apr 19 20:55:58 2003 -->
+<!-- Sat Apr 19 21:58:49 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
diff --git a/admin/www/install.html b/admin/www/install.html
index 7dc16e9c..f8ce0824 100644
--- a/admin/www/install.html
+++ b/admin/www/install.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Mon Mar 31 16:00:38 2003 -->
+<!-- Sat Apr 19 21:58:50 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
diff --git a/admin/www/inthenews.html b/admin/www/inthenews.html
index 27b33a7d..29ae8c4e 100644
--- a/admin/www/inthenews.html
+++ b/admin/www/inthenews.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Tue Feb 4 00:20:07 2003 -->
+<!-- Sat Apr 19 21:58:50 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
@@ -80,7 +80,10 @@ Overview
<a href="features.html">Features</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
-<a href="otherstuff.html">Logos and Papers</a>
+<a href="i18n.html">Internationalization</a>
+</td></tr>
+<tr><td bgcolor="#eecfa1">
+<a href="otherstuff.html">Rants, Papers, and Logos</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<b>Mailman in Use</b>
diff --git a/admin/www/jwzrebuttal.html b/admin/www/jwzrebuttal.html
index 58236d26..f58d2f72 100644
--- a/admin/www/jwzrebuttal.html
+++ b/admin/www/jwzrebuttal.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Mon Mar 31 16:00:39 2003 -->
+<!-- Sat Apr 19 21:58:50 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
diff --git a/admin/www/lists.html b/admin/www/lists.html
index 998d7483..51261df6 100644
--- a/admin/www/lists.html
+++ b/admin/www/lists.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Thu Dec 26 22:30:23 2002 -->
+<!-- Sat Apr 19 21:58:50 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
@@ -80,7 +80,10 @@ Overview
<a href="features.html">Features</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
-<a href="otherstuff.html">Logos and Papers</a>
+<a href="i18n.html">Internationalization</a>
+</td></tr>
+<tr><td bgcolor="#eecfa1">
+<a href="otherstuff.html">Rants, Papers, and Logos</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="inthenews.html">Mailman in Use</a>
@@ -116,7 +119,7 @@ Email Us
&nbsp;
</td></tr>
<tr><td bgcolor="#eecfa1">
-&copy; 1998-2002
+&copy; 1998-2003
Free Software Foundation, Inc. Verbatim copying and distribution of this
entire article is permitted in any medium, provided this notice is preserved.
diff --git a/admin/www/mgrs.html b/admin/www/mgrs.html
index 37742b1e..e8f26abd 100644
--- a/admin/www/mgrs.html
+++ b/admin/www/mgrs.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Thu Dec 26 22:30:23 2002 -->
+<!-- Sat Apr 19 21:58:53 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
@@ -80,7 +80,10 @@ Overview
<a href="features.html">Features</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
-<a href="otherstuff.html">Logos and Papers</a>
+<a href="i18n.html">Internationalization</a>
+</td></tr>
+<tr><td bgcolor="#eecfa1">
+<a href="otherstuff.html">Rants, Papers, and Logos</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="inthenews.html">Mailman in Use</a>
@@ -135,7 +138,7 @@ Email Us
&nbsp;
</td></tr>
<tr><td bgcolor="#eecfa1">
-&copy; 1998-2002
+&copy; 1998-2003
Free Software Foundation, Inc. Verbatim copying and distribution of this
entire article is permitted in any medium, provided this notice is preserved.
diff --git a/admin/www/mirrors.html b/admin/www/mirrors.html
index 84c25eda..a7bc86e6 100644
--- a/admin/www/mirrors.html
+++ b/admin/www/mirrors.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Thu Dec 26 22:30:23 2002 -->
+<!-- Sat Apr 19 21:58:53 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
@@ -80,7 +80,10 @@ Overview
<a href="features.html">Features</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
-<a href="otherstuff.html">Logos and Papers</a>
+<a href="i18n.html">Internationalization</a>
+</td></tr>
+<tr><td bgcolor="#eecfa1">
+<a href="otherstuff.html">Rants, Papers, and Logos</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="inthenews.html">Mailman in Use</a>
@@ -116,7 +119,7 @@ Email Us
&nbsp;
</td></tr>
<tr><td bgcolor="#eecfa1">
-&copy; 1998-2002
+&copy; 1998-2003
Free Software Foundation, Inc. Verbatim copying and distribution of this
entire article is permitted in any medium, provided this notice is preserved.
diff --git a/admin/www/otherstuff.html b/admin/www/otherstuff.html
index 8c00a910..04c10a75 100644
--- a/admin/www/otherstuff.html
+++ b/admin/www/otherstuff.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Mon Mar 31 16:00:39 2003 -->
+<!-- Sat Apr 19 21:58:54 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
diff --git a/admin/www/prev.html b/admin/www/prev.html
index 1fa8d465..8a80c99f 100644
--- a/admin/www/prev.html
+++ b/admin/www/prev.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Thu Dec 26 22:30:24 2002 -->
+<!-- Sat Apr 19 21:58:54 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
@@ -80,7 +80,10 @@ Overview
<a href="features.html">Features</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
-<a href="otherstuff.html">Logos and Papers</a>
+<a href="i18n.html">Internationalization</a>
+</td></tr>
+<tr><td bgcolor="#eecfa1">
+<a href="otherstuff.html">Rants, Papers, and Logos</a>
</td></tr>
<tr><td bgcolor="#eecfa1">
<a href="inthenews.html">Mailman in Use</a>
@@ -116,7 +119,7 @@ Email Us
&nbsp;
</td></tr>
<tr><td bgcolor="#eecfa1">
-&copy; 1998-2002
+&copy; 1998-2003
Free Software Foundation, Inc. Verbatim copying and distribution of this
entire article is permitted in any medium, provided this notice is preserved.
diff --git a/admin/www/requirements.html b/admin/www/requirements.html
index bc8b1877..d577fd8f 100644
--- a/admin/www/requirements.html
+++ b/admin/www/requirements.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Mon Mar 31 16:00:39 2003 -->
+<!-- Sat Apr 19 21:58:54 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
diff --git a/admin/www/site.html b/admin/www/site.html
index 09dab8c3..28157b2c 100644
--- a/admin/www/site.html
+++ b/admin/www/site.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Mon Mar 31 16:00:39 2003 -->
+<!-- Sat Apr 19 21:58:54 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
diff --git a/admin/www/todo.ht b/admin/www/todo.ht
index 2b3ef684..ed97d9e9 100644
--- a/admin/www/todo.ht
+++ b/admin/www/todo.ht
@@ -4,7 +4,7 @@ Title: The Mailman Wishlist
<h3> The Mailman Wishlist
</h3>
<p>
-<h3> (Last Update: $Date: 2003-03-31 22:01:24 +0100 (Mon, 31 Mar 2003) $)
+<h3> (Last Update: $Date: 2003-04-20 05:02:13 +0100 (Sun, 20 Apr 2003) $)
</h3>
Here's the wish list for future versions of Mailman. Many new
features have been added to Mailman 2.1, and it is currently
diff --git a/admin/www/todo.html b/admin/www/todo.html
index 0e6552c4..45a28d88 100644
--- a/admin/www/todo.html
+++ b/admin/www/todo.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Sat Apr 19 20:55:59 2003 -->
+<!-- Sat Apr 19 21:58:55 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
@@ -135,7 +135,7 @@ entire article is permitted in any medium, provided this notice is preserved.
<h3> The Mailman Wishlist
</h3>
<p>
-<h3> (Last Update: $Date: 2003-04-20 01:56:02 +0100 (Sun, 20 Apr 2003) $)
+<h3> (Last Update: $Date: 2003-04-20 05:02:13 +0100 (Sun, 20 Apr 2003) $)
</h3>
Here's the wish list for future versions of Mailman. Many new
features have been added to Mailman 2.1, and it is currently
diff --git a/admin/www/users.html b/admin/www/users.html
index f5eafc75..eb4689e1 100644
--- a/admin/www/users.html
+++ b/admin/www/users.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Mon Mar 31 16:00:40 2003 -->
+<!-- Sat Apr 19 21:58:54 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
diff --git a/admin/www/version.html b/admin/www/version.html
index b2ed8555..4f45c5b4 100644
--- a/admin/www/version.html
+++ b/admin/www/version.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. -->
-<!-- Sat Apr 19 20:55:59 2003 -->
+<!-- Sat Apr 19 21:58:55 2003 -->
<!-- USING HT2HTML 2.0 -->
<!-- SEE http://ht2html.sf.net -->
<!-- User-specified headers:
diff --git a/bin/add_members b/bin/add_members
index 92b3ca04..1e50b941 100755
--- a/bin/add_members
+++ b/bin/add_members
@@ -41,11 +41,6 @@ Options:
-d file
Similar to above, but these people become digest members.
- --changes-msg=<y|n>
- -c <y|n>
- Set whether or not to send the list members the `there's going to be
- big changes to your list' message. defaults to no.
-
--welcome-msg=<y|n>
-w <y|n>
Set whether or not to send the list members a welcome message,
@@ -116,31 +111,6 @@ def readfile(filename):
-def SendExplanation(mlist, users):
- listname = mlist.real_name
- listhost = mlist.host_name
- d = {'listname' : listname,
- 'listhost' : listhost,
- 'listaddr' : mlist.GetListEmail(),
- 'listinfo_url': mlist.GetScriptURL('listinfo', absolute=1),
- 'requestaddr' : mlist.GetRequestEmail(),
- 'adminaddr' : mlist.GetOwnerEmail(),
- 'version' : mm_cfg.VERSION,
- }
- otrans = i18n.get_translation()
- i18n.set_language(mlist.preferred_language)
- try:
- text = Utils.maketext('convert.txt', d)
- subject = _('Big change in %(listname)s@%(listhost)s mailing list')
- msg = Message.UserNotification(users, mlist.GetBouncesEmail(),
- subject, text,
- mlist.preferred_language)
- finally:
- i18n.set_translation(otrans)
- msg.send(mlist)
-
-
-
class Tee:
def __init__(self, outfp):
self.__outfp = outfp
@@ -180,12 +150,11 @@ def addall(mlist, members, digest, ack, outfp):
def main():
try:
opts, args = getopt.getopt(sys.argv[1:],
- 'a:n:r:d:c:w:h',
+ 'a:n:r:d:w:h',
['admin-notify=',
'regular-members-file=',
'non-digest-members-file=',
'digest-members-file=',
- 'changes-msg=',
'welcome-msg=',
'help'])
except getopt.error, msg:
@@ -197,7 +166,6 @@ def main():
listname = args[0].lower().strip()
nfile = None
dfile = None
- send_changes_msg = 0
send_welcome_msg = None
admin_notif = None
for opt, arg in opts:
@@ -214,13 +182,6 @@ def main():
# I don't think we need to use the warnings module here.
print >> sys.stderr, 'option', opt, \
'is deprecated, use -r/--regular-members-file'
- elif opt in ('-c', '--changes-msg'):
- if arg.lower()[0] == 'y':
- send_changes_msg = 1
- elif arg.lower()[0] == 'n':
- send_changes_msg = 0
- else:
- usage(1, _('Bad argument to -c/--changes-msg: %(arg)s'))
elif opt in ('-w', '--welcome-msg'):
if arg.lower()[0] == 'y':
send_welcome_msg = 1
@@ -284,9 +245,6 @@ def main():
mlist.preferred_language)
msg.send(mlist)
- if send_changes_msg:
- SendExplanation(mlist, nmembers + dmembers)
-
mlist.Save()
finally:
mlist.Unlock()
diff --git a/bin/rmlist b/bin/rmlist
index 6ff0b5c1..2a7cd969 100755
--- a/bin/rmlist
+++ b/bin/rmlist
@@ -1,19 +1,19 @@
#! @PYTHON@
#
-# Copyright (C) 1998,1999,2000,2001,2002 by the Free Software Foundation, Inc.
+# Copyright (C) 1998-2003 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
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
-#
+#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-#
+#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
+# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
"""Remove the components of a mailing list with impunity - beware!
@@ -47,6 +47,12 @@ from Mailman import Utils
from Mailman import MailList
from Mailman.i18n import _
+try:
+ True, False
+except NameError:
+ True = 1
+ False = 0
+
def usage(code, msg=''):
@@ -61,15 +67,17 @@ def usage(code, msg=''):
-def remove_it(listname, dir, msg):
- if os.path.islink(dir):
+def remove_it(listname, filename, msg):
+ if os.path.islink(filename):
print _('Removing %(msg)s')
- os.unlink(dir)
- elif os.path.isdir(dir):
+ os.unlink(filename)
+ elif os.path.isdir(filename):
print _('Removing %(msg)s')
- shutil.rmtree(dir)
+ shutil.rmtree(filename)
+ elif os.path.isfile(filename):
+ os.unlink(filename)
else:
- print _('%(listname)s %(msg)s not found as %(dir)s')
+ print _('%(listname)s %(msg)s not found as %(filename)s')
@@ -84,18 +92,18 @@ def main():
usage(1)
listname = args[0].lower().strip()
- removeArchives = 0
+ removeArchives = False
for opt, arg in opts:
if opt in ('-a', '--archives'):
- removeArchives = 1
+ removeArchives = True
elif opt in ('-h', '--help'):
usage(0)
if not Utils.list_exists(listname):
- if not removeArchives:
- usage(1, _('No such list (or list already deleted): %(listname)s'))
- else:
- print _(
+ if not removeArchives:
+ usage(1, _('No such list (or list already deleted): %(listname)s'))
+ else:
+ print _(
'No such list: %(listname)s. Removing its residual archives.')
if not removeArchives:
@@ -104,27 +112,34 @@ def main():
REMOVABLES = []
if Utils.list_exists(listname):
- mlist = MailList.MailList(listname, lock=0)
+ mlist = MailList.MailList(listname, lock=0)
- # Do the MTA-specific list deletion tasks
- if mm_cfg.MTA:
- modname = 'Mailman.MTA.' + mm_cfg.MTA
- __import__(modname)
- sys.modules[modname].remove(mlist)
+ # Do the MTA-specific list deletion tasks
+ if mm_cfg.MTA:
+ modname = 'Mailman.MTA.' + mm_cfg.MTA
+ __import__(modname)
+ sys.modules[modname].remove(mlist)
- REMOVABLES = [
- (os.path.join('lists', listname), _('list info')),
+ REMOVABLES = [
+ (os.path.join('lists', listname), _('list info')),
]
+ # Remove any stale locks associated with the list
+ for filename in os.listdir(mm_cfg.LOCK_DIR):
+ fn_listname = filename.split('.')[0]
+ if fn_listname == listname:
+ REMOVABLES.append((os.path.join(mm_cfg.LOCK_DIR, filename),
+ _('stale lock file')))
+
if removeArchives:
REMOVABLES.extend([
- (os.path.join('archives', 'private', listname),
+ (os.path.join('archives', 'private', listname),
_('private archives')),
- (os.path.join('archives', 'private', listname + '.mbox'),
+ (os.path.join('archives', 'private', listname + '.mbox'),
_('private archives')),
- (os.path.join('archives', 'public', listname),
+ (os.path.join('archives', 'public', listname),
_('public archives')),
- (os.path.join('archives', 'public', listname + '.mbox'),
+ (os.path.join('archives', 'public', listname + '.mbox'),
_('public archives')),
])
diff --git a/cron/checkdbs b/cron/checkdbs
index ae194970..39b12095 100755
--- a/cron/checkdbs
+++ b/cron/checkdbs
@@ -140,6 +140,7 @@ def pending_requests(mlist):
info = mlist.GetRecord(id)
when, sender, subject, reason, text, msgdata = mlist.GetRecord(id)
date = time.ctime(when)
+ reason = _(reason)
pending.append(_("""\
From: %(sender)s on %(date)s
Subject: %(subject)s