1 # Copyright (C) 2008-2023 by the Free Software Foundation, Inc.
3 # This file is part of GNU Mailman.
5 # GNU Mailman is free software: you can redistribute it and/or modify it under
6 # the terms of the GNU General Public License as published by the Free
7 # Software Foundation, either version 3 of the License, or (at your option)
10 # GNU Mailman is distributed in the hope that it will be useful, but WITHOUT
11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15 # You should have received a copy of the GNU General Public License along with
16 # GNU Mailman. If not, see <https://www.gnu.org/licenses/>.
18 # This is the GNU Mailman configuration schema. It defines the default
19 # configuration options for the core system and plugins. It uses ini-style
20 # formats under the lazr.config regime to define all system configuration
21 # options. See <https://launchpad.net/lazr.config> for details.
25 # This address is the "site owner" address. Certain messages which must be
26 # delivered to a human, but which can't be delivered to a list owner (e.g. a
27 # bounce from a list owner), will be sent to this address. It should point to
29 site_owner: changeme@example.com
31 # This is the local-part of an email address used in the From field whenever a
32 # message comes from some entity to which there is no natural reply recipient.
33 # Mailman will append '@' and the host name of the list involved. This
34 # address must not bounce and it must not point to a Mailman process.
35 noreply_address: noreply
37 # The default language for this server.
40 # Membership tests for posting purposes are usually performed by looking at a
41 # set of headers, passing the test if any of their values match a member of
42 # the list. Headers are checked in the order given in this variable. The
43 # value From_ means to use the envelope sender. Field names are case
44 # insensitive. This is a space separate list of headers.
45 sender_headers: from from_ reply-to sender
47 # This is a space separated list of regexps which match headers to be kept
48 # in messages to anonymous lists. Many headers are removed from posts to
49 # anonymous lists before this is consulted, but of the remaining headers,
50 # any X-* headers that don't match one of these patterns are also removed.
51 # The X-* headers kept by default are those X-* headers added by Mailman
52 # and any X-Spam- headers. The match is case-insensitive. This does not
53 # affect non X-* headers, those of which might identify senders or their
54 # domains are deleted or replaced.
55 anonymous_list_keep_headers: ^x-mailman- ^x-content-filtered-by: ^x-topics:
56 ^x-ack: ^x-beenthere: ^x-list-administrivia: ^x-spam-
58 # Mail command processor will ignore mail command lines after designated max.
59 email_commands_max_lines: 10
61 # Default length of time a pending request is live before it is evicted from
62 # the pending database.
63 pending_request_life: 3d
65 # Default lifetime of pending moderator requests as opposed to the above which
66 # is for user confirmations.
67 moderator_request_life: 180d
69 # Default lifetime of saved bounce DSNs. This doesn't need to be long.
70 # They only need to be saved so they can be attached to admin notices which
71 # are normally sent immediately, but by an asynchronous process.
74 # How long should files be saved before they are evicted from the cache?
77 # How often should the task runner execute tasks like evicting expired
78 # pendings, workflows and cached files?
81 # Which paths.* file system layout to use.
84 # Can MIME filtered messages be preserved by list owners?
85 filtered_messages_are_preservable: no
87 # How should text/html parts be converted to text/plain when the mailing list
88 # is set to convert HTML to plaintext? This names a command to be called,
89 # where the substitution variable $filename is filled in by Mailman, and
90 # contains the path to the temporary file that the command should read from.
91 # The command should print the converted text to stdout.
92 html_to_plain_text_command: /usr/bin/lynx -dump $filename
94 # Should Mailman's content filtering append a report of what it removed to
98 # Specify what characters are allowed in list names. Characters outside of
99 # the class [-_.+=!$*{}~0-9a-z] matched case insensitively are never allowed,
100 # but this specifies a subset as the only allowable characters. This must be
101 # a valid character class regexp or the effect on list creation is
103 listname_chars: [-_.0-9a-z]
105 # Should we hold posts to lists that have a digest subject or quote the
109 # If hold_digest is yes, this is the minimum number of non-blank digest
110 # masthead lines that are needed to be matched in the message for it to be
111 # considered as quoting the masthead.
112 masthead_threshold: 4
114 # Should we check maximum message size against content filtered message?
115 check_max_size_on_filtered_message: no
117 # These hooks are deprecated, but are kept here so as not to break existing
118 # configuration files. However, these hooks are not run. Define a plugin
125 # Plugin configuration section template.
127 # To add a plugin, instantiate this section (changing `master` to whatever
128 # your plugin's name is), and define at least a `path` and a `class`. When
129 # the plugin is loaded, its subpackages will be search for components matching
130 # the following interfaces:
132 # - IChain for new chains
133 # - ICliSubCommand - `mailman` subcommands
134 # - IEmailCommand - new email commands
135 # - IHandler for new handlers
136 # - IPipeline for new pipelines
137 # - IRule for new rules
138 # - IStyle for new styles.
140 # See the IPlugin interface for more details.
142 # The full Python import path for you IPlugin implementing class. It is
143 # required to provide this.
146 # Whether to enable this plugin or not.
149 # Additional configuration file for this plugin. If the value starts with
150 # `python:` it is a Python import path, in which case the value should not
151 # include the trailing .cfg (although the file is required to have this
152 # suffix). Without `python:`, it is a file system path, and must be an
153 # absolute path, since no guarantees are made about the current working
157 # Package (as a dotted Python import path) to search for components that this
158 # plugin wants to add, such as ISTyles, IRules, etc. If not given, the
159 # plugin's name is used.
164 # `mailman shell` (also `withlist`) gives you an interactive prompt that you
165 # can use to interact with an initialized and configured Mailman system. Use
166 # --help for more information. This section allows you to configure certain
167 # aspects of this interactive shell.
169 # Customize the interpreter prompt.
172 # Banner to show on startup.
173 banner: Welcome to the GNU Mailman shell
174 Use commit() to commit changes.
175 Use abort() to discard changes since the last commit.
176 Exit with ctrl+D does an implicit commit() but exit() does not.
178 # Use IPython as the shell, which must be found on the system. Valid values
179 # are `no`, `yes`, and `debug` where the latter is equivalent to `yes` except
180 # that any import errors will be displayed to stderr.
183 # Set this to allow for command line history if readline is available. This
184 # can be as simple as $var_dir/history.py to put the file in the var directory.
189 # Important directories for Mailman operation. These are defined here so that
190 # different layouts can be supported. For example, a developer layout would
191 # be different from a FHS layout. Most paths are based off the var_dir, and
192 # often just setting that will do the right thing for all the other paths.
193 # You might also have to set spool_dir though.
195 # Substitutions are allowed, but must be of the form $var where 'var' names a
196 # configuration variable in the paths.* section. Substitutions are expanded
197 # recursively until no more $-variables are present. Beware of infinite
200 # This is the root of the directory structure that Mailman will use to store
202 var_dir: /var/tmp/mailman
203 # This is where the Mailman queue files directories will be created.
204 queue_dir: $var_dir/queue
205 # This is the directory containing the Mailman 'runner' and 'master' commands
206 # if set to the string '$argv', it will be taken as the directory containing
207 # the 'mailman' command.
209 # All list-specific data.
210 list_data_dir: $var_dir/lists
211 # Directory where log files go.
212 log_dir: $var_dir/logs
213 # Directory for system-wide locks.
214 lock_dir: $var_dir/locks
215 # Directory for system-wide data.
216 data_dir: $var_dir/data
218 cache_dir: $var_dir/cache
219 # Directory for configuration files and such.
220 etc_dir: $var_dir/etc
221 # Directory containing Mailman plugins.
222 ext_dir: $var_dir/ext
223 # Directory where the default IMessageStore puts its messages.
224 messages_dir: $var_dir/messages
225 # Directory for archive backends to store their messages in. Archivers should
226 # create a subdirectory in here to store their files.
227 archive_dir: $var_dir/archives
228 # Root directory for site-specific template override files.
229 template_dir: $var_dir/templates
230 # There are also a number of paths to specific file locations that can be
231 # defined. For these, the directory containing the file must already exist,
232 # or be one of the directories created by Mailman as per above.
234 # This is where PID file for the master runner is stored.
235 pid_file: $var_dir/master.pid
237 lock_file: $lock_dir/master.lck
241 # Setting enabled to true enables certain safeguards and other behavior
242 # changes that make developing Mailman easier. For example, it forces the
243 # SMTP RCPT TO recipients to be a test address so that no messages are
244 # accidentally sent to real addresses.
247 # Set this to an address to force the SMTP RCPT TO recipents when devmode is
248 # enabled. This way messages can't be accidentally sent to real addresses.
251 # This gets set by the testing layers so that the runner subprocesses produce
252 # predictable dates and times.
255 # Time-outs for starting up various test subprocesses, such as the LMTP and
256 # REST servers. This is only used for the test suite, so if you're seeing
257 # test failures, try increasing the wait time.
262 # Where can we find the passlib configuration file? The path can be either a
263 # file system path or a Python import path. If the value starts with python:
264 # then it is a Python import path, otherwise it is a file system path. File
265 # system paths must be absolute since no guarantees are made about the current
266 # working directory. Python paths should not include the trailing .cfg, which
267 # the file must end with.
268 configuration: python:mailman.config.passlib
270 # When Mailman generates them, this is the default length of passwords.
275 # Define which runners, and how many of them, to start.
277 # The full import path to the class for this runner.
278 class: mailman.core.runner.Runner
280 # The queue directory path that this runner scans. This is ignored for
281 # runners that don't manage a queue directory.
282 path: $QUEUE_DIR/$name
284 # The number of parallel runners. This must be a power of 2. This is ignored
285 # for runners that don't manage a queue directory.
288 # Whether to start this runner or not.
291 # The maximum number of restarts for this runner. When the runner exits
292 # because of an error or other unexpected problem, it is automatically
293 # restarted, until the maximum number of restarts has been reached.
296 # The sleep interval for the runner. It wakes up once every interval to
297 # process the files in its slice of the queue directory. Some runners may
303 # The class implementing the IDatabase.
304 class: mailman.database.sqlite.SQLiteDatabase
306 # Use this to set the Storm database engine URL. You generally have one
307 # primary database connection for all of Mailman. List data and most rosters
308 # will store their data in this database, although external rosters may access
309 # other databases in their own way. This string supports standard
310 # 'configuration' substitutions.
311 url: sqlite:///$DATA_DIR/mailman.db
316 # This defines various log settings. The options available are:
318 # - level -- Overrides the default level; this may be any of the
319 # standard Python logging levels, case insensitive.
320 # - format -- Overrides the default format string
321 # - datefmt -- Overrides the default date format string
322 # - path -- Overrides the default logger path. This may be a relative
323 # path name, in which case it is relative to Mailman's LOG_DIR,
324 # or it may be an absolute path name. You cannot change the
325 # handler class that will be used.
326 # - propagate -- Boolean specifying whether to propagate log message from this
327 # logger to the root "mailman" logger. You cannot override
328 # settings for the root logger.
330 # In this section, you can define defaults for all loggers, which will be
331 # prefixed by 'mailman.'. Use subsections to override settings for specific
332 # loggers. The names of the available loggers are:
334 # - archiver -- All archiver output
335 # - bounce -- All bounce processing logs go here
336 # - config -- Configuration issues
337 # - database -- Database logging (SQLAlchemy and Alembic)
338 # - debug -- Only used for development
339 # - error -- All exceptions go to this log
340 # - fromusenet -- Information related to the Usenet to Mailman gateway
341 # - http -- Internal wsgi-based web interface
342 # - locks -- Lock state changes
343 # - mischief -- Various types of hostile activity
344 # - plugins -- Plugin logs
345 # - runner -- Runner process start/stops
346 # - smtp -- SMTP activity
347 # - subscribe -- Information about leaves/joins
348 # - task -- Messages from the task runner
349 # - vette -- Message vetting information
350 format: %(asctime)s (%(process)d) %(message)s
351 datefmt: %b %d %H:%M:%S %Y
379 format: %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"
393 # The smtp logger defines additional options for handling the logging of each
394 # attempted delivery. These format strings specify what information is logged
395 # for every message, every successful delivery, every refused delivery and
396 # every recipient failure. To disable a status message, set the value to 'no'
397 # (without the quotes).
399 # These template strings accept the following set of substitution
400 # placeholders, if available.
402 # msgid -- the Message-ID of the message in question
403 # listname -- the fully-qualified list name
404 # sender -- the sender if available
405 # recip -- the recipient address if available, or the number of
406 # recipients being delivered to
407 # size -- the approximate size of the message in bytes
408 # seconds -- the number of seconds the operation took
409 # refused -- the number of refused recipients
410 # smtpcode -- the SMTP success or failure code
411 # smtpmsg -- the SMTP success or failure message
413 every: $msgid smtp to $listname for $recip recips, completed in $time seconds
414 success: $msgid post to $listname from $sender, $size bytes
415 refused: $msgid post to $listname from $sender, $size bytes, $refused failures
416 failure: $msgid delivery to $recip failed with code $smtpcode, $smtpmsg
426 # The hostname at which admin web service resources are exposed.
429 # The port at which the admin web service resources are exposed.
432 # Whether or not requests to the web service are secured through SSL.
435 # Whether or not to show tracebacks in an HTTP response for a request that
436 # raised an exception.
439 # The API version number for the current (highest) API.
442 # The administrative username.
443 admin_user: restadmin
445 # The administrative password.
448 # Number of workers to start.
449 # http://docs.gunicorn.org/en/stable/settings.html#workers
452 # Configuration for webservice.
453 configuration: python:mailman.config.gunicorn
457 # Template for language definitions. The section name must be [language.xx]
458 # where xx is the 2-character ISO code for the language.
460 # The English name for the language.
461 description: English (USA)
462 # And the default character set for the language.
464 # Whether the language is enabled or not.
467 # Language charsets as imported from Mailman 2.1 defaults
468 # Ref: http://www.lingoes.net/en/translator/langcode.htm
475 description: Asturian
480 description: Bulgarian
515 description: Estonian
536 description: Galician
546 description: Croatian
551 description: Hungarian
556 description: Interlingua
566 description: Japanese
576 description: Lithuanian
586 description: Norwegian
596 description: Portuguese
601 description: Portuguese (Brazil)
606 description: Romanian
621 description: Slovenian
641 description: Ukrainian
646 description: Vietnamese
656 description: Chinese (Taiwan)
661 # This section defines email authetication parameters, in particular, with
662 # respect to the ARC(Authenticated-Recieved-Chain) protocol. See
663 # http://arc-spec.org/ for reference.
665 # The DMARC protocol is the industry standard for cryptographically validating
666 # both the content and originating source of email. However it is regularly
667 # the case that mailing lists break this source of authentication via modifying
668 # the From, and possibly other headers, and altering the contents of
669 # emails by, say, adding a common footer to outgoing mail.
670 # The ARC protocol is the industry standard for rectify this.
671 # ARC cryptographically seals the outgoing emails by adding a collection
672 # of headers. These headers act quite analagously to a chain of DKIM
673 # signatures, where each intermediary validates the ARC signature(if one exists)
674 # of the incomming message, and then appends its own collection of header fields.
675 # Enabling this protocol makes it possible for email service providers
676 # to validate the content & originator of an email, even if it has taken multiple
677 # steps from the originator to the recipient.
679 # The general implementation of ARC within Mailman is addition of two
680 # additional handlers to the pipeline. One, at the very beginning of the
681 # pipeline cryptographically validaties the incomming ARC headers before the
682 # message has been modified, and appends its results to the
683 # Authentication-Results header.
685 # The second handler is at the end of the pipeline. It cryptographically
686 # signs the message, with all modifications that have been made, along
687 # with the analysis of the validation handler, and adds its output as
688 # a new set of ARC header fields.
690 # This flag globally enables ARC signing & validation. To enable, set this to
694 # DKIM & DMARC authentication checks on incoming email is critical to using ARC
695 # successfully. Mailman can do these check on its own, but if you already perform
696 # these checks earlier in your pipeline, say via a milter previous to Mailman,
697 # they can be used instead, as long as you specify your domain as a trusted
698 # domain below. If those checks are not placed in an Authentication-Results
699 # header from a trusted domain they will be ignored.
703 # This is the domain name as which Mailman identifies in any authentication
704 # headers it generates. Mandatory to set for ARC signing to work.
709 # This list should include all additional domains
710 # that you manage that may be handling your incoming mail
711 # Only necessary to update if there are local domains or subdomains
712 # that are performing DKIM, DMARC, or SPF checks.
714 # trusted_authserv_ids: subdomain.your_domain.com, trusted_other_domain.com
715 trusted_authserv_ids:
719 # In order for your server to be able to cryptographical sign its messages
720 # a DKIM public/private key pair will need to be created.
721 # See http://www.gettingemaildelivered.com/dkim-explained-how-to-set-up-and-use-domainkeys-identified-mail-effectively
722 # for reference. The following parameters let the software find your
723 # private & public keys
727 # Some versions of OpenSSL generate private keys which some versions of
728 # dkimpy (the library used by Mailman for handling ARC) cannot read.
729 # This manifests in "Unparsable private key" exceptions while processing
730 # email. If you encounter this, try to regenerate the RSA key with the
734 # privkey: /some/location/yourprivatekey.pem
736 # domain: your_domain.com
742 # This configures the headers that will be cryptographically signed
743 # This list is what is recommended by the DKIM & ARC specifications.
744 # Inclusion of the From header is mandatory.
745 sig_headers: From, Sender, Reply-To, Subject, Date, Message-ID, To, Cc, MIME-Version, Content-Type, Content-Transfer-Encoding, Content-ID, Content-Description, Resent-Date, Resent-From, Resent-Sender, Resent-To, Resent-Cc, Resent-Message-ID, In-Reply-To, References, List-Id, List-Help, List-Unsubscribe, List-Subscribe, List-Post, List-Owner, List-Archive
748 # This section defines basic antispam detection settings.
750 # This value contains lines which specify RFC 822 headers in the email to
751 # check for spamminess. Each line contains a `key: value` pair, where the key
752 # is the header to check and the value is a Python regular expression to match
753 # against the header's value. Multiple checks should be entered as multiline
754 # value with leading spaces:
757 # X-Spam: (yes|maybe)
758 # Authentication-Results: mail.example.com; dmarc=(fail|quarantine)
760 # The header value and regular expression are always matched
761 # case-insensitively.
764 # The chain to jump to if any of the header patterns matches. This must be
765 # the name of an existing chain such as 'discard', 'reject', 'hold', or
766 # 'accept', otherwise 'hold' will be used.
771 # The class defining the interface to the incoming mail transport agent.
772 incoming: mailman.mta.postfix.LMTP
774 # The callable implementing delivery to the outgoing mail transport agent.
775 # This must accept three arguments, the mailing list, the message, and the
776 # message metadata dictionary.
777 outgoing: mailman.mta.deliver.deliver
779 # How to connect to the outgoing MTA. If smtp_user and smtp_pass is given,
780 # then Mailman will attempt to log into the MTA when making a new connection.
786 # One of smtp/smtps/starttls, specifies the protocol Mailman will use when
787 # connecting. Typically will correspond to smtp_port: 25 -> smtp, 465 -> smtps,
789 smtp_secure_mode: smtp
791 # When smtp_secure_mode is smtps or starttls, whether to require a server cert
793 smtp_verify_cert: yes
795 # When smtp_secure_mode is smtps or starttls, whether to check that the
796 # server certificate specifies the same hostname as smtp_host.
797 smtp_verify_hostname: yes
799 # Where the LMTP server listens for connections. Use 127.0.0.1 instead of
800 # localhost for Postfix integration, because Postfix only consults DNS
801 # (e.g. not /etc/hosts).
805 # Ceiling on the number of recipients that can be specified in a single SMTP
806 # transaction. Set to 0 to submit the entire recipient list in one
810 # Ceiling on the number of SMTP sessions to perform on a single socket
811 # connection. Some MTAs have limits. Set this to 0 to do as many as we like
812 # (i.e. your MTA has no limits). Set this to some number great than 0 and
813 # Mailman will close the SMTP connection and re-open it after this number of
814 # consecutive sessions.
815 max_sessions_per_connection: 0
817 # Maximum number of simultaneous subthreads that will be used for SMTP
818 # delivery. After the recipients list is chunked according to max_recipients,
819 # each chunk is handed off to the SMTP server by a separate such thread. If
820 # your Python interpreter was not built for threads, this feature is disabled.
821 # You can explicitly disable it in all cases by setting max_delivery_threads
823 max_delivery_threads: 0
825 # How long should messages which have delivery failures continue to be
826 # retried? After this period of time, a message that has failed recipients
827 # will be dequeued and those recipients will never receive the message.
828 delivery_retry_period: 5d
830 # These variables control the format and frequency of VERP-like delivery for
831 # better bounce detection. VERP is Variable Envelope Return Path, defined
834 # http://cr.yp.to/proto/verp.txt
836 # This involves encoding the address of the recipient as Mailman knows it into
837 # the envelope sender address (i.e. RFC 5321 MAIL FROM). Thus, no matter what
838 # kind of forwarding the recipient has in place, should it eventually bounce,
839 # we will receive an unambiguous notice of the bouncing address.
841 # However, we're technically only "VERP-like" because we're doing the envelope
842 # sender encoding in Mailman, not in the MTA. We do require cooperation from
843 # the MTA, so you must be sure your MTA can be configured for extended address
846 # The first variable describes how to encode VERP envelopes. It must contain
847 # these three string interpolations, which get filled in by Mailman:
849 # $bounces -- the list's -bounces robot address will be set here
850 # $local -- the recipient address's local mailbox part will be set here
851 # $domain -- the recipient address's domain name will be set here
853 # This example uses the default below.
855 # FQDN list address is: mylist@dom.ain
856 # Recipient is: aperson@a.nother.dom
858 # The envelope sender will be mylist-bounces+aperson=a.nother.dom@dom.ain
860 # Note that your MTA /must/ be configured to deliver such an addressed message
863 verp_format: ${bounces}+${local}=${domain}
865 # For nicer confirmation emails, use a VERP-like format which encodes the
866 # confirmation cookie in the reply address. This lets us put a more user
867 # friendly Subject: on the message, but requires cooperation from the MTA.
868 # Format is like verp_format, but with the following substitutions:
870 # $address -- the list-confirm address
871 # $cookie -- the confirmation cookie
872 verp_confirm_format: $address+$cookie
874 # This regular expression unambiguously decodes VERP addresses, which will be
875 # placed in the To: (or other, depending on the MTA) header of the bounce
876 # message by the bouncing MTA. Getting this right is critical -- and tricky.
877 # Learn your Python regular expressions. It must define exactly three named
878 # groups, `bounces`, `local` and `domain`, with the same definition as above.
879 # It will be compiled case-insensitively.
880 verp_regexp: ^(?P<bounces>[^+]+?)\+(?P<local>[^=]+)=(?P<domain>[^@]+)@.*$
882 # This is analogous to verp_regexp, but for splitting apart the
883 # verp_confirm_format. MUAs have been observed that mung
885 # From: local_part@host
889 # To: "local_part" <local_part@host>
891 # when replying, so we skip everything up to '<' if any.
892 verp_confirm_regexp: ^(.*<)?(?P<addr>[^+]+?)\+(?P<cookie>[^@]+)@.*$
894 # Set this to 'no' to disable user friendly confirmations and avoid encoding
895 # the confirmation cookie in the reply address.
896 verp_confirmations: yes
898 # Another good opportunity is when regular delivery is personalized. Here
899 # again, we're already incurring the performance hit for addressing each
900 # individual recipient. Set this to 'yes' to enable VERPs on all personalized
901 # regular deliveries (personalized digests aren't supported yet).
902 verp_personalized_deliveries: no
904 # And finally, we can VERP normal, non-personalized deliveries. However,
905 # because it can be a significant performance hit, we allow you to decide how
906 # often to VERP regular deliveries. This is the interval, in number of
907 # messages, to do a VERP recipient address. The same variable controls both
908 # regular and digest deliveries. Set to 0 to disable occasional VERPs, set to
909 # 1 to VERP every delivery, or to some number > 1 for only occasional VERPs.
910 verp_delivery_interval: 0
912 # VERP format and regexp for probe messages.
913 verp_probe_format: $bounces+$token@$domain
914 verp_probe_regexp: ^(?P<bounces>[^+]+?)\+(?P<token>[^@]+)@.*$
915 # Set this 'yes' to activate VERP probe for disabling by bounce.
918 # This is the maximum number of automatic responses sent to an address because
919 # of -request messages or posting hold messages. This limit prevents response
920 # loops between Mailman and misconfigured remote email robots. Mailman
921 # already inhibits automatic replies to any message labeled with a header
922 # "Precendence: bulk|list|junk". This is a fallback safety valve so it should
923 # be set fairly high. Set to 0 for no limit (probably useful only for
925 max_autoresponses_per_day: 10
927 # Some list posts and mail to the -owner address may contain DomainKey or
928 # DomainKeys Identified Mail (DKIM) signature headers <http://www.dkim.org/>.
929 # Various list transformations to the message such as adding a list header or
930 # footer or scrubbing attachments or even reply-to munging can break these
931 # signatures. It is generally felt that these signatures have value, even if
932 # broken and even if the outgoing message is resigned. However, some sites
933 # may wish to remove these headers by setting this to 'yes'.
934 remove_dkim_headers: no
936 # Where can we find the mail server specific configuration file? The path can
937 # be either a file system path or a Python import path. If the value starts
938 # with python: then it is a Python import path, otherwise it is a file system
939 # path. File system paths must be absolute since no guarantees are made about
940 # the current working directory. Python paths should not include the trailing
941 # .cfg, which the file must end with.
942 configuration: python:mailman.config.postfix
946 # How often should the bounce runner process queued detected bounces?
947 register_bounces_every: 15m
951 # To add new archivers, define a new section based on this one, overriding the
954 # The class implementing the IArchiver interface.
957 # Set this to 'yes' to enable the archiver.
960 # Additional configuration for the archiver. The path can be either a file
961 # system path or a Python import path. If the value starts with python: then
962 # it is a Python import path, otherwise it is a file system path. File system
963 # paths must be absolute since no guarantees are made about the current
964 # working directory. Python paths should not include the trailing .cfg, which
965 # the file must end with.
966 configuration: changeme
968 # When sending the message to the archiver, you have the option of
969 # "clobbering" the Date: header, specifically to make it more sane. Some
970 # archivers can't handle dates that are wildly off from reality. This does
971 # not change the Date: header for any other delivery vector except this
974 # When the original Date header is clobbered, it will always be stored in
975 # X-Original-Date. The new Date header will always be set to the date at
976 # which the messages was received by the Mailman server, in UTC.
978 # Your options here are:
979 # * never -- Leaves the original Date header alone.
980 # * always -- Always override the Date header.
981 # * maybe -- Override the Date only if it is outside the clobber_skew period.
986 # This is the stock MHonArc archiver.
987 class: mailman.archiving.mhonarc.MHonArc
988 configuration: python:mailman.config.mhonarc
990 [archiver.mail_archive]
991 # This is the stock mail-archive.com archiver.
992 class: mailman.archiving.mailarchive.MailArchive
993 configuration: python:mailman.config.mail_archive
996 # This is a prototypical sample archiver.
997 class: mailman.archiving.prototype.Prototype
1001 # The default style to apply if nothing else was requested. The value is the
1002 # name of an existing style. If no such style exists, no style will be
1004 default: legacy-default
1008 # Headers which should be kept in both RFC 1153 (plain) and MIME digests. RFC
1009 # 1153 also specifies these headers in this exact order, so order matters.
1010 # These are space separated and case insensitive.
1011 mime_digest_keep_headers:
1012 Date From To Cc Subject Message-ID Keywords
1013 In-Reply-To References Content-Type MIME-Version
1014 Content-Transfer-Encoding Precedence Reply-To
1017 plain_digest_keep_headers:
1025 # The nntp runner is no longer started by default. If you are actually gating
1026 # to/from usenet, you need to add
1029 # to your mailman.cfg
1031 # Set these variables if you need to authenticate to your NNTP server for
1032 # Usenet posting or reading. Leave these blank if no authentication is
1037 # Host and port of the NNTP server to connect to. Leave these blank to use
1038 # the default localhost:119.
1042 # This controls how headers must be cleansed in order to be accepted by your
1043 # NNTP server. Some servers like INN reject messages containing prohibited
1044 # headers, or duplicate headers. The NNTP server may reject the message for
1045 # other reasons, but there's little that can be programmatically done about
1048 # These headers (case ignored) are removed from the original message. This is
1049 # a whitespace separate list of headers.
1051 nntp-posting-host nntp-posting-date x-trace
1052 x-complaints-to xref date-received posted
1053 posting-version relay-version received
1055 # These headers are left alone, unless there are duplicates in the original
1056 # message. Any second and subsequent headers are rewritten to the second
1057 # named header (case preserved). This is a list of header pairs, one pair per
1059 rewrite_duplicate_headers:
1062 Content-Transfer-Encoding X-Original-Content-Transfer-Encoding
1063 MIME-Version X-MIME-Version
1065 # The NNTP runner periodically runs the gatenews command to gate news from
1066 # usenet for lists that do that. This controls how often gatenews is run.
1071 # RFC 7489 - Domain-based Message Authentication, Reporting, and Conformance.
1072 # https://en.wikipedia.org/wiki/DMARC
1074 # Parameters for DMARC DNS lookups. If you are seeing 'DNSException: Unable
1075 # to query DMARC policy ...' entries in your error log, you may need to adjust
1078 # The time to wait for a response from a name server before timeout.
1079 resolver_timeout: 3s
1081 # The total time to spend trying to get an answer to the DNS question.
1082 resolver_lifetime: 5s
1084 # A URL from which to retrieve the data for the algorithm that computes
1085 # Organizational Domains for DMARC policy lookup purposes. This can be
1086 # anything handled by the Python urllib.request.urlopen function. See
1087 # https://publicsuffix.org/list/ for info.
1088 org_domain_data_url: https://publicsuffix.org/list/public_suffix_list.dat
1090 # How long should the local suffix list be used before it's considered out of
1091 # date. After this amount of time a new list will be downloaded, but if it
1092 # can't be accessed, old data will still be used.
1096 # urlpatterns typically represent the urls that are used in email templates
1097 # generated by Mailman Core. They key represents the `$key` that can be
1098 # used in the templates.
1100 # These are the url patterns for Postorius.
1102 mailinglist: $base_url/lists/$list_id
1103 held_message: $base_url/lists/$list_id/held_messages
1104 pending_subscriptions: $base_url/lists/$list_id/subscription_requests
1105 pending_unsubscriptions: $base_url/lists/$list_id/unsubscription_requests
1106 domain: $base_url/domains/$domain