diff options
Diffstat (limited to '')
-rwxr-xr-x | Mailman/Defaults.py.in | 252 |
1 files changed, 239 insertions, 13 deletions
diff --git a/Mailman/Defaults.py.in b/Mailman/Defaults.py.in index be1ac735..e6738192 100755 --- a/Mailman/Defaults.py.in +++ b/Mailman/Defaults.py.in @@ -1,6 +1,6 @@ # -*- python -*- -# Copyright (C) 1998-2012 by the Free Software Foundation, Inc. +# Copyright (C) 1998-2017 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 @@ -131,6 +131,14 @@ SUBSCRIBE_FORM_SECRET = None # test. SUBSCRIBE_FORM_MIN_TIME = seconds(5) +# Installation wide ban list. This is a list of email addresses and regexp +# patterns (beginning with ^) which are not allowed to subscribe to any lists +# in the installation. This supplements the individual list's ban_list. +# For example, to ban xxx@aol.com and any @gmail.com address beginning with +# yyy, set +# GLOBAL_BAN_LIST = ['xxx@aol.com', '^yyy.*@gmail\.com$'] +GLOBAL_BAN_LIST = [] + # Command that is used to convert text/html parts into plain text. This # should output results to standard output. %(filename)s will contain the # name of the temporary file that the program should operate on. @@ -138,9 +146,20 @@ HTML_TO_PLAIN_TEXT_COMMAND = '/usr/bin/lynx -dump %(filename)s' # A Python regular expression character class which defines the characters # allowed in list names. Lists cannot be created with names containing any -# character that doesn't match this class. +# character that doesn't match this class. Do not include '/' in this list. ACCEPTABLE_LISTNAME_CHARACTERS = '[-+_.=a-z0-9]' +# Shall the user's real names be displayed along with their email addresses +# in list rosters? Defaults to No to preserve prior behavior. +ROSTER_DISPLAY_REALNAME = No + +# Beginning in Mailman 2.1.21, localized help and some other output from +# Mailman's bin/ commands is converted to the character set of the user's +# workstation (LC_CTYPE) if different from the character set of the language. +# This is not well tested over a wide range of locales, so if it causes +# problems, it can be disabled by setting the following to Yes. +DISABLE_COMMAND_LOCALE_CSET = No + ##### @@ -166,7 +185,7 @@ VIRTUAL_HOST_OVERVIEW = On # omitted it defaults to urlhost with the first name stripped off, e.g. # # add_virtualhost('www.dom.ain') -# VIRTUAL_HOST['www.dom.ain'] +# VIRTUAL_HOSTS['www.dom.ain'] # ==> 'dom.ain' # def add_virtualhost(urlhost, emailhost=None): @@ -199,6 +218,13 @@ add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST) # -owners address, unless the message is explicitly approved. KNOWN_SPAMMERS = [] +# The header_filter_rules in Privacy options... -> Spam filters are matched as +# normalized unicodes against normalized unicode headers. This setting +# determines the normalization form. It is one of 'NFC', 'NFD', 'NFKC' or +# 'NFKD'. See +# https://docs.python.org/2/library/unicodedata.html#unicodedata.normalize +NORMALIZE_FORM = 'NFKC' + ##### @@ -224,6 +250,20 @@ WEB_VLINK_COLOR = '' # If true, forces VLINK= WEB_HIGHLIGHT_COLOR = '#dddddd' # If true, alternating rows # in listinfo & admin display +# If you wish to include extra elements in the <HEAD> section of Mailman's +# web pages, e.g. style information or a link to a style sheet, you can set +# the following. For example, to include a css style sheet reference, you +# can put in mm_cfg.py +# WEB_HEAD_ADD = """<LINK REL=stylesheet +# TYPE="text/css" +# HREF="path or URL" +# >""" +# You can specify anything that is allowed in the <HEAD> section. The default +# is to not add anything. This only applies to internally generated pages. +# For pages built from templates you can create custom templates containing +# this information. +WEB_HEAD_ADD = None + # User entered data is escaped for redisplay in web responses to avoid Cross # Site Scripting (XSS) attacks. The normal escaping replaces the characters # <, >, & and " with the respective HTML entities <, >, & and @@ -247,6 +287,17 @@ BROKEN_BROWSER_REPLACEMENTS = {'\x8b': '‹', # single left angle quote '\xbe': '¾', # > plus high order bit '\xa2': '¢', # " plus high order bit } +# +# Shall the admindb held message summary display the grouping and sorting +# option radio buttons? Set this in mm_cfg.py to one of the following: +# SSENDER -> Default to grouped and sorted by sender. +# SSENDERTIME -> Default to grouped by sender and sorted by time. +# STIME -> Default to ungrouped and sorted by time. +DISPLAY_HELD_SUMMARY_SORT_BUTTONS = No +# +# Shall the default for the admin Mass Subscription function be Invite rather +# than Subscribe? Set to Yes in mm_cfg.py to make the default be Invite. +DEFAULT_SUBSCRIBE_OR_INVITE = No @@ -425,6 +476,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 @@ -512,6 +569,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. @@ -548,9 +621,25 @@ NNTP_REWRITE_DUPLICATE_HEADERS = [ # footer or scrubbing attachments or even reply-to munging can break these # signatures. It is generally felt that these signatures have value, even if # broken and even if the outgoing message is resigned. However, some sites -# may wish to remove these headers by setting this to Yes. +# may wish to remove these headers. Possible values and meanings are: +# No, 0, False -> do not remove headers. +# Yes, 1, True -> remove headers only if we are munging the from header due +# to from_is_list or dmarc_moderation_action. +# 2 -> always remove headers. +# 3 -> always remove, rename and preserve original DKIM headers. REMOVE_DKIM_HEADERS = No +# If the following is set to a non-empty string, that string is the name of a +# header that will be added to personalized and VERPed deliveries with value +# equal to the base64 encoding of the recipient's email address. This is +# intended to enable identification of the recipient otherwise redacted from +# "spam report" feedback loop messages. For example, if +# RCPT_BASE64_HEADER_NAME = 'X-Mailman-R-Data' +# a header like +# X-Mailman-R-Data: dXNlckBleGFtcGxlLmNvbQo= +# will be added to messages sent to user@@example.com. +RCPT_BASE64_HEADER_NAME = '' + # All `normal' messages which are delivered to the entire list membership go # through this pipeline of handler modules. Lists themselves can override the # global pipeline by defining a `pipeline' attribute. @@ -580,6 +669,7 @@ GLOBAL_PIPELINE = [ # (outgoing) path, finally leaving the message in the outgoing queue. 'AfterDelivery', 'Acknowledge', + 'WrapMessage', 'ToOutgoing', ] @@ -587,7 +677,6 @@ GLOBAL_PIPELINE = [ OWNER_PIPELINE = [ 'SpamDetect', 'Replybot', - 'CleanseDKIM', 'OwnerRecips', 'ToOutgoing', ] @@ -968,6 +1057,27 @@ USER_FRIENDLY_PASSWORDS = Yes MEMBER_PASSWORD_LENGTH = 8 ADMIN_PASSWORD_LENGTH = 10 +# The following headers are always removed from posts to anonymous lists as +# they can reveal the identity of the poster or at least the poster's domain. +# +# From:, Reply-To:, Sender:, Return-Path:, X-Originating-Email:, Received:, +# Message-ID: and X-Envelope-From:. +# +# In addition, Return-Receipt-To:, Disposition-Notification-To:, +# X-Confirm-Reading-To: and X-Pmrqc: headers are removed from all posts as +# they can be used to fish for list membership in addition to possibly +# revealing sender information. +# +# In addition to the above removals, all other headers except those matching +# regular expressions in the following setting are also removed. The default +# setting below keeps all non X- headers, those X- headers added by Mailman +# and any X-Spam- headers. +ANONYMOUS_LIST_KEEP_HEADERS = ['^(?!x-)', '^x-mailman-', + '^x-content-filtered-by:', '^x-topics:', + '^x-ack:', '^x-beenthere:', + '^x-list-administrivia:', '^x-spam-', + ] + ##### @@ -988,7 +1098,7 @@ DEFAULT_MAX_MESSAGE_SIZE = 40 # KB DEFAULT_SUBJECT_PREFIX = "[%(real_name)s] " # DEFAULT_SUBJECT_PREFIX = "[%(real_name)s %%d]" # for numbering DEFAULT_MSG_HEADER = "" -DEFAULT_MSG_FOOTER = """_______________________________________________ +DEFAULT_MSG_FOOTER = """-- %(real_name)s mailing list %(real_name)s@%(host_name)s %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s @@ -1028,7 +1138,94 @@ DEFAULT_DEFAULT_MEMBER_MODERATION = No # moderators? DEFAULT_FORWARD_AUTO_DISCARDS = Yes -# What shold happen to non-member posts which are do not match explicit +# Shall dmarc_moderation_action be applied to messages From: domains with +# a DMARC policy of quarantine as well as reject? This sets the default for +# the list setting that controls it. +DEFAULT_DMARC_QUARANTINE_MODERATION_ACTION = Yes + +# Default action for posts whose From: address domain has a DMARC policy of +# reject or quarantine. See DEFAULT_FROM_IS_LIST below. Whatever is set as +# the default here precludes the list owner from setting a lower value. +# 0 = Accept +# 1 = Munge From +# 2 = Wrap Message +# 3 = Reject +# 4 = Discard +DEFAULT_DMARC_MODERATION_ACTION = 0 + +# Domain owners can publish DMARC p=none policy in order to request that +# reports of DMARC failures be sent but special action not be taken on +# messages From: their domain that fail DMARC. This can result in over +# estimation of the number of messages that would be quarantined or rejected +# with a stronger DMARC policy if such a policy would result in message +# modification because dmarc_moderation_action is 1 or 2. Thus, there is +# a list setting to apply dmarc_moderaction_action of 1 or 2 to messages +# From: domains with DMARC p=none. Setting this to Yes is only effective if +# dmarc_quarantine_moderaction_action is also Yes. The following is the +# default for this setting for new lists. +DEFAULT_DMARC_NONE_MODERATION_ACTION = No + +# Default for text to be added to a separate text/plain part preceding the +# message/rfc822 part containing the original message when +# dmarc_moderation_action is Wrap Message. +DEFAULT_DMARC_WRAPPED_MESSAGE_TEXT = '' + +# Parameters for DMARC DNS lookups. If you are seeing 'DNSException: +# Unable to query DMARC policy ...' entries in your error log, you may need +# to adjust these. +# The time to wait for a response from a name server before timeout. +DMARC_RESOLVER_TIMEOUT = seconds(3) +# The total time to spend trying to get an answer to the question. +DMARC_RESOLVER_LIFETIME = seconds(5) + +# A URL from which to retrieve the data for the algorithm that computes +# Organizational Domains for DMARC policy lookup purposes. This can be +# anything handled by the Python urllib2.urlopen function. See +# https://publicsuffix.org/list/ for info. +DMARC_ORGANIZATIONAL_DOMAIN_DATA_URL = \ +'https://publicsuffix.org/list/public_suffix_list.dat' + +# Should the list server auto-moderate members who post too frequently +# This is intended to stop people who join a list and then use a bot to +# send many spam messages in a short interval. These are default settings +# for new lists. See the web admin Privacy options -> Sender filters page +# and the Details for member_verbosity_threshold and member_verbosity_interval +# links for more information. +# DEFAULT_MEMBER_VERBOSITY_INTERVAL = number of seconds to track posts +# DEFAULT_MEMBER_VERBOSITY_THRESHOLD = number of allowed posts per interval +# (0 to disable). +DEFAULT_MEMBER_VERBOSITY_INTERVAL = 300 +DEFAULT_MEMBER_VERBOSITY_THRESHOLD = 0 + +# This controls how often to clean old post time entries from the dictionary +# used to implement the member verbosity feature. This is a compromise between +# using resources for cleaning and allowing the dictionary to grow very large. +# The setting is the number of passes through the code before the dictionary +# is cleaned. +VERBOSE_CLEAN_LIMIT = 1000 + +# What domains should be considered equivalent when testing list membership +# for posting/moderation. +# If two poster addresses with the same local part but +# different domains are to be considered equivalents for list +# membership tests, the domains are put in the list's equivalent_domains. +# This provides a default value for new lists. +# The format is one or more groups of equivalent domains. Within a group, +# the domains are separated by commas and multiple groups are +# separated by semicolons. White space is ignored. +# For example: +# +# 'example.com,mail.example.com;mac.com,me.com,icloud.com' +# +# In this example, if user@example.com is a list member, +# a post from user@mail.example.com will be treated as if it is +# from user@example.com for list membership/moderation purposes, +# and likewise, if user@me.com is a list member, posts from +# user@mac.com or user@icloud.com will be treated as if from +# user@me.com. +DEFAULT_EQUIVALENT_DOMAINS = '' + +# What should happen to non-member posts which are do not match explicit # non-member actions? # 0 = Accept # 1 = Hold @@ -1065,6 +1262,16 @@ DEFAULT_SEND_WELCOME_MSG = Yes # Send goodbye messages to unsubscribed members? DEFAULT_SEND_GOODBYE_MSG = Yes +# The following is a three way setting. It sets the default for the list's +# from_is_list policy which is applied to all posts except those for which a +# dmarc_moderation_action other than accept applies. +# 0 -> Do not rewrite the From: or wrap the message. +# 1 -> Rewrite the From: header of posts replacing the posters address with +# that of the list. Also see REMOVE_DKIM_HEADERS above. +# 2 -> Do not modify the From: of the message, but wrap the message in an outer +# message From the list address. +DEFAULT_FROM_IS_LIST = 0 + # Wipe sender information, and make it look like the list-admin # address sends all messages DEFAULT_ANONYMOUS_LIST = No @@ -1105,6 +1312,10 @@ DEFAULT_SUBSCRIBE_POLICY = 1 # Does this site allow completely unchecked subscriptions? ALLOW_OPEN_SUBSCRIBE = No +# This is the default list of addresses and regular expressions (beginning +# with ^) that are exempt from approval if SUBSCRIBE_POLICY is 2 or 3. +DEFAULT_SUBSCRIBE_AUTO_APPROVAL = [] + # The default policy for unsubscriptions. 0 (unmoderated unsubscribes) is # highly recommended! # 0 - unmoderated unsubscribes @@ -1149,9 +1360,11 @@ DEFAULT_FILTER_MIME_TYPES = [] # DEFAULT_PASS_MIME_TYPES is a list of MIME types to be passed through. # Format is the same as DEFAULT_FILTER_MIME_TYPES -DEFAULT_PASS_MIME_TYPES = ['multipart/mixed', - 'multipart/alternative', - 'text/plain'] +DEFAULT_PASS_MIME_TYPES = ['multipart', + 'message/rfc822', + 'application/pgp-signature', + 'text/plain', + ] # DEFAULT_FILTER_FILENAME_EXTENSIONS is a list of filename extensions to be # removed. It is useful because many viruses fake their content-type as @@ -1195,7 +1408,10 @@ DEFAULT_NONDIGESTABLE = Yes # Will list be available in digested form? DEFAULT_DIGESTABLE = Yes DEFAULT_DIGEST_HEADER = "" -DEFAULT_DIGEST_FOOTER = DEFAULT_MSG_FOOTER +DEFAULT_DIGEST_FOOTER = """%(real_name)s mailing list +%(real_name)s@%(host_name)s +%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s +""" DEFAULT_DIGEST_IS_DEFAULT = No DEFAULT_MIME_IS_DEFAULT_DIGEST = No @@ -1279,6 +1495,10 @@ DEFAULT_BOUNCE_YOU_ARE_DISABLED_WARNINGS_INTERVAL = days(7) # failed to match by the bounce detector? DEFAULT_BOUNCE_UNRECOGNIZED_GOES_TO_LIST_OWNER = Yes +# Does the list owner get a copy of every recognized bounce that increments +# the score for a list member but doesn't result in a disable or probe? +DEFAULT_BOUNCE_NOTIFY_OWNER_ON_BOUNCE_INCREMENT = No + # 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 @@ -1396,6 +1616,11 @@ UNSUBSCRIBE = 5 ACCEPT = 6 HOLD = 7 +# admindb summary sort button settings. All must evaluate to True. +SSENDER = 1 +SSENDERTIME = 2 +STIME = 3 + # Standard text field width TEXTFIELDWIDTH = 40 @@ -1515,6 +1740,7 @@ add_language('en', _('English (USA)'), 'us-ascii', 'ltr') add_language('es', _('Spanish (Spain)'), 'iso-8859-1', 'ltr') add_language('et', _('Estonian'), 'iso-8859-15', 'ltr') add_language('eu', _('Euskara'), 'iso-8859-15', 'ltr') # Basque +add_language('fa', _('Persian'), 'utf-8', 'rtl') add_language('fi', _('Finnish'), 'iso-8859-1', 'ltr') add_language('fr', _('French'), 'iso-8859-1', 'ltr') add_language('gl', _('Galician'), 'utf-8', 'ltr') @@ -1532,8 +1758,8 @@ add_language('no', _('Norwegian'), 'iso-8859-1', 'ltr') add_language('pl', _('Polish'), 'iso-8859-2', 'ltr') add_language('pt', _('Portuguese'), 'iso-8859-1', 'ltr') add_language('pt_BR', _('Portuguese (Brazil)'), 'iso-8859-1', 'ltr') -add_language('ro', _('Romanian'), 'iso-8859-2', 'ltr') -add_language('ru', _('Russian'), 'koi8-r', 'ltr') +add_language('ro', _('Romanian'), 'utf-8', 'ltr') +add_language('ru', _('Russian'), 'utf-8', 'ltr') add_language('sk', _('Slovak'), 'utf-8', 'ltr') add_language('sl', _('Slovenian'), 'iso-8859-2', 'ltr') add_language('sr', _('Serbian'), 'utf-8', 'ltr') |