PageRenderTime 64ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 1ms

/branches/Release_2_1-maint/mailman/Mailman/Defaults.py.in

#
Autoconf | 1368 lines | 400 code | 198 blank | 770 comment | 5 complexity | 7a3de5ce022a63c632edbe46deb51267 MD5 | raw file
Possible License(s): GPL-2.0
  1. # -*- python -*-
  2. # Copyright (C) 1998-2007 by the Free Software Foundation, Inc.
  3. #
  4. # This program is free software; you can redistribute it and/or
  5. # modify it under the terms of the GNU General Public License
  6. # as published by the Free Software Foundation; either version 2
  7. # of the License, or (at your option) any later version.
  8. #
  9. # This program is distributed in the hope that it will be useful,
  10. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. # GNU General Public License for more details.
  13. #
  14. # You should have received a copy of the GNU General Public License
  15. # along with this program; if not, write to the Free Software
  16. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
  17. # USA.
  18. """Distributed default settings for significant Mailman config variables."""
  19. # NEVER make site configuration changes to this file. ALWAYS make them in
  20. # mm_cfg.py instead, in the designated area. See the comments in that file
  21. # for details.
  22. import os
  23. def seconds(s): return s
  24. def minutes(m): return m * 60
  25. def hours(h): return h * 60 * 60
  26. def days(d): return d * 60 * 60 * 24
  27. # Some convenient constants
  28. try:
  29. True, False
  30. except NameError:
  31. True = 1
  32. False = 0
  33. Yes = yes = On = on = True
  34. No = no = Off = off = False
  35. #####
  36. # General system-wide defaults
  37. #####
  38. # Should image logos be used? Set this to 0 to disable image logos from "our
  39. # sponsors" and just use textual links instead (this will also disable the
  40. # shortcut "favicon"). Otherwise, this should contain the URL base path to
  41. # the logo images (and must contain the trailing slash).. If you want to
  42. # disable Mailman's logo footer altogther, hack
  43. # Mailman/htmlformat.py:MailmanLogo(), which also contains the hardcoded links
  44. # and image names.
  45. IMAGE_LOGOS = '/icons/'
  46. # The name of the Mailman favicon
  47. SHORTCUT_ICON = 'mm-icon.png'
  48. # Don't change MAILMAN_URL, unless you want to point it at one of the mirrors.
  49. MAILMAN_URL = 'http://www.gnu.org/software/mailman/index.html'
  50. #MAILMAN_URL = 'http://www.list.org/'
  51. #MAILMAN_URL = 'http://mailman.sf.net/'
  52. # Mailman needs to know about (at least) two fully-qualified domain names
  53. # (fqdn); 1) the hostname used in your urls, and 2) the hostname used in email
  54. # addresses for your domain. For example, if people visit your Mailman system
  55. # with "http://www.dom.ain/mailman" then your url fqdn is "www.dom.ain", and
  56. # if people send mail to your system via "yourlist@dom.ain" then your email
  57. # fqdn is "dom.ain". DEFAULT_URL_HOST controls the former, and
  58. # DEFAULT_EMAIL_HOST controls the latter. Mailman also needs to know how to
  59. # map from one to the other (this is especially important if you're running
  60. # with virtual domains). You use "add_virtualhost(urlfqdn, emailfqdn)" to add
  61. # new mappings.
  62. #
  63. # If you don't need to change DEFAULT_EMAIL_HOST and DEFAULT_URL_HOST in your
  64. # mm_cfg.py, then you're done; the default mapping is added automatically. If
  65. # however you change either variable in your mm_cfg.py, then be sure to also
  66. # include the following:
  67. #
  68. # add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
  69. #
  70. # because otherwise the default mappings won't be correct.
  71. DEFAULT_EMAIL_HOST = '@MAILHOST@'
  72. DEFAULT_URL_HOST = '@URLHOST@'
  73. DEFAULT_URL_PATTERN = 'http://%s/mailman/'
  74. # DEFAULT_HOST_NAME has been replaced with DEFAULT_EMAIL_HOST, however some
  75. # sites may have the former in their mm_cfg.py files. If so, we'll believe
  76. # that, otherwise we'll believe DEFAULT_EMAIL_HOST. Same for DEFAULT_URL.
  77. DEFAULT_HOST_NAME = None
  78. DEFAULT_URL = None
  79. HOME_PAGE = 'index.html'
  80. MAILMAN_SITE_LIST = 'mailman'
  81. # Normally when a site administrator authenticates to a web page with the site
  82. # password, they get a cookie which authorizes them as the list admin. It
  83. # makes me nervous to hand out site auth cookies because if this cookie is
  84. # cracked or intercepted, the intruder will have access to every list on the
  85. # site. OTOH, it's dang handy to not have to re-authenticate to every list on
  86. # the site. Set this value to Yes to allow site admin cookies.
  87. ALLOW_SITE_ADMIN_COOKIES = No
  88. # Command that is used to convert text/html parts into plain text. This
  89. # should output results to standard output. %(filename)s will contain the
  90. # name of the temporary file that the program should operate on.
  91. HTML_TO_PLAIN_TEXT_COMMAND = '/usr/bin/lynx -dump %(filename)s'
  92. #####
  93. # Virtual domains
  94. #####
  95. # Set up your virtual host mappings here. This is primarily used for the
  96. # thru-the-web list creation, so its effects are currently fairly limited.
  97. # Use add_virtualhost() call to add new mappings. The keys are strings as
  98. # determined by Utils.get_domain(), the values are as appropriate for
  99. # DEFAULT_HOST_NAME.
  100. VIRTUAL_HOSTS = {}
  101. # When set to Yes, the listinfo and admin overviews of lists on the machine
  102. # will be confined to only those lists whose web_page_url configuration option
  103. # host is included within the URL by which the page is visited - only those
  104. # "on the virtual host". When set to No, all advertised (i.e. public) lists
  105. # are included in the overview.
  106. VIRTUAL_HOST_OVERVIEW = On
  107. # Helper function; use this in your mm_cfg.py files. If optional emailhost is
  108. # omitted it defaults to urlhost with the first name stripped off, e.g.
  109. #
  110. # add_virtualhost('www.dom.ain')
  111. # VIRTUAL_HOST['www.dom.ain']
  112. # ==> 'dom.ain'
  113. #
  114. def add_virtualhost(urlhost, emailhost=None):
  115. DOT = '.'
  116. if emailhost is None:
  117. emailhost = DOT.join(urlhost.split(DOT)[1:])
  118. VIRTUAL_HOSTS[urlhost.lower()] = emailhost.lower()
  119. # And set the default
  120. add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
  121. # Note that you will want to run bin/fix_url.py to change the domain of an
  122. # existing list. bin/fix_url.py must be run within the bin/withlist script,
  123. # like so: bin/withlist -l -r bin/fix_url.py <listname>
  124. #####
  125. # Spam avoidance defaults
  126. #####
  127. # This variable contains a list of 2-tuple of the format (header, regex) which
  128. # the Mailman/Handlers/SpamDetect.py module uses to match against the current
  129. # message. If the regex matches the given header in the current message, then
  130. # it is flagged as spam. header is case-insensitive and should not include
  131. # the trailing colon. regex is always matched with re.IGNORECASE.
  132. #
  133. # Note that the more searching done, the slower the whole process gets. Spam
  134. # detection is run against all messages coming to either the list, or the
  135. # -owners address, unless the message is explicitly approved.
  136. KNOWN_SPAMMERS = []
  137. #####
  138. # Web UI defaults
  139. #####
  140. # Almost all the colors used in Mailman's web interface are parameterized via
  141. # the following variables. This lets you easily change the color schemes for
  142. # your preferences without having to do major surgery on the source code.
  143. # Note that in general, the template colors are not included here since it is
  144. # easy enough to override the default template colors via site-wide,
  145. # vdomain-wide, or list-wide specializations.
  146. WEB_BG_COLOR = 'white' # Page background
  147. WEB_HEADER_COLOR = '#99ccff' # Major section headers
  148. WEB_SUBHEADER_COLOR = '#fff0d0' # Minor section headers
  149. WEB_ADMINITEM_COLOR = '#dddddd' # Option field background
  150. WEB_ADMINPW_COLOR = '#99cccc' # Password box color
  151. WEB_ERROR_COLOR = 'red' # Error message foreground
  152. WEB_LINK_COLOR = '' # If true, forces LINK=
  153. WEB_ALINK_COLOR = '' # If true, forces ALINK=
  154. WEB_VLINK_COLOR = '' # If true, forces VLINK=
  155. WEB_HIGHLIGHT_COLOR = '#dddddd' # If true, alternating rows
  156. # in listinfo & admin display
  157. #####
  158. # Archive defaults
  159. #####
  160. # The url template for the public archives. This will be used in several
  161. # places, including the List-Archive: header, links to the archive on the
  162. # list's listinfo page, and on the list's admin page.
  163. #
  164. # This should be a string with "%(listname)s" somewhere in it. Mailman will
  165. # interpolate the name of the list into this. You can also include a
  166. # "%(hostname)s" in the string, into which Mailman will interpolate
  167. # the host name (usually DEFAULT_URL_HOST).
  168. PUBLIC_ARCHIVE_URL = 'http://%(hostname)s/pipermail/%(listname)s'
  169. # Are archives on or off by default?
  170. DEFAULT_ARCHIVE = On
  171. # Are archives public or private by default?
  172. # 0=public, 1=private
  173. DEFAULT_ARCHIVE_PRIVATE = 0
  174. # ARCHIVE_TO_MBOX
  175. #-1 - do not do any archiving
  176. # 0 - do not archive to mbox, use builtin mailman html archiving only
  177. # 1 - archive to mbox to use an external archiving mechanism only
  178. # 2 - archive to both mbox and builtin mailman html archiving -
  179. # use this to make both external archiving mechanism work and
  180. # mailman's builtin html archiving. the flat mail file can be
  181. # useful for searching, external archivers, etc.
  182. ARCHIVE_TO_MBOX = 2
  183. # 0 - yearly
  184. # 1 - monthly
  185. # 2 - quarterly
  186. # 3 - weekly
  187. # 4 - daily
  188. DEFAULT_ARCHIVE_VOLUME_FREQUENCY = 1
  189. DEFAULT_DIGEST_VOLUME_FREQUENCY = 1
  190. # These variables control the use of an external archiver. Normally if
  191. # archiving is turned on (see ARCHIVE_TO_MBOX above and the list's archive*
  192. # attributes) the internal Pipermail archiver is used. This is the default if
  193. # both of these variables are set to No. When either is set, the value should
  194. # be a shell command string which will get passed to os.popen(). This string
  195. # can contain the following substitution strings:
  196. #
  197. # %(listname)s -- gets the internal name of the list
  198. # %(hostname)s -- gets the email hostname for the list
  199. #
  200. # being archived will be substituted for this. Please note that os.popen() is
  201. # used.
  202. #
  203. # Note that if you set one of these variables, you should set both of them
  204. # (they can be the same string). This will mean your external archiver will
  205. # be used regardless of whether public or private archives are selected.
  206. PUBLIC_EXTERNAL_ARCHIVER = No
  207. PRIVATE_EXTERNAL_ARCHIVER = No
  208. # A filter module that converts from multipart messages to "flat" messages
  209. # (i.e. containing a single payload). This is required for Pipermail, and you
  210. # may want to set it to 0 for external archivers. You can also replace it
  211. # with your own module as long as it contains a process() function that takes
  212. # a MailList object and a Message object. It should raise
  213. # Errors.DiscardMessage if it wants to throw the message away. Otherwise it
  214. # should modify the Message object as necessary.
  215. ARCHIVE_SCRUBBER = 'Mailman.Handlers.Scrubber'
  216. # Control parameter whether Mailman.Handlers.Scrubber should use message
  217. # attachment's filename as is indicated by the filename parameter or use
  218. # 'attachement-xxx' instead. The default is set True because the applications
  219. # on PC and Mac begin to use longer non-ascii filenames. Historically, it
  220. # was set False in 2.1.6 for backward compatiblity but it was reset to True
  221. # for safer operation in mailman-2.1.7.
  222. SCRUBBER_DONT_USE_ATTACHMENT_FILENAME = True
  223. # Use of attachment filename extension per se is may be dangerous because
  224. # virus fakes it. You can set this True if you filter the attachment by
  225. # filename extension
  226. SCRUBBER_USE_ATTACHMENT_FILENAME_EXTENSION = False
  227. # This variable defines what happens to text/html subparts. They can be
  228. # stripped completely, escaped, or filtered through an external program. The
  229. # legal values are:
  230. # 0 - Strip out text/html parts completely, leaving a notice of the removal in
  231. # the message. If the outer part is text/html, the entire message is
  232. # discarded.
  233. # 1 - Remove any embedded text/html parts, leaving them as HTML-escaped
  234. # attachments which can be separately viewed. Outer text/html parts are
  235. # simply HTML-escaped.
  236. # 2 - Leave it inline, but HTML-escape it
  237. # 3 - Remove text/html as attachments but don't HTML-escape them. Note: this
  238. # is very dangerous because it essentially means anybody can send an HTML
  239. # email to your site containing evil JavaScript or web bugs, or other
  240. # nasty things, and folks viewing your archives will be susceptible. You
  241. # should only consider this option if you do heavy moderation of your list
  242. # postings.
  243. #
  244. # Note: given the current archiving code, it is not possible to leave
  245. # text/html parts inline and un-escaped. I wouldn't think it'd be a good idea
  246. # to do anyway.
  247. #
  248. # The value can also be a string, in which case it is the name of a command to
  249. # filter the HTML page through. The resulting output is left in an attachment
  250. # or as the entirety of the message when the outer part is text/html. The
  251. # format of the string must include a "%(filename)s" which will contain the
  252. # name of the temporary file that the program should operate on. It should
  253. # write the processed message to stdout. Set this to
  254. # HTML_TO_PLAIN_TEXT_COMMAND to specify an HTML to plain text conversion
  255. # program.
  256. ARCHIVE_HTML_SANITIZER = 1
  257. # Set this to Yes to enable gzipping of the downloadable archive .txt file.
  258. # Note that this is /extremely/ inefficient, so an alternative is to just
  259. # collect the messages in the associated .txt file and run a cron job every
  260. # night to generate the txt.gz file. See cron/nightly_gzip for details.
  261. GZIP_ARCHIVE_TXT_FILES = No
  262. # This sets the default `clobber date' policy for the archiver. When a
  263. # message is to be archived either by Pipermail or an external archiver,
  264. # Mailman can modify the Date: header to be the date the message was received
  265. # instead of the Date: in the original message. This is useful if you
  266. # typically receive messages with outrageous dates. Set this to 0 to retain
  267. # the date of the original message, or to 1 to always clobber the date. Set
  268. # it to 2 to perform `smart overrides' on the date; when the date is outside
  269. # ARCHIVER_ALLOWABLE_SANE_DATE_SKEW (either too early or too late), then the
  270. # received date is substituted instead.
  271. ARCHIVER_CLOBBER_DATE_POLICY = 2
  272. ARCHIVER_ALLOWABLE_SANE_DATE_SKEW = days(15)
  273. # Pipermail archives contain the raw email addresses of the posting authors.
  274. # Some view this as a goldmine for spam harvesters. Set this to Yes to
  275. # moderately obscure email addresses, but note that this breaks mailto: URLs
  276. # in the archives too.
  277. ARCHIVER_OBSCURES_EMAILADDRS = Yes
  278. # Pipermail assumes that message bodies contain US-ASCII text.
  279. # Change this option to define a different character set to be used as
  280. # the default character set for the archive. The term "character set"
  281. # is used in MIME to refer to a method of converting a sequence of
  282. # octets into a sequence of characters. If you change the default
  283. # charset, you might need to add it to VERBATIM_ENCODING below.
  284. DEFAULT_CHARSET = None
  285. # Most character set encodings require special HTML entity characters to be
  286. # quoted, otherwise they won't look right in the Pipermail archives. However
  287. # some character sets must not quote these characters so that they can be
  288. # rendered properly in the browsers. The primary issue is multi-byte
  289. # encodings where the octet 0x26 does not always represent the & character.
  290. # This variable contains a list of such characters sets which are not
  291. # HTML-quoted in the archives.
  292. VERBATIM_ENCODING = ['iso-2022-jp']
  293. # When the archive is public, should Mailman also make the raw Unix mbox file
  294. # publically available?
  295. PUBLIC_MBOX = No
  296. #####
  297. # Delivery defaults
  298. #####
  299. # Final delivery module for outgoing mail. This handler is used for message
  300. # delivery to the list via the smtpd, and to an individual user. This value
  301. # must be a string naming a module in the Mailman.Handlers package.
  302. #
  303. # WARNING: Sendmail has security holes and should be avoided. In fact, you
  304. # must read the Mailman/Handlers/Sendmail.py file before it will work for
  305. # you.
  306. #
  307. #DELIVERY_MODULE = 'Sendmail'
  308. DELIVERY_MODULE = 'SMTPDirect'
  309. # MTA should name a module in Mailman/MTA which provides the MTA specific
  310. # functionality for creating and removing lists. Some MTAs like Exim can be
  311. # configured to automatically recognize new lists, in which case the MTA
  312. # variable should be set to None. Use 'Manual' to print new aliases to
  313. # standard out (or send an email to the site list owner) for manual twiddling
  314. # of an /etc/aliases style file. Use 'Postfix' if you are using the Postfix
  315. # MTA -- but then also see POSTFIX_STYLE_VIRTUAL_DOMAINS.
  316. MTA = 'Manual'
  317. # If you set MTA='Postfix', then you also want to set the following variable,
  318. # depending on whether you're using virtual domains in Postfix, and which
  319. # style of virtual domain you're using. Set this to the empty list if you're
  320. # not using virtual domains in Postfix, or if you're using Sendmail-style
  321. # virtual domains (where all addresses are visible in all domains). If you're
  322. # using Postfix-style virtual domains, where aliases should only show up in
  323. # the virtual domain, set this variable to the list of host_name values to
  324. # write separate virtual entries for. I.e. if you run dom1.ain, dom2.ain, and
  325. # dom3.ain, but only dom2 and dom3 are virtual, set this variable to the list
  326. # ['dom2.ain', 'dom3.ain']. Matches are done against the host_name attribute
  327. # of the mailing lists. See the Postfix section of the installation manual
  328. # for details.
  329. POSTFIX_STYLE_VIRTUAL_DOMAINS = []
  330. # These variables describe the program to use for regenerating the aliases.db
  331. # and virtual-mailman.db files, respectively, from the associated plain text
  332. # files. The file being updated will be appended to this string (with a
  333. # separating space), so it must be appropriate for os.system().
  334. POSTFIX_ALIAS_CMD = '/usr/sbin/postalias'
  335. POSTFIX_MAP_CMD = '/usr/sbin/postmap'
  336. # Ceiling on the number of recipients that can be specified in a single SMTP
  337. # transaction. Set to 0 to submit the entire recipient list in one
  338. # transaction. Only used with the SMTPDirect DELIVERY_MODULE.
  339. SMTP_MAX_RCPTS = 500
  340. # Ceiling on the number of SMTP sessions to perform on a single socket
  341. # connection. Some MTAs have limits. Set this to 0 to do as many as we like
  342. # (i.e. your MTA has no limits). Set this to some number great than 0 and
  343. # Mailman will close the SMTP connection and re-open it after this number of
  344. # consecutive sessions.
  345. SMTP_MAX_SESSIONS_PER_CONNECTION = 0
  346. # Maximum number of simultaneous subthreads that will be used for SMTP
  347. # delivery. After the recipients list is chunked according to SMTP_MAX_RCPTS,
  348. # each chunk is handed off to the smptd by a separate such thread. If your
  349. # Python interpreter was not built for threads, this feature is disabled. You
  350. # can explicitly disable it in all cases by setting MAX_DELIVERY_THREADS to
  351. # 0. This feature is only supported with the SMTPDirect DELIVERY_MODULE.
  352. #
  353. # NOTE: This is an experimental feature and limited testing shows that it may
  354. # in fact degrade performance, possibly due to Python's global interpreter
  355. # lock. Use with caution.
  356. MAX_DELIVERY_THREADS = 0
  357. # SMTP host and port, when DELIVERY_MODULE is 'SMTPDirect'. Make sure the
  358. # host exists and is resolvable (i.e., if it's the default of "localhost" be
  359. # sure there's a localhost entry in your /etc/hosts file!)
  360. SMTPHOST = 'localhost'
  361. SMTPPORT = 0 # default from smtplib
  362. # Command for direct command pipe delivery to sendmail compatible program,
  363. # when DELIVERY_MODULE is 'Sendmail'.
  364. SENDMAIL_CMD = '/usr/lib/sendmail'
  365. # Set these variables if you need to authenticate to your NNTP server for
  366. # Usenet posting or reading. If no authentication is necessary, specify None
  367. # for both variables.
  368. NNTP_USERNAME = None
  369. NNTP_PASSWORD = None
  370. # Set this if you have an NNTP server you prefer gatewayed lists to use.
  371. DEFAULT_NNTP_HOST = ''
  372. # These variables controls how headers must be cleansed in order to be
  373. # accepted by your NNTP server. Some servers like INN reject messages
  374. # containing prohibited headers, or duplicate headers. The NNTP server may
  375. # reject the message for other reasons, but there's little that can be
  376. # programmatically done about that. See Mailman/Queue/NewsRunner.py
  377. #
  378. # First, these headers (case ignored) are removed from the original message.
  379. NNTP_REMOVE_HEADERS = ['nntp-posting-host', 'nntp-posting-date', 'x-trace',
  380. 'x-complaints-to', 'xref', 'date-received', 'posted',
  381. 'posting-version', 'relay-version', 'received']
  382. # Next, these headers are left alone, unless there are duplicates in the
  383. # original message. Any second and subsequent headers are rewritten to the
  384. # second named header (case preserved).
  385. NNTP_REWRITE_DUPLICATE_HEADERS = [
  386. ('to', 'X-Original-To'),
  387. ('cc', 'X-Original-Cc'),
  388. ('content-transfer-encoding', 'X-Original-Content-Transfer-Encoding'),
  389. ('mime-version', 'X-MIME-Version'),
  390. ]
  391. # Some list posts and mail to the -owner address may contain DomainKey or
  392. # DomainKeys Identified Mail (DKIM) signature headers <http://www.dkim.org/>.
  393. # Various list transformations to the message such as adding a list header or
  394. # footer or scrubbing attachments or even reply-to munging can break these
  395. # signatures. It is generally felt that these signatures have value, even if
  396. # broken and even if the outgoing message is resigned. However, some sites
  397. # may wish to remove these headers by setting this to Yes.
  398. REMOVE_DKIM_HEADERS = No
  399. # All `normal' messages which are delivered to the entire list membership go
  400. # through this pipeline of handler modules. Lists themselves can override the
  401. # global pipeline by defining a `pipeline' attribute.
  402. GLOBAL_PIPELINE = [
  403. # These are the modules that do tasks common to all delivery paths.
  404. 'SpamDetect',
  405. 'Approve',
  406. 'Replybot',
  407. 'Moderate',
  408. 'Hold',
  409. 'MimeDel',
  410. 'Scrubber',
  411. 'Emergency',
  412. 'Tagger',
  413. 'CalcRecips',
  414. 'AvoidDuplicates',
  415. 'Cleanse',
  416. 'CleanseDKIM',
  417. 'CookHeaders',
  418. # And now we send the message to the digest mbox file, and to the arch and
  419. # news queues. Runners will provide further processing of the message,
  420. # specific to those delivery paths.
  421. 'ToDigest',
  422. 'ToArchive',
  423. 'ToUsenet',
  424. # Now we'll do a few extra things specific to the member delivery
  425. # (outgoing) path, finally leaving the message in the outgoing queue.
  426. 'AfterDelivery',
  427. 'Acknowledge',
  428. 'ToOutgoing',
  429. ]
  430. # This is the pipeline which messages sent to the -owner address go through
  431. OWNER_PIPELINE = [
  432. 'SpamDetect',
  433. 'Replybot',
  434. 'CleanseDKIM',
  435. 'OwnerRecips',
  436. 'ToOutgoing',
  437. ]
  438. # This defines syslog() format strings for the SMTPDirect delivery module (see
  439. # DELIVERY_MODULE above). Valid %()s string substitutions include:
  440. #
  441. # time -- the time in float seconds that it took to complete the smtp
  442. # hand-off of the message from Mailman to your smtpd.
  443. #
  444. # size -- the size of the entire message, in bytes
  445. #
  446. # #recips -- the number of actual recipients for this message.
  447. #
  448. # #refused -- the number of smtp refused recipients (use this only in
  449. # SMTP_LOG_REFUSED).
  450. #
  451. # listname -- the `internal' name of the mailing list for this posting
  452. #
  453. # msg_<header> -- the value of the delivered message's given header. If
  454. # the message had no such header, then "n/a" will be used. Note though
  455. # that if the message had multiple such headers, then it is undefined
  456. # which will be used.
  457. #
  458. # allmsg_<header> - Same as msg_<header> above, but if there are multiple
  459. # such headers in the message, they will all be printed, separated by
  460. # comma-space.
  461. #
  462. # sender -- the "sender" of the messages, which will be the From: or
  463. # envelope-sender as determeined by the USE_ENVELOPE_SENDER variable
  464. # below.
  465. #
  466. # The format of the entries is a 2-tuple with the first element naming the
  467. # file in logs/ to print the message to, and the second being a format string
  468. # appropriate for Python's %-style string interpolation. The file name is
  469. # arbitrary; qfiles/<name> will be created automatically if it does not
  470. # exist.
  471. # The format of the message printed for every delivered message, regardless of
  472. # whether the delivery was successful or not. Set to None to disable the
  473. # printing of this log message.
  474. SMTP_LOG_EVERY_MESSAGE = (
  475. 'smtp',
  476. '%(msg_message-id)s smtp to %(listname)s for %(#recips)d recips, completed in %(time).3f seconds')
  477. # This will only be printed if there were no immediate smtp failures.
  478. # Mutually exclusive with SMTP_LOG_REFUSED.
  479. SMTP_LOG_SUCCESS = (
  480. 'post',
  481. 'post to %(listname)s from %(sender)s, size=%(size)d, message-id=%(msg_message-id)s, success')
  482. # This will only be printed if there were any addresses which encountered an
  483. # immediate smtp failure. Mutually exclusive with SMTP_LOG_SUCCESS.
  484. SMTP_LOG_REFUSED = (
  485. 'post',
  486. 'post to %(listname)s from %(sender)s, size=%(size)d, message-id=%(msg_message-id)s, %(#refused)d failures')
  487. # This will be logged for each specific recipient failure. Additional %()s
  488. # keys are:
  489. #
  490. # recipient -- the failing recipient address
  491. # failcode -- the smtp failure code
  492. # failmsg -- the actual smtp message, if available
  493. SMTP_LOG_EACH_FAILURE = (
  494. 'smtp-failure',
  495. 'delivery to %(recipient)s failed with code %(failcode)d: %(failmsg)s')
  496. # These variables control the format and frequency of VERP-like delivery for
  497. # better bounce detection. VERP is Variable Envelope Return Path, defined
  498. # here:
  499. #
  500. # http://cr.yp.to/proto/verp.txt
  501. #
  502. # This involves encoding the address of the recipient as we (Mailman) know it
  503. # into the envelope sender address (i.e. the SMTP `MAIL FROM:' address).
  504. # Thus, no matter what kind of forwarding the recipient has in place, should
  505. # it eventually bounce, we will receive an unambiguous notice of the bouncing
  506. # address.
  507. #
  508. # However, we're technically only "VERP-like" because we're doing the envelope
  509. # sender encoding in Mailman, not in the MTA. We do require cooperation from
  510. # the MTA, so you must be sure your MTA can be configured for extended address
  511. # semantics.
  512. #
  513. # The first variable describes how to encode VERP envelopes. It must contain
  514. # these three string interpolations:
  515. #
  516. # %(bounces)s -- the list-bounces mailbox will be set here
  517. # %(mailbox)s -- the recipient's mailbox will be set here
  518. # %(host)s -- the recipient's host name will be set here
  519. #
  520. # This example uses the default below.
  521. #
  522. # FQDN list address is: mylist@dom.ain
  523. # Recipient is: aperson@a.nother.dom
  524. #
  525. # The envelope sender will be mylist-bounces+aperson=a.nother.dom@dom.ain
  526. #
  527. # Note that your MTA /must/ be configured to deliver such an addressed message
  528. # to mylist-bounces!
  529. VERP_FORMAT = '%(bounces)s+%(mailbox)s=%(host)s'
  530. # The second describes a regular expression to unambiguously decode such an
  531. # address, which will be placed in the To: header of the bounce message by the
  532. # bouncing MTA. Getting this right is critical -- and tricky. Learn your
  533. # Python regular expressions. It must define exactly three named groups,
  534. # bounces, mailbox and host, with the same definition as above. It will be
  535. # compiled case-insensitively.
  536. VERP_REGEXP = r'^(?P<bounces>[^+]+?)\+(?P<mailbox>[^=]+)=(?P<host>[^@]+)@.*$'
  537. # VERP format and regexp for probe messages
  538. VERP_PROBE_FORMAT = '%(bounces)s+%(token)s'
  539. VERP_PROBE_REGEXP = r'^(?P<bounces>[^+]+?)\+(?P<token>[^@]+)@.*$'
  540. # Set this Yes to activate VERP probe for disabling by bounce
  541. VERP_PROBES = No
  542. # A perfect opportunity for doing VERP is the password reminders, which are
  543. # already addressed individually to each recipient. Set this to Yes to enable
  544. # VERPs on all password reminders.
  545. VERP_PASSWORD_REMINDERS = No
  546. # Another good opportunity is when regular delivery is personalized. Here
  547. # again, we're already incurring the performance hit for addressing each
  548. # individual recipient. Set this to Yes to enable VERPs on all personalized
  549. # regular deliveries (personalized digests aren't supported yet).
  550. VERP_PERSONALIZED_DELIVERIES = No
  551. # And finally, we can VERP normal, non-personalized deliveries. However,
  552. # because it can be a significant performance hit, we allow you to decide how
  553. # often to VERP regular deliveries. This is the interval, in number of
  554. # messages, to do a VERP recipient address. The same variable controls both
  555. # regular and digest deliveries. Set to 0 to disable occasional VERPs, set to
  556. # 1 to VERP every delivery, or to some number > 1 for only occasional VERPs.
  557. VERP_DELIVERY_INTERVAL = 0
  558. # For nicer confirmation emails, use a VERP-like format which encodes the
  559. # confirmation cookie in the reply address. This lets us put a more user
  560. # friendly Subject: on the message, but requires cooperation from the MTA.
  561. # Format is like VERP_FORMAT above, but with the following substitutions:
  562. #
  563. # %(addr)s -- the list-confirm mailbox will be set here
  564. # %(cookie)s -- the confirmation cookie will be set here
  565. VERP_CONFIRM_FORMAT = '%(addr)s+%(cookie)s'
  566. # This is analogous to VERP_REGEXP, but for splitting apart the
  567. # VERP_CONFIRM_FORMAT. MUAs have been observed that mung
  568. # From: local_part@host
  569. # into
  570. # To: "local_part" <local_part@host>
  571. # when replying, so we skip everything up to '<' if any.
  572. VERP_CONFIRM_REGEXP = r'^(.*<)?(?P<addr>[^+]+?)\+(?P<cookie>[^@]+)@.*$'
  573. # Set this to Yes to enable VERP-like (more user friendly) confirmations
  574. VERP_CONFIRMATIONS = No
  575. # This is the maximum number of automatic responses sent to an address because
  576. # of -request messages or posting hold messages. This limit prevents response
  577. # loops between Mailman and misconfigured remote email robots. Mailman
  578. # already inhibits automatic replies to any message labeled with a header
  579. # "Precendence: bulk|list|junk". This is a fallback safety valve so it should
  580. # be set fairly high. Set to 0 for no limit (probably useful only for
  581. # debugging).
  582. MAX_AUTORESPONSES_PER_DAY = 10
  583. #####
  584. # Qrunner defaults
  585. #####
  586. # Which queues should the qrunner master watchdog spawn? This is a list of
  587. # 2-tuples containing the name of the qrunner class (which must live in a
  588. # module of the same name within the Mailman.Queue package), and the number of
  589. # parallel processes to fork for each qrunner. If more than one process is
  590. # used, each will take an equal subdivision of the hash space.
  591. # BAW: Eventually we may support weighted hash spaces.
  592. # BAW: Although not enforced, the # of slices must be a power of 2
  593. QRUNNERS = [
  594. ('ArchRunner', 1), # messages for the archiver
  595. ('BounceRunner', 1), # for processing the qfile/bounces directory
  596. ('CommandRunner', 1), # commands and bounces from the outside world
  597. ('IncomingRunner', 1), # posts from the outside world
  598. ('NewsRunner', 1), # outgoing messages to the nntpd
  599. ('OutgoingRunner', 1), # outgoing messages to the smtpd
  600. ('VirginRunner', 1), # internally crafted (virgin birth) messages
  601. ('RetryRunner', 1), # retry temporarily failed deliveries
  602. ]
  603. # Set this to Yes to use the `Maildir' delivery option. If you change this
  604. # you will need to re-run bin/genaliases for MTAs that don't use list
  605. # auto-detection.
  606. #
  607. # WARNING: If you want to use Maildir delivery, you /must/ start Mailman's
  608. # qrunner as root, or you will get permission problems.
  609. #
  610. # NOTE: Maildir delivery is experimental for Mailman 2.1.
  611. USE_MAILDIR = No
  612. # NOTE: If you set USE_MAILDIR = Yes, add the following line to your mm_cfg.py
  613. # file (uncommented of course!)
  614. # QRUNNERS.append(('MaildirRunner', 1))
  615. # After processing every file in the qrunner's slice, how long should the
  616. # runner sleep for before checking the queue directory again for new files?
  617. # This can be a fraction of a second, or zero to check immediately
  618. # (essentially busy-loop as fast as possible).
  619. QRUNNER_SLEEP_TIME = seconds(1)
  620. # When a message that is unparsable (by the email package) is received, what
  621. # should we do with it? The most common cause of unparsable messages is
  622. # broken MIME encapsulation, and the most common cause of that is viruses like
  623. # Nimda. Set this variable to No to discard such messages, or to Yes to store
  624. # them in qfiles/bad subdirectory.
  625. QRUNNER_SAVE_BAD_MESSAGES = Yes
  626. # This flag causes Mailman to fsync() its data files after writing and
  627. # flushing its contents. While this ensures the data is written to disk,
  628. # avoiding data loss, it may be a performance killer. Note that this flag
  629. # affects both message pickles and MailList config.pck files.
  630. SYNC_AFTER_WRITE = No
  631. #####
  632. # General defaults
  633. #####
  634. # The default language for this server. Whenever we can't figure out the list
  635. # context or user context, we'll fall back to using this language. See
  636. # LC_DESCRIPTIONS below for legal values.
  637. DEFAULT_SERVER_LANGUAGE = 'en'
  638. # When allowing only members to post to a mailing list, how is the sender of
  639. # the message determined? If this variable is set to Yes, then first the
  640. # message's envelope sender is used, with a fallback to the sender if there is
  641. # no envelope sender. Set this variable to No to always use the sender.
  642. #
  643. # The envelope sender is set by the SMTP delivery and is thus less easily
  644. # spoofed than the sender, which is typically just taken from the From: header
  645. # and thus easily spoofed by the end-user. However, sometimes the envelope
  646. # sender isn't set correctly and this will manifest itself by postings being
  647. # held for approval even if they appear to come from a list member. If you
  648. # are having this problem, set this variable to No, but understand that some
  649. # spoofed messages may get through.
  650. USE_ENVELOPE_SENDER = No
  651. # Membership tests for posting purposes are usually performed by looking at a
  652. # set of headers, passing the test if any of their values match a member of
  653. # the list. Headers are checked in the order given in this variable. The
  654. # value None means use the From_ (envelope sender) header. Field names are
  655. # case insensitive.
  656. SENDER_HEADERS = ('from', None, 'reply-to', 'sender')
  657. # How many members to display at a time on the admin cgi to unsubscribe them
  658. # or change their options?
  659. DEFAULT_ADMIN_MEMBER_CHUNKSIZE = 30
  660. # how many bytes of a held message post should be displayed in the admindb web
  661. # page? Use a negative number to indicate the entire message, regardless of
  662. # size (though this will slow down rendering those pages).
  663. ADMINDB_PAGE_TEXT_LIMIT = 4096
  664. # Set this variable to Yes to allow list owners to delete their own mailing
  665. # lists. You may not want to give them this power, in which case, setting
  666. # this variable to No instead requires list removal to be done by the site
  667. # administrator, via the command line script bin/rmlist.
  668. OWNERS_CAN_DELETE_THEIR_OWN_LISTS = No
  669. # Set this variable to Yes to allow list owners to set the "personalized"
  670. # flags on their mailing lists. Turning these on tells Mailman to send
  671. # separate email messages to each user instead of batching them together for
  672. # delivery to the MTA. This gives each member a more personalized message,
  673. # but can have a heavy impact on the performance of your system.
  674. OWNERS_CAN_ENABLE_PERSONALIZATION = No
  675. # Should held messages be saved on disk as Python pickles or as plain text?
  676. # The former is more efficient since we don't need to go through the
  677. # parse/generate roundtrip each time, but the latter might be preferred if you
  678. # want to edit the held message on disk.
  679. HOLD_MESSAGES_AS_PICKLES = Yes
  680. # This variable controls the order in which list-specific category options are
  681. # presented in the admin cgi page.
  682. ADMIN_CATEGORIES = [
  683. # First column
  684. 'general', 'passwords', 'language', 'members', 'nondigest', 'digest',
  685. # Second column
  686. 'privacy', 'bounce', 'archive', 'gateway', 'autoreply',
  687. 'contentfilter', 'topics',
  688. ]
  689. # See "Bitfield for user options" below; make this a sum of those options, to
  690. # make all new members of lists start with those options flagged. We assume
  691. # by default that people don't want to receive two copies of posts. Note
  692. # however that the member moderation flag's initial value is controlled by the
  693. # list's config variable default_member_moderation.
  694. DEFAULT_NEW_MEMBER_OPTIONS = 256
  695. # Specify the type of passwords to use, when Mailman generates the passwords
  696. # itself, as would be the case for membership requests where the user did not
  697. # fill in a password, or during list creation, when auto-generation of admin
  698. # passwords was selected.
  699. #
  700. # Set this value to Yes for classic Mailman user-friendly(er) passwords.
  701. # These generate semi-pronounceable passwords which are easier to remember.
  702. # Set this value to No to use more cryptographically secure, but harder to
  703. # remember, passwords -- if your operating system and Python version support
  704. # the necessary feature (specifically that /dev/urandom be available).
  705. USER_FRIENDLY_PASSWORDS = Yes
  706. # This value specifies the default lengths of member and list admin passwords
  707. MEMBER_PASSWORD_LENGTH = 8
  708. ADMIN_PASSWORD_LENGTH = 10
  709. #####
  710. # List defaults. NOTE: Changing these values does NOT change the
  711. # configuration of an existing list. It only defines the default for new
  712. # lists you subsequently create.
  713. #####
  714. # Should a list, by default be advertised? What is the default maximum number
  715. # of explicit recipients allowed? What is the default maximum message size
  716. # allowed?
  717. DEFAULT_LIST_ADVERTISED = Yes
  718. DEFAULT_MAX_NUM_RECIPIENTS = 10
  719. DEFAULT_MAX_MESSAGE_SIZE = 40 # KB
  720. # These format strings will be expanded w.r.t. the dictionary for the
  721. # mailing list instance.
  722. DEFAULT_SUBJECT_PREFIX = "[%(real_name)s] "
  723. # DEFAULT_SUBJECT_PREFIX = "[%(real_name)s %%d]" # for numbering
  724. DEFAULT_MSG_HEADER = ""
  725. DEFAULT_MSG_FOOTER = """_______________________________________________
  726. %(real_name)s mailing list
  727. %(real_name)s@%(host_name)s
  728. %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
  729. """
  730. # Where to put subject prefix for 'Re:' messages:
  731. #
  732. # old style: Re: [prefix] test
  733. # new style: [prefix 123] Re: test ... (number is optional)
  734. #
  735. # Old style is default for backward compatibility. New style is forced if a
  736. # list owner set %d (numbering) in prefix. If the site owner had applied new
  737. # style patch (from SF patch area) before, he/she may want to set this No in
  738. # mm_cfg.py.
  739. OLD_STYLE_PREFIXING = Yes
  740. # Scrub regular delivery
  741. DEFAULT_SCRUB_NONDIGEST = False
  742. # Mail command processor will ignore mail command lines after designated max.
  743. DEFAULT_MAIL_COMMANDS_MAX_LINES = 25
  744. # Is the list owner notified of admin requests immediately by mail, as well as
  745. # by daily pending-request reminder?
  746. DEFAULT_ADMIN_IMMED_NOTIFY = Yes
  747. # Is the list owner notified of subscribes/unsubscribes?
  748. DEFAULT_ADMIN_NOTIFY_MCHANGES = No
  749. # Discard held messages after this days
  750. DEFAULT_MAX_DAYS_TO_HOLD = 0
  751. # Should list members, by default, have their posts be moderated?
  752. DEFAULT_DEFAULT_MEMBER_MODERATION = No
  753. # Should non-member posts which are auto-discarded also be forwarded to the
  754. # moderators?
  755. DEFAULT_FORWARD_AUTO_DISCARDS = Yes
  756. # What shold happen to non-member posts which are do not match explicit
  757. # non-member actions?
  758. # 0 = Accept
  759. # 1 = Hold
  760. # 2 = Reject
  761. # 3 = Discard
  762. DEFAULT_GENERIC_NONMEMBER_ACTION = 1
  763. # Bounce if 'To:', 'Cc:', or 'Resent-To:' fields don't explicitly name list?
  764. # This is an anti-spam measure
  765. DEFAULT_REQUIRE_EXPLICIT_DESTINATION = Yes
  766. # Alternate names acceptable as explicit destinations for this list.
  767. DEFAULT_ACCEPTABLE_ALIASES ="""
  768. """
  769. # For mailing lists that have only other mailing lists for members:
  770. DEFAULT_UMBRELLA_LIST = No
  771. # For umbrella lists, the suffix for the account part of address for
  772. # administrative notices (subscription confirmations, password reminders):
  773. DEFAULT_UMBRELLA_MEMBER_ADMIN_SUFFIX = "-owner"
  774. # This variable controls whether monthly password reminders are sent.
  775. DEFAULT_SEND_REMINDERS = Yes
  776. # Send welcome messages to new users?
  777. DEFAULT_SEND_WELCOME_MSG = Yes
  778. # Send goodbye messages to unsubscribed members?
  779. DEFAULT_SEND_GOODBYE_MSG = Yes
  780. # Wipe sender information, and make it look like the list-admin
  781. # address sends all messages
  782. DEFAULT_ANONYMOUS_LIST = No
  783. # {header-name: regexp} spam filtering - we include some for example sake.
  784. DEFAULT_BOUNCE_MATCHING_HEADERS = """
  785. # Lines that *start* with a '#' are comments.
  786. to: friend@public.com
  787. message-id: relay.comanche.denmark.eu
  788. from: list@listme.com
  789. from: .*@uplinkpro.com
  790. """
  791. # Mailman can be configured to "munge" Reply-To: headers for any passing
  792. # messages. One the one hand, there are a lot of good reasons not to munge
  793. # Reply-To: but on the other, people really seem to want this feature. See
  794. # the help for reply_goes_to_list in the web UI for links discussing the
  795. # issue.
  796. # 0 - Reply-To: not munged
  797. # 1 - Reply-To: set back to the list
  798. # 2 - Reply-To: set to an explicit value (reply_to_address)
  799. DEFAULT_REPLY_GOES_TO_LIST = 0
  800. # Mailman can be configured to strip any existing Reply-To: header, or simply
  801. # extend any existing Reply-To: with one based on the above setting.
  802. DEFAULT_FIRST_STRIP_REPLY_TO = No
  803. # SUBSCRIBE POLICY
  804. # 0 - open list (only when ALLOW_OPEN_SUBSCRIBE is set to 1) **
  805. # 1 - confirmation required for subscribes
  806. # 2 - admin approval required for subscribes
  807. # 3 - both confirmation and admin approval required
  808. #
  809. # ** please do not choose option 0 if you are not allowing open
  810. # subscribes (next variable)
  811. DEFAULT_SUBSCRIBE_POLICY = 1
  812. # Does this site allow completely unchecked subscriptions?
  813. ALLOW_OPEN_SUBSCRIBE = No
  814. # The default policy for unsubscriptions. 0 (unmoderated unsubscribes) is
  815. # highly recommended!
  816. # 0 - unmoderated unsubscribes
  817. # 1 - unsubscribes require approval
  818. DEFAULT_UNSUBSCRIBE_POLICY = 0
  819. # Private_roster == 0: anyone can see, 1: members only, 2: admin only.
  820. DEFAULT_PRIVATE_ROSTER = 1
  821. # When exposing members, make them unrecognizable as email addrs, so
  822. # web-spiders can't pick up addrs for spam purposes.
  823. DEFAULT_OBSCURE_ADDRESSES = Yes
  824. # RFC 2369 defines List-* headers which are added to every message sent
  825. # through to the mailing list membership. These are a very useful aid to end
  826. # users and should always be added. However, not all MUAs are compliant and
  827. # if a list's membership has many such users, they may clamor for these
  828. # headers to be suppressed. By setting this variable to Yes, list owners will
  829. # be given the option to suppress these headers. By setting it to No, list
  830. # owners will not be given the option to suppress these headers (although some
  831. # header suppression may still take place, i.e. for announce-only lists, or
  832. # lists with no archives).
  833. ALLOW_RFC2369_OVERRIDES = Yes
  834. # Defaults for content filtering on mailing lists. DEFAULT_FILTER_CONTENT is
  835. # a flag which if set to true, turns on content filtering.
  836. DEFAULT_FILTER_CONTENT = No
  837. # DEFAULT_FILTER_MIME_TYPES is a list of MIME types to be removed. This is a
  838. # list of strings of the format "maintype/subtype" or simply "maintype".
  839. # E.g. "text/html" strips all html attachments while "image" strips all image
  840. # types regardless of subtype (jpeg, gif, etc.).
  841. DEFAULT_FILTER_MIME_TYPES = []
  842. # DEFAULT_PASS_MIME_TYPES is a list of MIME types to be passed through.
  843. # Format is the same as DEFAULT_FILTER_MIME_TYPES
  844. DEFAULT_PASS_MIME_TYPES = ['multipart/mixed',
  845. 'multipart/alternative',
  846. 'text/plain']
  847. # DEFAULT_FILTER_FILENAME_EXTENSIONS is a list of filename extensions to be
  848. # removed. It is useful because many viruses fake their content-type as
  849. # harmless ones while keep their extension as executable and expect to be
  850. # executed when victims 'open' them.
  851. DEFAULT_FILTER_FILENAME_EXTENSIONS = [
  852. 'exe', 'bat', 'cmd', 'com', 'pif', 'scr', 'vbs', 'cpl'
  853. ]
  854. # DEFAULT_PASS_FILENAME_EXTENSIONS is a list of filename extensions to be
  855. # passed through. Format is the same as DEFAULT_FILTER_FILENAME_EXTENSIONS.
  856. DEFAULT_PASS_FILENAME_EXTENSIONS = []
  857. # Replace multipart/alternative with its first alternative.
  858. DEFAULT_COLLAPSE_ALTERNATIVES = Yes
  859. # Whether text/html should be converted to text/plain after content filtering
  860. # is performed. Conversion is done according to HTML_TO_PLAIN_TEXT_COMMAND
  861. DEFAULT_CONVERT_HTML_TO_PLAINTEXT = Yes
  862. # Default action to take on filtered messages.
  863. # 0 = Discard, 1 = Reject, 2 = Forward, 3 = Preserve
  864. DEFAULT_FILTER_ACTION = 0
  865. # Whether to allow list owners to preserve content filtered messages to a
  866. # special queue on the disk.
  867. OWNERS_CAN_PRESERVE_FILTERED_MESSAGES = Yes
  868. # Check for administrivia in messages sent to the main list?
  869. DEFAULT_ADMINISTRIVIA = Yes
  870. #####
  871. # Digestification defaults. Same caveat applies here as with list defaults.
  872. #####
  873. # Will list be available in non-digested form?
  874. DEFAULT_NONDIGESTABLE = Yes
  875. # Will list be available in digested form?
  876. DEFAULT_DIGESTABLE = Yes
  877. DEFAULT_DIGEST_HEADER = ""
  878. DEFAULT_DIGEST_FOOTER = DEFAULT_MSG_FOOTER
  879. DEFAULT_DIGEST_IS_DEFAULT = No
  880. DEFAULT_MIME_IS_DEFAULT_DIGEST = No
  881. DEFAULT_DIGEST_SIZE_THRESHHOLD = 30 # KB
  882. DEFAULT_DIGEST_SEND_PERIODIC = Yes
  883. # Headers which should be kept in both RFC 1153 (plain) and MIME digests. RFC
  884. # 1153 also specifies these headers in this exact order, so order matters.
  885. MIME_DIGEST_KEEP_HEADERS = [
  886. 'Date', 'From', 'To', 'Cc', 'Subject', 'Message-ID', 'Keywords',
  887. # I believe we should also keep these headers though.
  888. 'In-Reply-To', 'References', 'Content-Type', 'MIME-Version',
  889. 'Content-Transfer-Encoding', 'Precedence', 'Reply-To',
  890. # Mailman 2.0 adds these headers
  891. 'Message',
  892. ]
  893. PLAIN_DIGEST_KEEP_HEADERS = [
  894. 'Message', 'Date', 'From',
  895. 'Subject', 'To', 'Cc',
  896. 'Message-ID', 'Keywords',
  897. 'Content-Type',
  898. ]
  899. #####
  900. # Bounce processing defaults. Same caveat applies here as with list defaults.
  901. #####
  902. # Should we do any bounced mail response at all?
  903. DEFAULT_BOUNCE_PROCESSING = Yes
  904. # How often should the bounce qrunner process queued detected bounces?
  905. REGISTER_BOUNCES_EVERY = minutes(15)
  906. # Bounce processing works like this: when a bounce from a member is received,
  907. # we look up the `bounce info' for this member. If there is no bounce info,
  908. # this is the first bounce we've received from this member. In that case, we
  909. # record today's date, and initialize the bounce score (see below for initial
  910. # value).
  911. #
  912. # If there is existing bounce info for this member, we look at the last bounce
  913. # receive date. If this date is farther away from today than the `bounce
  914. # expiration interval', we throw away all the old data and initialize the
  915. # bounce score as if this were the first bounce from the member.
  916. #
  917. # Otherwise, we increment the bounce score. If we can determine whether the
  918. # bounce was soft or hard (i.e. transient or fatal), then we use a score value
  919. # of 0.5 for soft bounces and 1.0 for hard bounces. Note that we only score
  920. # one bounce per day. If the bounce score is then greater than the `bounce
  921. # threshold' we disable the member's address.
  922. #
  923. # After disabling the address, we can send warning messages to the member,
  924. # providing a confirmation cookie/url for them to use to re-enable their
  925. # delivery. After a configurable period of time, we'll delete the address.
  926. # When we delete the address due to bouncing, we'll send one last message to
  927. # the member.
  928. # Bounce scores greater than this value get disabled.
  929. DEFAULT_BOUNCE_SCORE_THRESHOLD = 5.0
  930. # Bounce information older than this interval is considered stale, and is
  931. # discarded.
  932. DEFAULT_BOUNCE_INFO_STALE_AFTER = days(7)
  933. # The number of notifications to send to the disabled/removed member before we
  934. # remove them from the list. A value of 0 means we remove the address
  935. # immediately (with one last notification). Note that the first one is sent
  936. # upon change of status to disabled.
  937. DEFAULT_BOUNCE_YOU_ARE_DISABLED_WARNINGS = 3
  938. # The interval of time between disabled warnings.
  939. DEFAULT_BOUNCE_YOU_ARE_DISABLED_WARNINGS_INTERVAL = days(7)
  940. # Does the list owner get messages to the -bounces (and -admin) address that
  941. # failed to match by the bounce detector?
  942. DEFAULT_BOUNCE_UNRECOGNIZED_GOES_TO_LIST_OWNER = Yes
  943. # Notifications on bounce actions. The first specifies whether the list owner
  944. # should get a notification when a member is disabled due to bouncing, while
  945. # the second specifies whether the owner should get one when the member is
  946. # removed due to bouncing.
  947. DEFAULT_BOUNCE_NOTIFY_OWNER_ON_DISABLE = Yes
  948. DEFAULT_BOUNCE_NOTIFY_OWNER_ON_REMOVAL = Yes
  949. #####
  950. # General time limits
  951. #####
  952. # Default length of time a pending request is live before it is evicted from
  953. # the pending database.
  954. PENDING_REQUEST_LIFE = days(3)
  955. # How long should messages which have delivery failures continue to be
  956. # retried? After this period of time, a message that has failed recipients
  957. # will be dequeued and those recipients will never receive the message.
  958. DELIVERY_RETRY_PERIOD = days(5)
  959. # How long should we wait before we retry a temporary delivery failure?
  960. DELIVERY_RETRY_WAIT = hours(1)
  961. #####
  962. # Lock management defaults
  963. #####
  964. # These variables control certain aspects of lock acquisition and retention.
  965. # They should be tuned as appropriate for your environment. All variables are
  966. # specified in units of floating point seconds. YOU MAY NEED TO TUNE THESE
  967. # VARIABLES DEPENDING ON THE SIZE OF YOUR LISTS, THE PERFORMANCE OF YOUR
  968. # HARDWARE, NETWORK AND GENERAL MAIL HANDLING CAPABILITIES, ETC.
  969. # Set this to On to turn on MailList object lock debugging messages, which
  970. # will be written to logs/locks. If you think you're having lock problems, or
  971. # just want to tune the locks for your system, turn on lock debugging.
  972. LIST_LOCK_DEBUGGING = Off
  973. # This variable specifies how long the lock will be retained for a specific
  974. # operation on a mailing list. Watch your logs/lock file and if you see a lot
  975. # of lock breakages, you might need to bump this up. However if you set this
  976. # too high, a faulty script (or incorrect use of bin/withlist) can prevent the
  977. # list from being used until the lifetime expires. This is probably one of
  978. # the most crucial tuning variables in the system.
  979. LIST_LOCK_LIFETIME = hours(5)
  980. # This variable specifies how long an attempt will be made to acquire a list
  981. # lock by the incoming qrunner process. If the lock acquisition times out,
  982. # the message will be re-queued for later delivery.
  983. LIST_LOCK_TIMEOUT = seconds(10)
  984. # Set this to On to turn on lock debugging messages for the pending requests
  985. # database, which will be written to logs/locks. If you think you're having
  986. # lock problems, or just want to tune the locks for your system, turn on lock
  987. # debugging.
  988. PENDINGDB_LOCK_DEBUGGING = Off
  989. #####
  990. # Nothing below here is user configurable. Most of these values are in this
  991. # file for internal system convenience. Don't change any of them or override
  992. # any of them in your mm_cfg.py file!
  993. #####
  994. # These directories are used to find various important files in the Mailman
  995. # installation. PREFIX and EXEC_PREFIX are set by configure and should point
  996. # to the installation directory of the Mailman package.
  997. PYTHON = '@PYTHON@'
  998. PREFIX = '@prefix@'
  999. EXEC_PREFIX = '@exec_prefix@'
  1000. VAR_PREFIX = '@VAR_PREFIX@'
  1001. # Work around a bogus autoconf 2.12 bug
  1002. if EXEC_PREFIX == '${prefix}':
  1003. EXEC_PREFIX = PREFIX
  1004. # CGI extension, change using configure script
  1005. CGIEXT = '@CGIEXT@'
  1006. # Group id that group-owns the Mailman installation
  1007. MAILMAN_USER = '@MAILMAN_USER@'
  1008. MAILMAN_GROUP = '@MAILMAN_GROUP@'
  1009. # Enumeration for Mailman cgi widget types
  1010. Toggle = 1
  1011. Radio = 2
  1012. String = 3
  1013. Text = 4
  1014. Email = 5
  1015. EmailList = 6
  1016. Host = 7
  1017. Number = 8
  1018. FileUpload = 9
  1019. Select = 10
  1020. Topics = 11
  1021. Checkbox = 12
  1022. # An "extended email list". Contents must be an email address or a ^-prefixed
  1023. # regular expression. Used in the sender moderation text boxes.
  1024. EmailListEx = 13
  1025. # Extended spam filter widget
  1026. HeaderFilter = 14
  1027. # Actions
  1028. DEFER = 0
  1029. APPROVE = 1
  1030. REJECT = 2
  1031. DISCARD = 3
  1032. SUBSCRIBE = 4
  1033. UNSUBSCRIBE = 5
  1034. ACCEPT = 6
  1035. HOLD = 7
  1036. # Standard text field width
  1037. TEXTFIELDWIDTH = 40
  1038. # Bitfield for user options. See DEFAULT_NEW_MEMBER_OPTIONS above to set
  1039. # defaults for all new lists.
  1040. Digests = 0 # handled by other mechanism, doesn't need a flag.
  1041. DisableDelivery = 1 # Obsolete; use set/getDeliveryStatus()
  1042. DontReceiveOwnPosts = 2 # Non-digesters only
  1043. AcknowledgePosts = 4
  1044. DisableMime = 8 # Digesters only
  1045. ConcealSubscription = 16
  1046. SuppressPasswordReminder = 32
  1047. ReceiveNonmatchingTopics = 64
  1048. Moderate = 128
  1049. DontReceiveDuplicates = 256
  1050. # A mapping between short option tags and their flag
  1051. OPTINFO = {'hide' : ConcealSubscription,
  1052. 'nomail' : DisableDelivery,
  1053. 'ack' : AcknowledgePosts,
  1054. 'notmetoo': DontReceiveOwnPosts,
  1055. 'digest' : 0,
  1056. 'plain' : DisableMime,
  1057. 'nodupes' : DontReceiveDuplicates
  1058. }
  1059. # Authentication contexts.
  1060. #
  1061. # Mailman defines the following roles:
  1062. # - User, a normal user who has no permissions except to change their personal
  1063. # option settings
  1064. # - List creator, someone who can create and delete lists, but cannot
  1065. # (necessarily) configure the list.
  1066. # - List moderator, someone who can tend to pending requests such as
  1067. # subscription requests, or held messages
  1068. # - List administrator, someone who has total control over a list, can
  1069. # configure it, modify user options for members of the list, subscribe and
  1070. # unsubscribe members, etc.
  1071. # - Site administrator, someone who has total control over the entire site and
  1072. # can do any of the tasks mentioned above. This person usually also has
  1073. # command line access.
  1074. UnAuthorized = 0
  1075. AuthUser = 1 # Joe Shmoe User
  1076. AuthCreator = 2 # List Creator / Destroyer
  1077. AuthListAdmin = 3 # List Administrator (total control over list)
  1078. AuthListModerator = 4 # List Moderator (can only handle held requests)
  1079. AuthSiteAdmin = 5 # Site Administrator (total control over everything)
  1080. # Useful directories
  1081. LIST_DATA_DIR = os.path.join(VAR_PREFIX, 'lists')
  1082. LOG_DIR = os.path.join(VAR_PREFIX, 'logs')
  1083. LOCK_DIR = os.path.join(VAR_PREFIX, 'locks')
  1084. DATA_DIR = os.path.join(VAR_PREFIX, 'data')
  1085. SPAM_DIR = os.path.join(VAR_PREFIX, 'spam')
  1086. WRAPPER_DIR = os.path.join(EXEC_PREFIX, 'mail')
  1087. BIN_DIR = os.path.join(PREFIX, 'bin')
  1088. SCRIPTS_DIR = os.path.join(PREFIX, 'scripts')
  1089. TEMPLATE_DIR = os.path.join(PREFIX, 'templates')
  1090. MESSAGES_DIR = os.path.join(PREFIX, 'messages')
  1091. PUBLIC_ARCHIVE_FILE_DIR = os.path.join(VAR_PREFIX, 'archives', 'public')
  1092. PRIVATE_ARCHIVE_FILE_DIR = os.path.join(VAR_PREFIX, 'archives', 'private')
  1093. # Directories used by the qrunner subsystem
  1094. QUEUE_DIR = os.path.join(VAR_PREFIX, 'qfiles')
  1095. INQUEUE_DIR = os.path.join(QUEUE_DIR, 'in')
  1096. OUTQUEUE_DIR = os.path.join(QUEUE_DIR, 'out')
  1097. CMDQUEUE_DIR = os.path.join(QUEUE_DIR, 'commands')
  1098. BOUNCEQUEUE_DIR = os.path.join(QUEUE_DIR, 'bounces')
  1099. NEWSQUEUE_DIR = os.path.join(QUEUE_DIR, 'news')
  1100. ARCHQUEUE_DIR = os.path.join(QUEUE_DIR, 'archive')
  1101. SHUNTQUEUE_DIR = os.path.join(QUEUE_DIR, 'shunt')
  1102. VIRGINQUEUE_DIR = os.path.join(QUEUE_DIR, 'virgin')
  1103. BADQUEUE_DIR = os.path.join(QUEUE_DIR, 'bad')
  1104. RETRYQUEUE_DIR = os.path.join(QUEUE_DIR, 'retry')
  1105. MAILDIR_DIR = os.path.join(QUEUE_DIR, 'maildir')
  1106. # Other useful files
  1107. PIDFILE = os.path.join(DATA_DIR, 'master-qrunner.pid')
  1108. SITE_PW_FILE = os.path.join(DATA_DIR, 'adm.pw')
  1109. LISTCREATOR_PW_FILE = os.path.join(DATA_DIR, 'creator.pw')
  1110. # Import a bunch of version numbers
  1111. from Version import *
  1112. # Vgg: Language descriptions and charsets dictionary, any new supported
  1113. # language must have a corresponding entry here. Key is the name of the
  1114. # directories that hold the localized texts. Data are tuples with first
  1115. # element being the description, as described in the catalogs, and second
  1116. # element is the language charset. I have chosen code from /usr/share/locale
  1117. # in my GNU/Linux. :-)
  1118. def _(s):
  1119. return s
  1120. LC_DESCRIPTIONS = {}
  1121. def add_language(code, description, charset):
  1122. LC_DESCRIPTIONS[code] = (description, charset)
  1123. add_language('ar', _('Arabic'), 'utf-8')
  1124. add_language('ca', _('Catalan'), 'iso-8859-1')
  1125. add_language('cs', _('Czech'), 'iso-8859-2')
  1126. add_language('da', _('Danish'), 'iso-8859-1')
  1127. add_language('de', _('German'), 'iso-8859-1')
  1128. add_language('en', _('English (USA)'), 'us-ascii')
  1129. add_language('es', _('Spanish (Spain)'), 'iso-8859-1')
  1130. add_language('et', _('Estonian'), 'iso-8859-15')
  1131. add_language('eu', _('Euskara'), 'iso-8859-15') # Basque
  1132. add_language('fi', _('Finnish'), 'iso-8859-1')
  1133. add_language('fr', _('French'), 'iso-8859-1')
  1134. add_language('hr', _('Croatian'), 'iso-8859-2')
  1135. add_language('hu', _('Hungarian'), 'iso-8859-2')
  1136. add_language('ia', _('Interlingua'), 'iso-8859-15')
  1137. add_language('it', _('Italian'), 'iso-8859-1')
  1138. add_language('ja', _('Japanese'), 'euc-jp')
  1139. add_language('ko', _('Korean'), 'euc-kr')
  1140. add_language('lt', _('Lithuanian'), 'iso-8859-13')
  1141. add_language('nl', _('Dutch'), 'iso-8859-1')
  1142. add_language('no', _('Norwegian'), 'iso-8859-1')
  1143. add_language('pl', _('Polish'), 'iso-8859-2')
  1144. add_language('pt', _('Portuguese'), 'iso-8859-1')
  1145. add_language('pt_BR', _('Portuguese (Brazil)'), 'iso-8859-1')
  1146. add_language('ro', _('Romanian'), 'iso-8859-2')
  1147. add_language('ru', _('Russian'), 'koi8-r')
  1148. add_language('sr', _('Serbian'), 'utf-8')
  1149. add_language('sl', _('Slovenian'), 'iso-8859-2')
  1150. add_language('sv', _('Swedish'), 'iso-8859-1')
  1151. add_language('tr', _('Turkish'), 'iso-8859-9')
  1152. add_language('uk', _('Ukrainian'), 'utf-8')
  1153. add_language('vi', _('Vietnamese'), 'utf-8')
  1154. add_language('zh_CN', _('Chinese (China)'), 'utf-8')
  1155. add_language('zh_TW', _('Chinese (Taiwan)'), 'utf-8')
  1156. del _