aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Mailman/Archiver/pipermail.py26
-rw-r--r--Mailman/Cgi/admindb.py7
-rwxr-xr-xMailman/Defaults.py.in22
-rw-r--r--Mailman/Handlers/Hold.py9
-rw-r--r--Mailman/Handlers/SMTPDirect.py33
-rw-r--r--Mailman/MTA/Postfix.py11
-rw-r--r--Mailman/Queue/CommandRunner.py3
-rw-r--r--Mailman/Queue/NewsRunner.py26
-rw-r--r--Mailman/Utils.py26
-rw-r--r--Mailman/Version.py4
-rw-r--r--NEWS64
-rw-r--r--doc/mailman-install.dvibin107064 -> 107084 bytes
-rw-r--r--doc/mailman-install.pdfbin189367 -> 189385 bytes
-rw-r--r--doc/mailman-install.ps17
-rw-r--r--doc/mailman-install.txt8
-rw-r--r--doc/mailman-install/about.html4
-rw-r--r--doc/mailman-install/bsd-issues.html2
-rw-r--r--doc/mailman-install/building.html2
-rw-r--r--doc/mailman-install/create-install-dir.html2
-rw-r--r--doc/mailman-install/customizing.html2
-rw-r--r--doc/mailman-install/exim3-transport.html2
-rw-r--r--doc/mailman-install/front.html2
-rw-r--r--doc/mailman-install/index.html4
-rw-r--r--doc/mailman-install/internals.pl40
-rw-r--r--doc/mailman-install/labels.pl72
-rw-r--r--doc/mailman-install/mail-server.html2
-rw-r--r--doc/mailman-install/mailman-install.html4
-rw-r--r--doc/mailman-install/node10.html2
-rw-r--r--doc/mailman-install/node12.html4
-rw-r--r--doc/mailman-install/node15.html2
-rw-r--r--doc/mailman-install/node16.html2
-rw-r--r--doc/mailman-install/node17.html2
-rw-r--r--doc/mailman-install/node18.html2
-rw-r--r--doc/mailman-install/node2.html2
-rw-r--r--doc/mailman-install/node20.html2
-rw-r--r--doc/mailman-install/node21.html2
-rw-r--r--doc/mailman-install/node22.html2
-rw-r--r--doc/mailman-install/node23.html2
-rw-r--r--doc/mailman-install/node24.html2
-rw-r--r--doc/mailman-install/node25.html2
-rw-r--r--doc/mailman-install/node26.html2
-rw-r--r--doc/mailman-install/node27.html2
-rw-r--r--doc/mailman-install/node28.html2
-rw-r--r--doc/mailman-install/node29.html2
-rw-r--r--doc/mailman-install/node3.html2
-rw-r--r--doc/mailman-install/node30.html2
-rw-r--r--doc/mailman-install/node31.html2
-rw-r--r--doc/mailman-install/node32.html2
-rw-r--r--doc/mailman-install/node33.html2
-rw-r--r--doc/mailman-install/node34.html2
-rw-r--r--doc/mailman-install/node36.html2
-rw-r--r--doc/mailman-install/node37.html2
-rw-r--r--doc/mailman-install/node38.html2
-rw-r--r--doc/mailman-install/node4.html2
-rw-r--r--doc/mailman-install/node41.html2
-rw-r--r--doc/mailman-install/node42.html2
-rw-r--r--doc/mailman-install/node43.html2
-rw-r--r--doc/mailman-install/node44.html2
-rw-r--r--doc/mailman-install/node45.html2
-rw-r--r--doc/mailman-install/node47.html2
-rw-r--r--doc/mailman-install/node48.html2
-rw-r--r--doc/mailman-install/node50.html2
-rw-r--r--doc/mailman-install/node7.html2
-rw-r--r--doc/mailman-install/node8.html2
-rw-r--r--doc/mailman-install/node9.html2
-rw-r--r--doc/mailman-install/postfix-integration.html2
-rw-r--r--doc/mailman-install/postfix-virtual.html2
-rw-r--r--doc/mailman-install/qmail-issues.html2
-rw-r--r--doc/mailman-install/site-list.html2
-rw-r--r--doc/mailman-install/troubleshooting.html2
-rw-r--r--[-rwxr-xr-x]messages/pt_BR/LC_MESSAGES/mailman.po159
-rwxr-xr-xtemplates/de/options.html2
72 files changed, 425 insertions, 218 deletions
diff --git a/Mailman/Archiver/pipermail.py b/Mailman/Archiver/pipermail.py
index 9c54bbd9..c03d43b3 100644
--- a/Mailman/Archiver/pipermail.py
+++ b/Mailman/Archiver/pipermail.py
@@ -16,6 +16,7 @@ __version__ = '0.09 (Mailman edition)'
VERSION = __version__
CACHESIZE = 100 # Number of slots in the cache
+from Mailman import mm_cfg
from Mailman import Errors
from Mailman.Mailbox import ArchiverMailbox
from Mailman.Logging.Syslog import syslog
@@ -230,21 +231,30 @@ class Article:
self.body = s.readlines()
def _set_date(self, message):
- def floatdate(header):
- missing = []
- datestr = message.get(header, missing)
- if datestr is missing:
+ def floatdate(datestr):
+ if not datestr:
return None
date = parsedate_tz(datestr)
try:
- return mktime_tz(date)
+ date = mktime_tz(date)
+ if (date < 0 or
+ date - time.time() >
+ mm_cfg.ARCHIVER_ALLOWABLE_SANE_DATE_SKEW
+ ):
+ return None
+ return date
except (TypeError, ValueError, OverflowError):
return None
- date = floatdate('date')
+ date = floatdate(message.get('date'))
+ if date is None:
+ date = floatdate(message.get('x-list-received-date'))
+ if date is None:
+ date = floatdate(re.sub(r'^.*;\s*', '',
+ message.get('received', ''), flags=re.S))
if date is None:
- date = floatdate('x-list-received-date')
+ date = floatdate(re.sub(r'From \s*\S+\s+', '',
+ message.get_unixfrom() or '' ))
if date is None:
- # What's left to try?
date = self._last_article_time + 1
self._last_article_time = date
self.date = '%011i' % date
diff --git a/Mailman/Cgi/admindb.py b/Mailman/Cgi/admindb.py
index af3f46d1..2cc348e6 100644
--- a/Mailman/Cgi/admindb.py
+++ b/Mailman/Cgi/admindb.py
@@ -1,4 +1,4 @@
-# Copyright (C) 1998-2014 by the Free Software Foundation, Inc.
+# Copyright (C) 1998-2016 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
@@ -213,9 +213,10 @@ def main():
doc.AddItem(Link(admindburl,
_('Click here to reload this page.')))
# Put 'Logout' link before the footer
+ doc.AddItem('\n<div align="right"><font size="+2">')
doc.AddItem(Link('%s/logout' % admindburl,
- '<div align="right"><font size="+2"><b>%s</b></font></div>' %
- _('Logout')))
+ '<b>%s</b>' % _('Logout')))
+ doc.AddItem('</font></div>\n')
doc.AddItem(mlist.GetMailmanFooter())
print doc.Format()
mlist.Save()
diff --git a/Mailman/Defaults.py.in b/Mailman/Defaults.py.in
index 04d7db8a..3569cc07 100755
--- a/Mailman/Defaults.py.in
+++ b/Mailman/Defaults.py.in
@@ -469,6 +469,12 @@ PUBLIC_MBOX = No
#DELIVERY_MODULE = 'Sendmail'
DELIVERY_MODULE = 'SMTPDirect'
+# Sometimes there are 'low level' smtplib failures that are difficult to
+# debug. To enable very verbose debugging info from smtplib to Mailman's
+# error log, set the following to 1. This will only work if
+# DELIVERY_MODULE = 'SMTPDirect' and Python is >= 2.4.
+SMTPLIB_DEBUG_LEVEL = 0
+
# MTA should name a module in Mailman/MTA which provides the MTA specific
# functionality for creating and removing lists. Some MTAs like Exim can be
# configured to automatically recognize new lists, in which case the MTA
@@ -556,6 +562,22 @@ SMTPPORT = 0 # default from smtplib
# when DELIVERY_MODULE is 'Sendmail'.
SENDMAIL_CMD = '/usr/lib/sendmail'
+# SMTP authentication for DELIVERY_MODULE = 'SMTPDirect'. To enable SASL
+# authentication for SMTPDirect, set SMTP_AUTH = Yes and provide appropriate
+# settings for SMTP_USER and SMTP_PASSWD.
+SMTP_AUTH = No
+SMTP_USER = ''
+SMTP_PASSWD = ''
+
+# If using SASL authentication (SMTP_AUTH = Yes), set the following to Yes
+# to also use TLS. This has no effect if SMTP_AUTH = No.
+SMTP_USE_TLS = No
+
+# When using TLS the following should be set to the hostname that should be
+# used in order to identify Mailman to the SMTP server. By default, it
+# uses DEFAULT_URL_HOST. Normally, you should not change this.
+SMTP_HELO_HOST = DEFAULT_URL_HOST
+
# Set these variables if you need to authenticate to your NNTP server for
# Usenet posting or reading. If no authentication is necessary, specify None
# for both variables.
diff --git a/Mailman/Handlers/Hold.py b/Mailman/Handlers/Hold.py
index 5452d06a..2faebae1 100644
--- a/Mailman/Handlers/Hold.py
+++ b/Mailman/Handlers/Hold.py
@@ -1,4 +1,4 @@
-# Copyright (C) 1998-2011 by the Free Software Foundation, Inc.
+# Copyright (C) 1998-2016 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
@@ -220,7 +220,12 @@ def hold_for_approval(mlist, msg, msgdata, exc):
# We need to send both the reason and the rejection notice through the
# translator again, because of the games we play above
reason = Utils.wrap(exc.reason_notice())
- msgdata['rejection_notice'] = Utils.wrap(exc.rejection_notice(mlist))
+ if isinstance(exc, NonMemberPost) and mlist.nonmember_rejection_notice:
+ msgdata['rejection_notice'] = Utils.wrap(
+ mlist.nonmember_rejection_notice.replace(
+ '%(listowner)s', owneraddr))
+ else:
+ msgdata['rejection_notice'] = Utils.wrap(exc.rejection_notice(mlist))
id = mlist.HoldMessage(msg, reason, msgdata)
# Now we need to craft and send a message to the list admin so they can
# deal with the held message.
diff --git a/Mailman/Handlers/SMTPDirect.py b/Mailman/Handlers/SMTPDirect.py
index 1d11d19a..3b489c2f 100644
--- a/Mailman/Handlers/SMTPDirect.py
+++ b/Mailman/Handlers/SMTPDirect.py
@@ -1,4 +1,4 @@
-# Copyright (C) 1998-2011 by the Free Software Foundation, Inc.
+# Copyright (C) 1998-2016 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
@@ -61,7 +61,38 @@ class Connection:
def __connect(self):
self.__conn = smtplib.SMTP()
+ self.__conn.set_debuglevel(mm_cfg.SMTPLIB_DEBUG_LEVEL)
self.__conn.connect(mm_cfg.SMTPHOST, mm_cfg.SMTPPORT)
+ if mm_cfg.SMTP_AUTH:
+ if mm_cfg.SMTP_USE_TLS:
+ try:
+ self.__conn.starttls()
+ except SMTPException, e:
+ syslog('smtp-failure', 'SMTP TLS error: %s', e)
+ self.quit()
+ raise
+ try:
+ self.__conn.ehlo(mm_cfg.SMTP_HELO_HOST)
+ except SMTPException, e:
+ syslog('smtp-failure', 'SMTP EHLO error: %s', e)
+ self.quit()
+ raise
+ try:
+ self.__conn.login(mm_cfg.SMTP_USER, mm_cfg.SMTP_PASSWD)
+ except smtplib.SMTPHeloError, e:
+ syslog('smtp-failure', 'SMTP HELO error: %s', e)
+ self.quit()
+ raise
+ except smtplib.SMTPAuthenticationError, e:
+ syslog('smtp-failure', 'SMTP AUTH error: %s', e)
+ self.quit()
+ raise
+ except smtplib.SMTPException, e:
+ syslog('smtp-failure',
+ 'SMTP - no suitable authentication method found: %s', e)
+ self.quit()
+ raise
+
self.__numsessions = mm_cfg.SMTP_MAX_SESSIONS_PER_CONNECTION
def sendmail(self, envsender, recips, msgtext):
diff --git a/Mailman/MTA/Postfix.py b/Mailman/MTA/Postfix.py
index 8860459e..d18d850b 100644
--- a/Mailman/MTA/Postfix.py
+++ b/Mailman/MTA/Postfix.py
@@ -28,6 +28,7 @@ from Mailman import mm_cfg
from Mailman import Utils
from Mailman import LockFile
from Mailman.i18n import C_
+from Mailman.MailList import MailList
from Mailman.MTA.Utils import makealiases
from Mailman.Logging.Syslog import syslog
@@ -132,6 +133,11 @@ def _addvirtual(mlist, fp):
sitedest = Utils.ParseEmail(siteaddr)[0]
if mm_cfg.VIRTUAL_MAILMAN_LOCAL_DOMAIN:
loopdest += '@' + mm_cfg.VIRTUAL_MAILMAN_LOCAL_DOMAIN
+ sitedest += '@' + mm_cfg.VIRTUAL_MAILMAN_LOCAL_DOMAIN
+ # If the site list's host_name is a virtual domain, adding it to the
+ # SITE ADDRESSES will duplicate the list posting entry, so comment it.
+ if _isvirtual(MailList(mm_cfg.MAILMAN_SITE_LIST, lock=False)):
+ siteaddr = '#' + siteaddr
# Seek to the end of the text file, but if it's empty write the standard
# disclaimer, and the loop catch address and site address.
fp.seek(0, 2)
@@ -179,6 +185,9 @@ def _check_for_virtual_loopaddr(mlist, filename):
loopdest = Utils.ParseEmail(loopaddr)[0]
siteaddr = Utils.get_site_email(mlist.host_name)
sitedest = Utils.ParseEmail(siteaddr)[0]
+ if mm_cfg.VIRTUAL_MAILMAN_LOCAL_DOMAIN:
+ loopdest += '@' + mm_cfg.VIRTUAL_MAILMAN_LOCAL_DOMAIN
+ sitedest += '@' + mm_cfg.VIRTUAL_MAILMAN_LOCAL_DOMAIN
infp = open(filename)
omask = os.umask(007)
try:
@@ -230,7 +239,7 @@ def _check_for_virtual_loopaddr(mlist, filename):
print >> outfp, '%s\t%s' % (siteaddr, sitedest)
outfp.write(line)
break
- elif line.startswith(siteaddr):
+ elif line.startswith(siteaddr) or line.startswith('#' + siteaddr):
# We just found it
outfp.write(line)
break
diff --git a/Mailman/Queue/CommandRunner.py b/Mailman/Queue/CommandRunner.py
index c5cc3d94..a9f6f000 100644
--- a/Mailman/Queue/CommandRunner.py
+++ b/Mailman/Queue/CommandRunner.py
@@ -134,7 +134,8 @@ class Results:
handler = sys.modules[modname]
# ValueError can be raised if cmd has dots in it.
# and KeyError if cmd is otherwise good but ends with a dot.
- except (ImportError, ValueError, KeyError):
+ # and TypeError if cmd has a null byte.
+ except (ImportError, ValueError, KeyError, TypeError):
# If we're on line zero, it was the Subject: header that didn't
# contain a command. It's possible there's a Re: prefix (or
# localized version thereof) on the Subject: line that's messing
diff --git a/Mailman/Queue/NewsRunner.py b/Mailman/Queue/NewsRunner.py
index 449532fb..fe693f28 100644
--- a/Mailman/Queue/NewsRunner.py
+++ b/Mailman/Queue/NewsRunner.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2000-2015 by the Free Software Foundation, Inc.
+# Copyright (C) 2000-2016 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
@@ -12,7 +12,8 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+# USA.
"""NNTP queue runner."""
@@ -109,7 +110,11 @@ def prepare_message(mlist, msg, msgdata):
or msgdata.get('origsubj')
if not mlist.news_prefix_subject_too and stripped_subject is not None:
del msg['subject']
- msg['subject'] = stripped_subject
+ msg['Subject'] = stripped_subject
+ # Make sure we have a non-blank subject.
+ if not msg.get('subject', ''):
+ del msg['subject']
+ msg['Subject'] = '(no subject)'
# Add the appropriate Newsgroups: header
if msg['newsgroups'] is not None:
# This message is gated from our list to it's associated usnet group.
@@ -125,6 +130,9 @@ def prepare_message(mlist, msg, msgdata):
# isn't ours with one of ours, so we need to parse it to be sure we're not
# looping.
#
+ # We also add the original Message-ID: to References: to try to help with
+ # threading issues and create another header for documentation.
+ #
# Our Message-ID format is <mailman.secs.pid.listname@hostname>
msgid = msg['message-id']
hackmsgid = True
@@ -137,6 +145,18 @@ def prepare_message(mlist, msg, msgdata):
if hackmsgid:
del msg['message-id']
msg['Message-ID'] = Utils.unique_message_id(mlist)
+ if msgid:
+ msg['X-Mailman-Original-Message-ID'] = msgid
+ refs = msg['references']
+ del msg['references']
+ if not refs:
+ refs = msg.get('in-reply-to', '')
+ else:
+ msg['X-Mailman-Original-References'] = refs
+ if refs:
+ msg['References'] = '\n '.join([refs, msgid])
+ else:
+ msg['References'] = msgid
# Lines: is useful
if msg['Lines'] is None:
# BAW: is there a better way?
diff --git a/Mailman/Utils.py b/Mailman/Utils.py
index f821f13a..2dbaef0b 100644
--- a/Mailman/Utils.py
+++ b/Mailman/Utils.py
@@ -1170,6 +1170,8 @@ def get_suffixes(url):
global s_dict
if s_dict:
return
+ if not url:
+ return
try:
d = urllib2.urlopen(url)
except urllib2.URLError, e:
@@ -1241,7 +1243,8 @@ def IsDMARCProhibited(mlist, email):
return False
email = email.lower()
- at_sign = email.find('@')
+ # Scan from the right in case quoted local part has an '@'.
+ at_sign = email.rfind('@')
if at_sign < 1:
return False
f_dom = email[at_sign+1:]
@@ -1250,12 +1253,12 @@ def IsDMARCProhibited(mlist, email):
return x
o_dom = get_org_dom(f_dom)
if o_dom != f_dom:
- x = _DMARCProhibited(mlist, email, '_dmarc.' + o_dom)
+ x = _DMARCProhibited(mlist, email, '_dmarc.' + o_dom, org=True)
if x != 'continue':
return x
return False
-def _DMARCProhibited(mlist, email, dmarc_domain):
+def _DMARCProhibited(mlist, email, dmarc_domain, org=False):
try:
resolver = dns.resolver.Resolver()
@@ -1267,7 +1270,7 @@ def _DMARCProhibited(mlist, email, dmarc_domain):
except DNSException, e:
syslog('error',
'DNSException: Unable to query DMARC policy for %s (%s). %s',
- email, dmarc_domain, e.__class__)
+ email, dmarc_domain, e.__doc__)
return 'continue'
else:
# people are already being dumb, don't trust them to provide honest DNS
@@ -1315,14 +1318,23 @@ def _DMARCProhibited(mlist, email, dmarc_domain):
testing them all""",
dmarc_domain, len(dmarc))
for entry in dmarcs:
- if re.search(r'\bp=reject\b', entry, re.IGNORECASE):
+ mo = re.search(r'\bsp=(\w*)\b', entry, re.IGNORECASE)
+ if org and mo:
+ policy = mo.group(1).lower()
+ else:
+ mo = re.search(r'\bp=(\w*)\b', entry, re.IGNORECASE)
+ if mo:
+ policy = mo.group(1).lower()
+ else:
+ continue
+ if policy == 'reject':
syslog('vette',
'%s: DMARC lookup for %s (%s) found p=reject in %s = %s',
mlist.real_name, email, dmarc_domain, name, entry)
return True
if (mlist.dmarc_quarantine_moderation_action and
- re.search(r'\bp=quarantine\b', entry, re.IGNORECASE)):
+ policy == 'quarantine'):
syslog('vette',
'%s: DMARC lookup for %s (%s) found p=quarantine in %s = %s',
mlist.real_name, email, dmarc_domain, name, entry)
@@ -1331,7 +1343,7 @@ def _DMARCProhibited(mlist, email, dmarc_domain):
if (mlist.dmarc_none_moderation_action and
mlist.dmarc_quarantine_moderation_action and
mlist.dmarc_moderation_action in (1, 2) and
- re.search(r'\bp=none\b', entry, re.IGNORECASE)):
+ policy == 'none'):
syslog('vette',
'%s: DMARC lookup for %s (%s) found p=none in %s = %s',
mlist.real_name, email, dmarc_domain, name, entry)
diff --git a/Mailman/Version.py b/Mailman/Version.py
index 132648a8..413ac531 100644
--- a/Mailman/Version.py
+++ b/Mailman/Version.py
@@ -16,7 +16,7 @@
# USA.
# Mailman version
-VERSION = '2.1.21'
+VERSION = '2.1.22'
# And as a hex number in the manner of PY_VERSION_HEX
ALPHA = 0xa
@@ -28,7 +28,7 @@ FINAL = 0xf
MAJOR_REV = 2
MINOR_REV = 1
-MICRO_REV = 21
+MICRO_REV = 22
REL_LEVEL = FINAL
# at most 15 beta releases!
REL_SERIAL = 0
diff --git a/NEWS b/NEWS
index b4549610..c6660b9f 100644
--- a/NEWS
+++ b/NEWS
@@ -5,10 +5,72 @@ Copyright (C) 1998-2016 by the Free Software Foundation, Inc.
Here is a history of user visible changes to Mailman.
-2.1.22 (xx-xxx-xxxx)
+2.1.2 (xx-xxx-xxxx)
+
+ New Features
+
+ - SMTPDirect.py can now do SASL authentication and STARTTLS security when
+ connecting to the outgoiung MTA. Associated with this are new
+ Defaults.py/mm_cfg.py settings SMTP_AUTH, SMTP_USER, SMTP_PASSWD and
+ SMTP_USE_TLS. (LP: #558281)
+
+ - There is a new Defaults.py/mm_cfg.py setting SMTPLIB_DEBUG_LEVEL which
+ can be set to 1 to enable verbose smtplib debugging to Mailman's error
+ log to help with debugging 'low level smtp failures'. (LP: # 1573074)
+
+ - A list's nonmember_rejection_notice attribute will now be the default
+ rejection reason for a held non-member post in addition to it's prior
+ role as the reson for an automatically rejected non-member post.
+ (LP: #1572330)
Bug fixes and other patches
+ - A site can now set DMARC_ORGANIZATIONAL_DOMAIN_DATA_URL to None or the
+ null string if it wants to avoid using this. (LP: #1578450)
+
+ - The white space to the left of the admindb Logout link is no longer
+ part of the link. (LP: #1573623)
+
+2.1.22 (17-Apr-2016)
+
+ i18n
+
+ - Fixed a typo in the German options.html template. (LP: #1562408)
+
+ - An error in the Brazilian Portugese translation of Quarterly has been
+ fixed thanks to Kleber A. Benatti.
+
+ - The Brazilian Portugese translation has been updated by Emerson Ribeiro
+ de Mello.
+
+ Bug fixes and other patches
+
+ - All addresses in data/virtual-mailman are now properly appended with
+ VIRTUAL_MAILMAN_LOCAL_DOMAIN and duplicates are not generated if the
+ site list is in a virtual domain. (LP: #1570630)
+
+ - DMARC mitigations will now find the From: domain to the right of the
+ rightmost '@' rather than the leftmost '@'. (LP: #1568445)
+
+ - DMARC mitigations for a sub-domain of an organizational domain will now
+ use the organizational domain's sp= policy if any. (LP: #1568398)
+
+ - Modified NewsRunner.py to ensure that messages gated to Usenet have a
+ non-blank Subject: header and when munging the Message-ID to add the
+ original to References: to help with threading. (LP: #557955)
+
+ - Fixed the pipermail archiver to do a better job of figuring the date of
+ a post when its Date: header is missing, unparseable or has an obviously
+ out of range date. This should only affect bin/arch as ArchRunner has
+ code to fix dates at least if ARCHIVER_CLOBBER_DATE_POLICY has not been
+ set to 0 in mm_cfg.py. If posts have been added in the past to a list's
+ archive using bin/arch and an imported mbox, running bin/arch again could
+ result is some of those posts being archived with a different date.
+ (LP: #1555798)
+
+ - Fixed an issue with CommandRunner shunting a malformed message with a
+ null byte in the body. (LP: #1553888)
+
- Don't collapse multipart with a single sub-part inside multipart/signed
parts. (LP: #1551075)
diff --git a/doc/mailman-install.dvi b/doc/mailman-install.dvi
index 14b11c52..b4d0cf5b 100644
--- a/doc/mailman-install.dvi
+++ b/doc/mailman-install.dvi
Binary files differ
diff --git a/doc/mailman-install.pdf b/doc/mailman-install.pdf
index cfa345e2..b77da992 100644
--- a/doc/mailman-install.pdf
+++ b/doc/mailman-install.pdf
Binary files differ
diff --git a/doc/mailman-install.ps b/doc/mailman-install.ps
index 6e4f64d3..defd38ce 100644
--- a/doc/mailman-install.ps
+++ b/doc/mailman-install.ps
@@ -1,7 +1,7 @@
%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.994 Copyright 2014 Radical Eye Software
+%%Creator: dvips(k) 5.995 Copyright 2015 Radical Eye Software
%%Title: mailman-install.dvi
-%%CreationDate: Sat Mar 7 19:22:32 2015
+%%CreationDate: Thu Apr 14 09:35:12 2016
%%Pages: 28
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
@@ -13,7 +13,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -N0 -o mailman-install.ps mailman-install
%DVIPSParameters: dpi=600
-%DVIPSSource: TeX output 2015.03.07:1922
+%DVIPSSource: TeX output 2016.04.14:0935
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -3728,7 +3728,7 @@ ifelse
TeXDict begin 1 0 bop 0 83 3901 9 v 700 357 a Fz(GNU)57
b(Mailman)g(-)g(Installation)h(Man)n(ual)3368 504 y Fy(Release)30
b(2.1)3153 859 y Fx(Barr)t(y)i(W)-5 b(arsa)n(w)3413 1213
-y Fw(March)20 b(7,)g(2015)3229 1360 y Fv(barr)r(y)g(\(at\))g(list)g
+y Fw(April)20 b(14,)g(2016)3229 1360 y Fv(barr)r(y)g(\(at\))g(list)g
(dot)g(org)1811 1581 y Fu(Abstract)208 1732 y Ft(This)30
b(document)j(describes)f(ho)n(w)g(to)f(install)f(GNU)h(Mailman)h(on)f
(a)g(POSIX-based)g(system)h(such)g(as)h(U)t Fs(N)t(I)t(X)r
@@ -4273,10 +4273,11 @@ b(mail)i(ser)s(v)n(er)0 4732 y Fw(Mailman)22 b(should)f(w)o(ork)g
(pretty)h(much)f(out)h(of)g(the)g(box)f(with)i(a)f(standard)f
(Post\002x)i(installation.)30 b(It)23 b(has)f(been)g(tested)g(with)h(v)
n(arious)0 4831 y(Post\002x)d(v)o(ersions)g(up)f(to)i(and)e(including)g
-(Post\002x)h(2.1.5.)0 4978 y(In)e(order)g(to)g(support)g(Mailman')-5
-b(s)18 b(optional)f(VERP)i(deli)n(v)o(ery)-5 b(,)17 b(you)h(will)h(w)o
-(ant)g(to)f(disable)h Fl(luser_relay)e Fw(\(the)h(def)o(ault\))f(and)h
-(you)0 5078 y(will)i(w)o(ant)e(to)h(set)h Fl(recipient_delimiter)c
+(Post\002x)h(2.11.3)f(\(as)h(of)g(April)g(2016\).)0 4978
+y(In)e(order)g(to)g(support)g(Mailman')-5 b(s)18 b(optional)f(VERP)i
+(deli)n(v)o(ery)-5 b(,)17 b(you)h(will)h(w)o(ant)g(to)f(disable)h
+Fl(luser_relay)e Fw(\(the)h(def)o(ault\))f(and)h(you)0
+5078 y(will)i(w)o(ant)e(to)h(set)h Fl(recipient_delimiter)c
Fw(for)i(e)o(xtended)f(address)h(semantics.)25 b(Y)-9
b(ou)18 b(should)g(comment)f(out)h(an)o(y)g Fl(luser_-)0
5178 y(relay)i Fw(v)n(alue)f(in)i(your)e(`)p Fv(main.cf)p
diff --git a/doc/mailman-install.txt b/doc/mailman-install.txt
index ed845f01..50190500 100644
--- a/doc/mailman-install.txt
+++ b/doc/mailman-install.txt
@@ -11,7 +11,7 @@ GNU Mailman - Installation Manual
barry (at) list dot org
Release 2.1
- March 7, 2015
+ April 14, 2016
Front Matter
@@ -368,7 +368,7 @@ GNU Mailman - Installation Manual
Mailman should work pretty much out of the box with a standard Postfix
installation. It has been tested with various Postfix versions up to
- and including Postfix 2.1.5.
+ and including Postfix 2.11.3 (as of April 2016).
In order to support Mailman's optional VERP delivery, you will want to
disable luser_relay (the default) and you will want to set
@@ -1559,7 +1559,7 @@ tar xvf MailmanStartup.tar
About this document ...
- GNU Mailman - Installation Manual, March 7, 2015, Release 2.1
+ GNU Mailman - Installation Manual, April 14, 2016, Release 2.1
This document was generated using the LaTeX2HTML translator.
@@ -1613,4 +1613,4 @@ tar xvf MailmanStartup.tar
Previous Page Up one Level Next Page GNU Mailman - Installation Manual
__________________________________________________________________
- Release 2.1, documentation updated on March 7, 2015.
+ Release 2.1, documentation updated on April 14, 2016.
diff --git a/doc/mailman-install/about.html b/doc/mailman-install/about.html
index 91f5539f..474c7e2b 100644
--- a/doc/mailman-install/about.html
+++ b/doc/mailman-install/about.html
@@ -46,7 +46,7 @@
About this document ...</a>
</h1>
<strong>GNU Mailman - Installation Manual</strong>,
-March 7, 2015, Release 2.1
+April 14, 2016, Release 2.1
<p> This document was generated using the <a
href="http://saftsack.fs.uni-bayreuth.de/~latex2ht/">
<strong>LaTeX</strong>2<tt>HTML</tt></a> translator.
@@ -101,7 +101,7 @@ March 7, 2015, Release 2.1
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/bsd-issues.html b/doc/mailman-install/bsd-issues.html
index 77b9a8d5..8ad3eba2 100644
--- a/doc/mailman-install/bsd-issues.html
+++ b/doc/mailman-install/bsd-issues.html
@@ -106,7 +106,7 @@ This disables the <b class="program">chmod g+s</b> command on installed director
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/building.html b/doc/mailman-install/building.html
index dbd66965..443e5e92 100644
--- a/doc/mailman-install/building.html
+++ b/doc/mailman-install/building.html
@@ -98,7 +98,7 @@
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/create-install-dir.html b/doc/mailman-install/create-install-dir.html
index 54dc0768..2d0bd169 100644
--- a/doc/mailman-install/create-install-dir.html
+++ b/doc/mailman-install/create-install-dir.html
@@ -150,7 +150,7 @@ for additional information.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/customizing.html b/doc/mailman-install/customizing.html
index 5f553e76..525cc9af 100644
--- a/doc/mailman-install/customizing.html
+++ b/doc/mailman-install/customizing.html
@@ -123,7 +123,7 @@ line scripts, such as <b class="program">bin/withlist</b> and <b class="program"
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/exim3-transport.html b/doc/mailman-install/exim3-transport.html
index eb5f2db1..95f7fa32 100644
--- a/doc/mailman-install/exim3-transport.html
+++ b/doc/mailman-install/exim3-transport.html
@@ -105,7 +105,7 @@ i.e. somewhere between the first and second ``end'' line:
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/front.html b/doc/mailman-install/front.html
index 29140249..f3f77e16 100644
--- a/doc/mailman-install/front.html
+++ b/doc/mailman-install/front.html
@@ -174,7 +174,7 @@ The GNU Mailman website is at <a class="url" href="http://www.list.org">http://w
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/index.html b/doc/mailman-install/index.html
index e0d23480..34ace408 100644
--- a/doc/mailman-install/index.html
+++ b/doc/mailman-install/index.html
@@ -46,7 +46,7 @@
<p><b><font size="+2">Barry Warsaw</font></b></p>
<p><span class="email">barry (at) list dot org</span></p>
<p><strong>Release 2.1</strong><br />
-<strong>March 7, 2015</strong></p>
+<strong>April 14, 2016</strong></p>
<p></p>
</div>
</div>
@@ -127,7 +127,7 @@
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/internals.pl b/doc/mailman-install/internals.pl
index ef9582bf..5c7dd896 100644
--- a/doc/mailman-install/internals.pl
+++ b/doc/mailman-install/internals.pl
@@ -2,57 +2,57 @@
# Associate internals original text with physical files.
-$key = q/create-install-dir/;
-$ref_files{$key} = "$dir".q|node5.html|;
+$key = q/qmail-issues/;
+$ref_files{$key} = "$dir".q|node35.html|;
$noresave{$key} = "$nosave";
$key = q/exim3-transport/;
$ref_files{$key} = "$dir".q|node19.html|;
$noresave{$key} = "$nosave";
-$key = q/postfix-integration/;
-$ref_files{$key} = "$dir".q|node13.html|;
-$noresave{$key} = "$nosave";
-
$key = q/mail-server/;
$ref_files{$key} = "$dir".q|node11.html|;
$noresave{$key} = "$nosave";
-$key = q/front/;
-$ref_files{$key} = "$dir".q|node1.html|;
-$noresave{$key} = "$nosave";
-
-$key = q/postfix-virtual/;
-$ref_files{$key} = "$dir".q|node14.html|;
+$key = q/postfix-integration/;
+$ref_files{$key} = "$dir".q|node13.html|;
$noresave{$key} = "$nosave";
$key = q/about/;
$ref_files{$key} = "$dir".q|node51.html|;
$noresave{$key} = "$nosave";
-$key = q/bsd-issues/;
-$ref_files{$key} = "$dir".q|node49.html|;
+$key = q/building/;
+$ref_files{$key} = "$dir".q|node6.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/create-install-dir/;
+$ref_files{$key} = "$dir".q|node5.html|;
$noresave{$key} = "$nosave";
$key = q/customizing/;
$ref_files{$key} = "$dir".q|node39.html|;
$noresave{$key} = "$nosave";
-$key = q/troubleshooting/;
-$ref_files{$key} = "$dir".q|node46.html|;
+$key = q/postfix-virtual/;
+$ref_files{$key} = "$dir".q|node14.html|;
$noresave{$key} = "$nosave";
-$key = q/building/;
-$ref_files{$key} = "$dir".q|node6.html|;
+$key = q/front/;
+$ref_files{$key} = "$dir".q|node1.html|;
$noresave{$key} = "$nosave";
-$key = q/qmail-issues/;
-$ref_files{$key} = "$dir".q|node35.html|;
+$key = q/bsd-issues/;
+$ref_files{$key} = "$dir".q|node49.html|;
$noresave{$key} = "$nosave";
$key = q/site-list/;
$ref_files{$key} = "$dir".q|node40.html|;
$noresave{$key} = "$nosave";
+$key = q/troubleshooting/;
+$ref_files{$key} = "$dir".q|node46.html|;
+$noresave{$key} = "$nosave";
+
1;
diff --git a/doc/mailman-install/labels.pl b/doc/mailman-install/labels.pl
index 8c33581d..1fdfa7f5 100644
--- a/doc/mailman-install/labels.pl
+++ b/doc/mailman-install/labels.pl
@@ -2,42 +2,38 @@
# Associate labels original text with physical files.
+$key = q/qmail-issues/;
+$external_labels{$key} = "$URL/" . q|node35.html|;
+$noresave{$key} = "$nosave";
+
$key = q/mail-server/;
$external_labels{$key} = "$URL/" . q|node11.html|;
$noresave{$key} = "$nosave";
-$key = q/front/;
-$external_labels{$key} = "$URL/" . q|node1.html|;
+$key = q/exim3-transport/;
+$external_labels{$key} = "$URL/" . q|node19.html|;
$noresave{$key} = "$nosave";
$key = q/building/;
$external_labels{$key} = "$URL/" . q|node6.html|;
$noresave{$key} = "$nosave";
-$key = q/exim3-transport/;
-$external_labels{$key} = "$URL/" . q|node19.html|;
+$key = q/postfix-integration/;
+$external_labels{$key} = "$URL/" . q|node13.html|;
$noresave{$key} = "$nosave";
$key = q/about/;
$external_labels{$key} = "$URL/" . q|node51.html|;
$noresave{$key} = "$nosave";
-$key = q/postfix-virtual/;
-$external_labels{$key} = "$URL/" . q|node14.html|;
+$key = q/front/;
+$external_labels{$key} = "$URL/" . q|node1.html|;
$noresave{$key} = "$nosave";
$key = q/bsd-issues/;
$external_labels{$key} = "$URL/" . q|node49.html|;
$noresave{$key} = "$nosave";
-$key = q/postfix-integration/;
-$external_labels{$key} = "$URL/" . q|node13.html|;
-$noresave{$key} = "$nosave";
-
-$key = q/troubleshooting/;
-$external_labels{$key} = "$URL/" . q|node46.html|;
-$noresave{$key} = "$nosave";
-
$key = q/customizing/;
$external_labels{$key} = "$URL/" . q|node39.html|;
$noresave{$key} = "$nosave";
@@ -46,12 +42,16 @@ $key = q/create-install-dir/;
$external_labels{$key} = "$URL/" . q|node5.html|;
$noresave{$key} = "$nosave";
-$key = q/site-list/;
-$external_labels{$key} = "$URL/" . q|node40.html|;
+$key = q/postfix-virtual/;
+$external_labels{$key} = "$URL/" . q|node14.html|;
$noresave{$key} = "$nosave";
-$key = q/qmail-issues/;
-$external_labels{$key} = "$URL/" . q|node35.html|;
+$key = q/troubleshooting/;
+$external_labels{$key} = "$URL/" . q|node46.html|;
+$noresave{$key} = "$nosave";
+
+$key = q/site-list/;
+$external_labels{$key} = "$URL/" . q|node40.html|;
$noresave{$key} = "$nosave";
1;
@@ -61,44 +61,44 @@ $noresave{$key} = "$nosave";
# labels from external_latex_labels array.
-$key = q/mail-server/;
-$external_latex_labels{$key} = q|6|;
-$noresave{$key} = "$nosave";
-
-$key = q/building/;
-$external_latex_labels{$key} = q|3|;
+$key = q/bsd-issues/;
+$external_latex_labels{$key} = q|15.2|;
$noresave{$key} = "$nosave";
-$key = q/exim3-transport/;
-$external_latex_labels{$key} = q|6.2|;
+$key = q/postfix-virtual/;
+$external_latex_labels{$key} = q|6.1|;
$noresave{$key} = "$nosave";
-$key = q/troubleshooting/;
-$external_latex_labels{$key} = q|14|;
+$key = q/create-install-dir/;
+$external_latex_labels{$key} = q|2.2|;
$noresave{$key} = "$nosave";
$key = q/customizing/;
$external_latex_labels{$key} = q|7|;
$noresave{$key} = "$nosave";
+$key = q/troubleshooting/;
+$external_latex_labels{$key} = q|14|;
+$noresave{$key} = "$nosave";
+
$key = q/site-list/;
$external_latex_labels{$key} = q|8|;
$noresave{$key} = "$nosave";
-$key = q/create-install-dir/;
-$external_latex_labels{$key} = q|2.2|;
+$key = q/exim3-transport/;
+$external_latex_labels{$key} = q|6.2|;
$noresave{$key} = "$nosave";
-$key = q/qmail-issues/;
-$external_latex_labels{$key} = q|6.4|;
+$key = q/mail-server/;
+$external_latex_labels{$key} = q|6|;
$noresave{$key} = "$nosave";
-$key = q/bsd-issues/;
-$external_latex_labels{$key} = q|15.2|;
+$key = q/qmail-issues/;
+$external_latex_labels{$key} = q|6.4|;
$noresave{$key} = "$nosave";
-$key = q/postfix-virtual/;
-$external_latex_labels{$key} = q|6.1|;
+$key = q/building/;
+$external_latex_labels{$key} = q|3|;
$noresave{$key} = "$nosave";
$key = q/postfix-integration/;
diff --git a/doc/mailman-install/mail-server.html b/doc/mailman-install/mail-server.html
index 2eab284d..9783dfa5 100644
--- a/doc/mailman-install/mail-server.html
+++ b/doc/mailman-install/mail-server.html
@@ -156,7 +156,7 @@ aliases.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/mailman-install.html b/doc/mailman-install/mailman-install.html
index e0d23480..34ace408 100644
--- a/doc/mailman-install/mailman-install.html
+++ b/doc/mailman-install/mailman-install.html
@@ -46,7 +46,7 @@
<p><b><font size="+2">Barry Warsaw</font></b></p>
<p><span class="email">barry (at) list dot org</span></p>
<p><strong>Release 2.1</strong><br />
-<strong>March 7, 2015</strong></p>
+<strong>April 14, 2016</strong></p>
<p></p>
</div>
</div>
@@ -127,7 +127,7 @@
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node10.html b/doc/mailman-install/node10.html
index 475b2ce1..7c33c21c 100644
--- a/doc/mailman-install/node10.html
+++ b/doc/mailman-install/node10.html
@@ -204,7 +204,7 @@ Now restart your web server.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node12.html b/doc/mailman-install/node12.html
index 1681fba9..c7ada629 100644
--- a/doc/mailman-install/node12.html
+++ b/doc/mailman-install/node12.html
@@ -54,7 +54,7 @@
<p>
Mailman should work pretty much out of the box with a standard Postfix
installation. It has been tested with various Postfix versions up to and
-including Postfix 2.1.5.
+including Postfix 2.11.3 (as of April 2016).
<p>
In order to support Mailman's optional VERP delivery, you will want to disable
@@ -136,7 +136,7 @@ virtual domain support below.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node15.html b/doc/mailman-install/node15.html
index 3bd364b3..3c036644 100644
--- a/doc/mailman-install/node15.html
+++ b/doc/mailman-install/node15.html
@@ -103,7 +103,7 @@ instead of <code>mylist@dom.ain</code>.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node16.html b/doc/mailman-install/node16.html
index cbf1e55f..796cf0aa 100644
--- a/doc/mailman-install/node16.html
+++ b/doc/mailman-install/node16.html
@@ -125,7 +125,7 @@ those in the config fragments given below.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node17.html b/doc/mailman-install/node17.html
index 004a4df8..4b87dc06 100644
--- a/doc/mailman-install/node17.html
+++ b/doc/mailman-install/node17.html
@@ -144,7 +144,7 @@ and 2.1 installations, with the proviso that you'll probably want to use
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node18.html b/doc/mailman-install/node18.html
index ac1cd95b..098c395f 100644
--- a/doc/mailman-install/node18.html
+++ b/doc/mailman-install/node18.html
@@ -103,7 +103,7 @@ you'll need to edit these based on how you configured and installed Mailman.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node2.html b/doc/mailman-install/node2.html
index f8218ecf..e12ee7bd 100644
--- a/doc/mailman-install/node2.html
+++ b/doc/mailman-install/node2.html
@@ -122,7 +122,7 @@ but see the wiki page above for the latest information.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node20.html b/doc/mailman-install/node20.html
index 67dc2adb..cc168a7c 100644
--- a/doc/mailman-install/node20.html
+++ b/doc/mailman-install/node20.html
@@ -107,7 +107,7 @@ aliasfile director, or vice-versa.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node21.html b/doc/mailman-install/node21.html
index 492eae5d..7aa22ce0 100644
--- a/doc/mailman-install/node21.html
+++ b/doc/mailman-install/node21.html
@@ -105,7 +105,7 @@ file, and remember that order matters.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node22.html b/doc/mailman-install/node22.html
index 7b0a67f0..819d76de 100644
--- a/doc/mailman-install/node22.html
+++ b/doc/mailman-install/node22.html
@@ -90,7 +90,7 @@ transports'' line of your Exim config file.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node23.html b/doc/mailman-install/node23.html
index 4a2e6486..4b3b7218 100644
--- a/doc/mailman-install/node23.html
+++ b/doc/mailman-install/node23.html
@@ -94,7 +94,7 @@ mail, unless you like receiving tons of mail when some random host is down.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node24.html b/doc/mailman-install/node24.html
index 80ddcc4f..80191d5b 100644
--- a/doc/mailman-install/node24.html
+++ b/doc/mailman-install/node24.html
@@ -120,7 +120,7 @@
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node25.html b/doc/mailman-install/node25.html
index 3cebc15a..66c46637 100644
--- a/doc/mailman-install/node25.html
+++ b/doc/mailman-install/node25.html
@@ -127,7 +127,7 @@ from non-127.0.0.1 hosts, but it should do the trick for Mailman.)
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node26.html b/doc/mailman-install/node26.html
index c5072c89..74a67556 100644
--- a/doc/mailman-install/node26.html
+++ b/doc/mailman-install/node26.html
@@ -129,7 +129,7 @@ this in your <code>DATA</code> ACL:
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node27.html b/doc/mailman-install/node27.html
index ba447e07..ac28b0b9 100644
--- a/doc/mailman-install/node27.html
+++ b/doc/mailman-install/node27.html
@@ -102,7 +102,7 @@ In a nutshell, all you need to do to enable VERP with Exim is to add these lines
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node28.html b/doc/mailman-install/node28.html
index 064d60ef..66c792a1 100644
--- a/doc/mailman-install/node28.html
+++ b/doc/mailman-install/node28.html
@@ -112,7 +112,7 @@ and change your transport like this:
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node29.html b/doc/mailman-install/node29.html
index 313c31b1..6c6d81d1 100644
--- a/doc/mailman-install/node29.html
+++ b/doc/mailman-install/node29.html
@@ -116,7 +116,7 @@ functioning perfectly, though!
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node3.html b/doc/mailman-install/node3.html
index 258eea95..3d9f5dd8 100644
--- a/doc/mailman-install/node3.html
+++ b/doc/mailman-install/node3.html
@@ -102,7 +102,7 @@ in this section.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node30.html b/doc/mailman-install/node30.html
index f8edd02e..d4b77805 100644
--- a/doc/mailman-install/node30.html
+++ b/doc/mailman-install/node30.html
@@ -90,7 +90,7 @@ Overhauled/reformatted/clarified/simplified by Greg Ward
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node31.html b/doc/mailman-install/node31.html
index 9fd38b57..01b466f5 100644
--- a/doc/mailman-install/node31.html
+++ b/doc/mailman-install/node31.html
@@ -121,7 +121,7 @@ what you're doing in order to re-enable it.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node32.html b/doc/mailman-install/node32.html
index efd805c6..a265a59c 100644
--- a/doc/mailman-install/node32.html
+++ b/doc/mailman-install/node32.html
@@ -140,7 +140,7 @@ One good way of enabling this is:
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node33.html b/doc/mailman-install/node33.html
index 83bcf5dd..3b4a820d 100644
--- a/doc/mailman-install/node33.html
+++ b/doc/mailman-install/node33.html
@@ -108,7 +108,7 @@ find four files:
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node34.html b/doc/mailman-install/node34.html
index f3b57f39..ab06076d 100644
--- a/doc/mailman-install/node34.html
+++ b/doc/mailman-install/node34.html
@@ -93,7 +93,7 @@ connections.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node36.html b/doc/mailman-install/node36.html
index d3c6bc46..91b2a960 100644
--- a/doc/mailman-install/node36.html
+++ b/doc/mailman-install/node36.html
@@ -107,7 +107,7 @@ is the more qmail-friendly approach resulting in large performance gains.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node37.html b/doc/mailman-install/node37.html
index 54eaf8c6..a0c4b71f 100644
--- a/doc/mailman-install/node37.html
+++ b/doc/mailman-install/node37.html
@@ -94,7 +94,7 @@ Again, this patch is for people familiar with their qmail installation.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node38.html b/doc/mailman-install/node38.html
index 24b73c39..1aacc45d 100644
--- a/doc/mailman-install/node38.html
+++ b/doc/mailman-install/node38.html
@@ -90,7 +90,7 @@ Bollow has written about Mailman and qmail, available here:
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node4.html b/doc/mailman-install/node4.html
index 18f10aa9..6502be53 100644
--- a/doc/mailman-install/node4.html
+++ b/doc/mailman-install/node4.html
@@ -122,7 +122,7 @@ installation is complete.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node41.html b/doc/mailman-install/node41.html
index 06b343c7..3fde525a 100644
--- a/doc/mailman-install/node41.html
+++ b/doc/mailman-install/node41.html
@@ -152,7 +152,7 @@ parallel Mailman installations.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node42.html b/doc/mailman-install/node42.html
index 60bc3f90..3970b3ab 100644
--- a/doc/mailman-install/node42.html
+++ b/doc/mailman-install/node42.html
@@ -151,7 +151,7 @@ following set of commands:
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node43.html b/doc/mailman-install/node43.html
index 27877010..bdfb8209 100644
--- a/doc/mailman-install/node43.html
+++ b/doc/mailman-install/node43.html
@@ -101,7 +101,7 @@ existing lists.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node44.html b/doc/mailman-install/node44.html
index b534538f..af6ca339 100644
--- a/doc/mailman-install/node44.html
+++ b/doc/mailman-install/node44.html
@@ -120,7 +120,7 @@ password.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node45.html b/doc/mailman-install/node45.html
index 99af9cf2..d9739b08 100644
--- a/doc/mailman-install/node45.html
+++ b/doc/mailman-install/node45.html
@@ -146,7 +146,7 @@ list. If you had any problems along the way, please see the
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node47.html b/doc/mailman-install/node47.html
index 29c89e5d..6fe7671e 100644
--- a/doc/mailman-install/node47.html
+++ b/doc/mailman-install/node47.html
@@ -105,7 +105,7 @@ recommended installation or configuration instructions.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node48.html b/doc/mailman-install/node48.html
index 88c12fba..03eeaf12 100644
--- a/doc/mailman-install/node48.html
+++ b/doc/mailman-install/node48.html
@@ -147,7 +147,7 @@ This problem can manifest itself in other Linux distributions in
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node50.html b/doc/mailman-install/node50.html
index ca0dd788..56d6a22d 100644
--- a/doc/mailman-install/node50.html
+++ b/doc/mailman-install/node50.html
@@ -229,7 +229,7 @@ start up.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node7.html b/doc/mailman-install/node7.html
index 744b9013..f677b4aa 100644
--- a/doc/mailman-install/node7.html
+++ b/doc/mailman-install/node7.html
@@ -243,7 +243,7 @@ If you're using Apache, check the values for the <var>Group</var> option in
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node8.html b/doc/mailman-install/node8.html
index cf1e228e..b807891c 100644
--- a/doc/mailman-install/node8.html
+++ b/doc/mailman-install/node8.html
@@ -88,7 +88,7 @@ Once you've run <b class="program">configure</b>, you can simply run <b class="p
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/node9.html b/doc/mailman-install/node9.html
index 1d024828..0e976b1d 100644
--- a/doc/mailman-install/node9.html
+++ b/doc/mailman-install/node9.html
@@ -139,7 +139,7 @@ configuration.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/postfix-integration.html b/doc/mailman-install/postfix-integration.html
index 18b122f2..704e75f3 100644
--- a/doc/mailman-install/postfix-integration.html
+++ b/doc/mailman-install/postfix-integration.html
@@ -200,7 +200,7 @@ tables.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/postfix-virtual.html b/doc/mailman-install/postfix-virtual.html
index 4ef39d1f..7d2cd428 100644
--- a/doc/mailman-install/postfix-virtual.html
+++ b/doc/mailman-install/postfix-virtual.html
@@ -201,7 +201,7 @@ group owned by <code>mailman</code>.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/qmail-issues.html b/doc/mailman-install/qmail-issues.html
index 9fdbcf26..8bac0546 100644
--- a/doc/mailman-install/qmail-issues.html
+++ b/doc/mailman-install/qmail-issues.html
@@ -299,7 +299,7 @@ fi
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/site-list.html b/doc/mailman-install/site-list.html
index 3883c881..6bcb81e8 100644
--- a/doc/mailman-install/site-list.html
+++ b/doc/mailman-install/site-list.html
@@ -123,7 +123,7 @@ You should also subscribe yourself to the site list.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/doc/mailman-install/troubleshooting.html b/doc/mailman-install/troubleshooting.html
index c5f7c890..79b2ae4e 100644
--- a/doc/mailman-install/troubleshooting.html
+++ b/doc/mailman-install/troubleshooting.html
@@ -252,7 +252,7 @@ publicly visible.
</div>
</div>
<hr />
-<span class="release-info">Release 2.1, documentation updated on March 7, 2015.</span>
+<span class="release-info">Release 2.1, documentation updated on April 14, 2016.</span>
</div>
<!--End of Navigation Panel-->
diff --git a/messages/pt_BR/LC_MESSAGES/mailman.po b/messages/pt_BR/LC_MESSAGES/mailman.po
index 88378134..88e1049a 100755..100644
--- a/messages/pt_BR/LC_MESSAGES/mailman.po
+++ b/messages/pt_BR/LC_MESSAGES/mailman.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Mailman\n"
"POT-Creation-Date: Sat Feb 27 14:41:07 2016\n"
-"PO-Revision-Date: 2015-06-13 16:06-0300\n"
+"PO-Revision-Date: 2016-03-09 14:12+0000\n"
"Last-Translator: Emerson Ribeiro de Mello <emerson_ml@yahoo.com.br>\n"
"Language-Team: Portuguese <mailman-i18n@python.org>\n"
"Language: pt_BR\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Poedit 1.8.1\n"
+"X-Generator: Poedit 1.8.7\n"
#: Mailman/Archiver/HyperArch.py:123
msgid "size not available"
@@ -206,8 +206,7 @@ msgstr "por você mesmo"
msgid "by the list administrator"
msgstr "pelo administrador da lista"
-#: Mailman/Bouncer.py:48 Mailman/Bouncer.py:293
-#: Mailman/Commands/cmd_set.py:182
+#: Mailman/Bouncer.py:48 Mailman/Bouncer.py:293 Mailman/Commands/cmd_set.py:182
msgid "for unknown reasons"
msgstr "por razões desconhecidas"
@@ -246,11 +245,11 @@ msgstr "Moderador"
msgid "Administrator"
msgstr "Administrador"
-#: Mailman/Cgi/admin.py:80 Mailman/Cgi/admindb.py:116
-#: Mailman/Cgi/confirm.py:62 Mailman/Cgi/edithtml.py:71
-#: Mailman/Cgi/listinfo.py:55 Mailman/Cgi/options.py:95
-#: Mailman/Cgi/private.py:108 Mailman/Cgi/rmlist.py:64
-#: Mailman/Cgi/roster.py:59 Mailman/Cgi/subscribe.py:63
+#: Mailman/Cgi/admin.py:80 Mailman/Cgi/admindb.py:116 Mailman/Cgi/confirm.py:62
+#: Mailman/Cgi/edithtml.py:71 Mailman/Cgi/listinfo.py:55
+#: Mailman/Cgi/options.py:95 Mailman/Cgi/private.py:108
+#: Mailman/Cgi/rmlist.py:64 Mailman/Cgi/roster.py:59
+#: Mailman/Cgi/subscribe.py:63
msgid "No such list <em>%(safelistname)s</em>"
msgstr "A lista <em>%(safelistname)s</em> não existe"
@@ -880,8 +879,8 @@ msgstr "Enviar mensagens de boas vindas para novos inscritos?"
#: Mailman/Gui/Privacy.py:128 Mailman/Gui/Privacy.py:161
#: Mailman/Gui/Privacy.py:214 Mailman/Gui/Privacy.py:316
#: Mailman/Gui/Privacy.py:333 Mailman/Gui/Privacy.py:473
-#: Mailman/Gui/Privacy.py:492 Mailman/Gui/Usenet.py:52
-#: Mailman/Gui/Usenet.py:56 Mailman/Gui/Usenet.py:93 Mailman/Gui/Usenet.py:105
+#: Mailman/Gui/Privacy.py:492 Mailman/Gui/Usenet.py:52 Mailman/Gui/Usenet.py:56
+#: Mailman/Gui/Usenet.py:93 Mailman/Gui/Usenet.py:105
msgid "No"
msgstr "Não"
@@ -891,26 +890,26 @@ msgstr "Não"
#: Mailman/Cgi/create.py:388 Mailman/Cgi/create.py:426
#: Mailman/Cgi/rmlist.py:230 Mailman/Gui/Archive.py:33
#: Mailman/Gui/Autoresponse.py:54 Mailman/Gui/Autoresponse.py:62
-#: Mailman/Gui/Bounce.py:77 Mailman/Gui/Bounce.py:120
-#: Mailman/Gui/Bounce.py:146 Mailman/Gui/Bounce.py:155
-#: Mailman/Gui/Bounce.py:164 Mailman/Gui/ContentFilter.py:74
-#: Mailman/Gui/ContentFilter.py:116 Mailman/Gui/ContentFilter.py:120
-#: Mailman/Gui/Digest.py:46 Mailman/Gui/Digest.py:62 Mailman/Gui/Digest.py:84
-#: Mailman/Gui/Digest.py:89 Mailman/Gui/General.py:223
-#: Mailman/Gui/General.py:229 Mailman/Gui/General.py:307
-#: Mailman/Gui/General.py:334 Mailman/Gui/General.py:361
-#: Mailman/Gui/General.py:372 Mailman/Gui/General.py:375
-#: Mailman/Gui/General.py:385 Mailman/Gui/General.py:390
-#: Mailman/Gui/General.py:396 Mailman/Gui/General.py:416
-#: Mailman/Gui/General.py:448 Mailman/Gui/General.py:471
-#: Mailman/Gui/General.py:488 Mailman/Gui/NonDigest.py:45
-#: Mailman/Gui/NonDigest.py:53 Mailman/Gui/NonDigest.py:140
-#: Mailman/Gui/NonDigest.py:162 Mailman/Gui/Privacy.py:110
-#: Mailman/Gui/Privacy.py:128 Mailman/Gui/Privacy.py:161
-#: Mailman/Gui/Privacy.py:214 Mailman/Gui/Privacy.py:316
-#: Mailman/Gui/Privacy.py:333 Mailman/Gui/Privacy.py:473
-#: Mailman/Gui/Privacy.py:492 Mailman/Gui/Usenet.py:52
-#: Mailman/Gui/Usenet.py:56 Mailman/Gui/Usenet.py:93 Mailman/Gui/Usenet.py:105
+#: Mailman/Gui/Bounce.py:77 Mailman/Gui/Bounce.py:120 Mailman/Gui/Bounce.py:146
+#: Mailman/Gui/Bounce.py:155 Mailman/Gui/Bounce.py:164
+#: Mailman/Gui/ContentFilter.py:74 Mailman/Gui/ContentFilter.py:116
+#: Mailman/Gui/ContentFilter.py:120 Mailman/Gui/Digest.py:46
+#: Mailman/Gui/Digest.py:62 Mailman/Gui/Digest.py:84 Mailman/Gui/Digest.py:89
+#: Mailman/Gui/General.py:223 Mailman/Gui/General.py:229
+#: Mailman/Gui/General.py:307 Mailman/Gui/General.py:334
+#: Mailman/Gui/General.py:361 Mailman/Gui/General.py:372
+#: Mailman/Gui/General.py:375 Mailman/Gui/General.py:385
+#: Mailman/Gui/General.py:390 Mailman/Gui/General.py:396
+#: Mailman/Gui/General.py:416 Mailman/Gui/General.py:448
+#: Mailman/Gui/General.py:471 Mailman/Gui/General.py:488
+#: Mailman/Gui/NonDigest.py:45 Mailman/Gui/NonDigest.py:53
+#: Mailman/Gui/NonDigest.py:140 Mailman/Gui/NonDigest.py:162
+#: Mailman/Gui/Privacy.py:110 Mailman/Gui/Privacy.py:128
+#: Mailman/Gui/Privacy.py:161 Mailman/Gui/Privacy.py:214
+#: Mailman/Gui/Privacy.py:316 Mailman/Gui/Privacy.py:333
+#: Mailman/Gui/Privacy.py:473 Mailman/Gui/Privacy.py:492
+#: Mailman/Gui/Usenet.py:52 Mailman/Gui/Usenet.py:56 Mailman/Gui/Usenet.py:93
+#: Mailman/Gui/Usenet.py:105
msgid "Yes"
msgstr "Sim"
@@ -4182,7 +4181,7 @@ msgstr "Mensal"
#: Mailman/Gui/Archive.py:40 Mailman/Gui/Digest.py:78
msgid "Quarterly"
-msgstr "Quadrimestral"
+msgstr "Trimestralmente"
#: Mailman/Gui/Archive.py:40 Mailman/Gui/Digest.py:78
msgid "Yearly"
@@ -7071,12 +7070,12 @@ msgstr ""
" membros</a>"
#: Mailman/Gui/Privacy.py:233
-#, fuzzy
msgid ""
"Ceiling on acceptable number of member posts, per interval,\n"
" before automatic moderation."
msgstr ""
-"Impondo um limite aceitável no número de destinatários para uma mensagem."
+"Impondo um número aceitável de mensagens, por intervalo de tempo,\n"
+" antes da moderação automática."
#: Mailman/Gui/Privacy.py:236
msgid ""
@@ -7098,6 +7097,25 @@ msgid ""
" this can be triggered by a single post cross-posted to\n"
" multiple lists or by a single post to an umbrella list."
msgstr ""
+"Se um membro enviar muitas mensagens dentro de um período de tempo\n"
+" este será automaticamente moderado. Use 0 para desativar. "
+"Veja\n"
+" <a href=\"?VARHELP=privacy/sender/member_verbosity_interval"
+"\"\n"
+" >member_verbosity_interval</a> para obter mais detalhes sobre "
+"esse tempo.\n"
+"\n"
+" <p>Isso foi projetado para coibir pessoas que ingressam nas "
+"listas e então\n"
+" fazem uso de robôs para enviar spam em um curto intervalo de "
+"tempo.\n"
+"\n"
+" <p>Seja cuidadoso ao usar essa configuração. Se você definir "
+"um período muito curto,\n"
+" essa configuração poderá ser ativada por uma simples mensagem "
+"enviada para múltiplas listas\n"
+" ou mesmo, enviada para uma lista guarda-chuva (que agrupa "
+"diversas outras listas)."
#: Mailman/Gui/Privacy.py:249
msgid ""
@@ -7105,6 +7123,9 @@ msgid ""
" member_verbosity_threshold for automatic moderation of a\n"
" member."
msgstr ""
+"Número de segundos para usado por essa lista para\n"
+" determinar o member_verbosity_threshold para moderação automática "
+"de um membro."
#: Mailman/Gui/Privacy.py:253
msgid ""
@@ -7118,6 +7139,18 @@ msgid ""
" member_verbosity_threshold enabled that arrived within that\n"
" list's member_verbosity_interval."
msgstr ""
+"Se o total de mensagens enviadas por um membro para todas as listas nessa\n"
+" instalação for definido como member_verbosity_threshold e esse "
+"atingir\n"
+" o limite da lista member_verbosity_threshold, então o membro "
+"será automaticamente\n"
+" moderado nessa lista.\n"
+"\n"
+" <p> Só serão contabilizadas as mensagens que forem enviadas para "
+"listas\n"
+" que estiverem com o member_verbosity_threshold ativado e que "
+"chegarem\n"
+" com member_verbosity_interval da lista."
#: Mailman/Gui/Privacy.py:265
msgid ""
@@ -7261,17 +7294,16 @@ msgstr ""
"de spam dos destinatários."
#: Mailman/Gui/Privacy.py:334
-#, fuzzy
msgid ""
"Shall the above dmarc_moderation_action apply to messages\n"
" From: domains with DMARC p=none as well as p=quarantine and\n"
" p=reject"
msgstr ""
"Deveria a dmarc_moderation_action acima ser aplicada para mensagens\n"
-" De: domínios com DMARC p=quarentena assim como p=rejeitar"
+" De: domínios com DMARC p=none assim como p=quarentena e "
+"p=rejeitar"
#: Mailman/Gui/Privacy.py:338
-#, fuzzy
msgid ""
"<ul><li><b>No</b> -- this applies dmarc_moderation_action to\n"
" only those posts From: a domain with DMARC p=reject and\n"
@@ -7288,21 +7320,24 @@ msgid ""
" the message transformations that would be applied if the\n"
" domain's DMARC policy were stronger."
msgstr ""
-"<ul><li><b>Não</b> -- isso aplica dmarc_moderation_action para\n"
-" somente mensagens enviadas De: um domínio DMARC p=rejeitar. "
-"Isso é\n"
-" adequado se você se importa com mensagens de retorno, mas "
-"deseja\n"
-" aplicar dmarc_moderation_action para o menor número possível "
-"de mensagens.\n"
+"<ul><li><b>Não</b> -- isso aplica dmarc_moderation_action \n"
+" somente para mensagens enviadas De: um domínio DMARC "
+"p=rejeitar e\n"
+" possivelmente p=quarantine dependendo da configuração do "
+"dmarc_quarantine_moderation_action\n"
" <p><li><b>Sim</b> -- isso aplica dmarc_moderation_action para "
"mensagens\n"
-" De: um domínio com DMARC p=rejeitar ou p=quarentena.\n"
-" e dmarc_moderation_action não é aplicada (isso configura para "
-"Não)\n"
-" para mensagens\n"
-" que não irão gerar retornos, mas que serão entregue nas pastas "
-"de spam dos destinatários."
+" De: um domínio com DMARC p=none se dmarc_moderation_action "
+"estiver como Munge From\n"
+" ou Wrap Message e dmarc_quarantine_moderation_action como "
+"sim. \n"
+" <p>O objetivo dessa configuração é eliminar relatórios de "
+"falhas\n"
+" para o dono de um domínio que publicou DMARC p=none através da "
+"definição\n"
+" da transformação da mensagem que poderia ser aplicada se a "
+"política do domínio DMARC\n"
+" for rígida."
#: Mailman/Gui/Privacy.py:352
msgid ""
@@ -8542,9 +8577,8 @@ msgstr ""
"pelo Mailman está em anexo.\n"
#: Mailman/Handlers/CookHeaders.py:161
-#, fuzzy
msgid "%(realname)s via %(lrn)s"
-msgstr "Administração da %(realname)s (%(label)s)"
+msgstr "%(realname)s por (%(lrn)s)"
#: Mailman/Handlers/Emergency.py:29
msgid "Emergency hold on all list traffic is in effect"
@@ -9370,9 +9404,9 @@ msgstr ""
"Não é possível ler membros normais e digest a partir do dispositivo de "
"entrada padrão."
-#: bin/add_members:221 bin/config_list:110 bin/export.py:271
-#: bin/find_member:97 bin/inject:91 bin/list_admins:90 bin/list_members:252
-#: bin/sync_members:222 cron/bumpdigests:86
+#: bin/add_members:221 bin/config_list:110 bin/export.py:271 bin/find_member:97
+#: bin/inject:91 bin/list_admins:90 bin/list_members:252 bin/sync_members:222
+#: cron/bumpdigests:86
msgid "No such list: %(listname)s"
msgstr "Lista inexistente: %(listname)s"
@@ -10850,7 +10884,6 @@ msgid "matching mailing lists found:"
msgstr "listas de discussão encontradas:"
#: bin/list_members:19
-#, fuzzy
msgid ""
"List all the members of a mailing list.\n"
"\n"
@@ -10917,9 +10950,9 @@ msgid ""
msgstr ""
"Lista todos os membros de uma lista de discussão.\n"
"\n"
-"Uso: %(PROGRAM)s [opções] nomedalista\n"
+"Uso: %(PROGRAM)s [opções] nome-da-lista\n"
"\n"
-"Onde:\n"
+"Sendo:\n"
"\n"
" --output arquivo\n"
" -o arquivo\n"
@@ -10947,9 +10980,9 @@ msgstr ""
" Inclui os nomes completos na saída.\n"
"\n"
" --preserve/-p\n"
-" Exibe endereços de membros em capitalização preservada da forma que "
+" Exibe endereços de membros com capitalização preservada da forma que "
"eles\n"
-" são adicionados a lista. Caso contrário, os endereços são \n"
+" foram adicionados a lista. Caso contrário, os endereços são \n"
" mostrados em minúsculas.\n"
"\n"
" --invalid / -i\n"
@@ -10969,9 +11002,9 @@ msgstr ""
"\n"
" listname é o nome da lista de discussão que utiliza.\n"
"\n"
-"Note que se ambas -r ou -d forem fornecidas, membros regulares\n"
+"Note que se nenhum das opções -r ou -d forem fornecidas, membros regulares\n"
"são exibidos primeiro, seguidos de membros digest, mas nenhuma indicação\n"
-"é mostrada sobre o status de endereço.\n"
+"é mostrada sobre a situação do endereço.\n"
#: bin/list_members:198
msgid "Bad --nomail option: %(why)s"
@@ -10984,7 +11017,7 @@ msgstr "Opção --digest incorreta: %(kind)s"
#: bin/list_members:213 bin/list_members:217 bin/list_members:221
#: bin/list_members:225
msgid "Only one of -m, -M, -i or -u may be specified."
-msgstr ""
+msgstr "Somente um de -m, -M, -i ou -u pode ser especificado."
#: bin/list_members:243
msgid "Could not open file for writing:"
diff --git a/templates/de/options.html b/templates/de/options.html
index 2c5f8523..c8229ecb 100755
--- a/templates/de/options.html
+++ b/templates/de/options.html
@@ -174,7 +174,7 @@ weitern Abonnement Sie haben.
Wenn Sie den Zusammenfassungsmodus aktivieren, erhalten Sie die
Nachrichten eines Tages geb&uuml;ndelt anstatt einzeln.
Wenn der Zusammenfassungsmodus von "An" auf "Aus" gewechselt wird,
- erhalten Sie noch eine letze Zusammenfassung.
+ erhalten Sie noch eine letzte Zusammenfassung.
</td><td bgcolor="#cccccc">
<MM-Undigest-Radio-Button>Aus<br>
<MM-Digest-Radio-Button>An