Mailman Core configuration options
These variables define the contents of the /etc/mailman3/mailman.cfg
configuration file. See mailman__core_configuration for more
details.
- mailman__core_original_configuration
The original contents of the /etc/mailman3/mailman.cfg
configuration
file defined in YAML format. The options are changed in subsequent variables.
mailman__core_original_configuration:
- name: 'mailman'
options:
- name: 'site_owner'
comment: |
This address is the "site owner" address. Certain messages which must be
delivered to a human, but which can't be delivered to a list owner (e.g. a
bounce from a list owner), will be sent to this address. It should point to
a human.
value: 'changeme@example.com'
- name: 'noreply_address'
comment: |
This is the local-part of an email address used in the From field whenever a
message comes from some entity to which there is no natural reply recipient.
Mailman will append '@' and the host name of the list involved. This
address must not bounce and it must not point to a Mailman process.
value: 'noreply'
- name: 'default_language'
comment: 'The default language for this server.'
value: 'en'
- name: 'sender_headers'
comment: |
Membership tests for posting purposes are usually performed by looking at a
set of headers, passing the test if any of their values match a member of
the list. Headers are checked in the order given in this variable. The
value From_ means to use the envelope sender. Field names are case
insensitive. This is a space separate list of headers.
value: [ 'from', 'from_', 'reply-to', 'sender' ]
- name: 'email_commands_max_lines'
comment: 'Mail command processor will ignore mail command lines after designated max.'
value: 10
- name: 'pending_request_life'
comment: |
Default length of time a pending request is live before it is evicted from
the pending database.
value: '3d'
- name: 'cache_life'
comment: 'How long should files be saved before they are evicted from the cache?'
value: '7d'
- name: 'pre_hook'
comment: |
A callable to run with no arguments early in the initialization process.
This runs before database initialization.
value: ''
- name: 'post_hook'
comment: |
A callable to run with no arguments late in the initialization process.
This runs after adapters are initialized.
value: ''
- name: 'layout'
comment: |
Which paths.* file system layout to use.
You should not change this variable.
value: 'debian'
- name: 'filtered_messages_are_preservable'
comment: 'Can MIME filtered messages be preserved by list owners?'
value: False
- name: 'html_to_plain_text_command'
comment: |
How should text/html parts be converted to text/plain when the mailing list
is set to convert HTML to plaintext? This names a command to be called,
where the substitution variable $filename is filled in by Mailman, and
contains the path to the temporary file that the command should read from.
The command should print the converted text to stdout.
value: '/usr/bin/lynx -dump $filename'
- name: 'listname_chars'
comment: |
Specify what characters are allowed in list names. Characters outside of
the class [-_.+=!$*{}~0-9a-z] matched case insensitively are never allowed,
but this specifies a subset as the only allowable characters. This must be
a valid character class regexp or the effect on list creation is
unpredictable.
value: '[-_.0-9a-z]'
- name: 'shell'
separator: True
comment: |
`mailman shell` (also `withlist`) gives you an interactive prompt that you
can use to interact with an initialized and configured Mailman system. Use
--help for more information. This section allows you to configure certain
aspects of this interactive shell.
options:
- name: 'prompt'
comment: 'Customize the interpreter prompt.'
value: '>>>'
separator: True
- name: 'banner'
comment: 'Banner to show on startup.'
value: 'Welcome to the GNU Mailman shell'
- name: 'use_ipython'
comment: |
Use IPython as the shell, which must be found on the system. Valid values
are `no`, `yes`, and `debug` where the latter is equivalent to `yes` except
that any import errors will be displayed to stderr.
value: False
- name: 'history_file'
comment: |
Set this to allow for command line history if readline is available. This
can be as simple as $var_dir/history.py to put the file in the var directory.
value: ''
- name: 'paths.debian'
separator: True
comment: |
Important directories for Mailman operation. These are defined here so that
different layouts can be supported. For example, a developer layout would
be different from a FHS layout. Most paths are based off the var_dir, and
often just setting that will do the right thing for all the other paths.
You might also have to set spool_dir though.
Substitutions are allowed, but must be of the form $var where 'var' names a
configuration variable in the paths.* section. Substitutions are expanded
recursively until no more $-variables are present. Beware of infinite
expansion loops!
options:
- name: 'var_dir'
comment: |
This is the root of the directory structure that Mailman will use to store
its run-time data.
value: '/var/lib/mailman3'
- name: 'queue_dir'
comment: 'This is where the Mailman queue files directories will be created.'
value: '$var_dir/queue'
separator: False
- name: 'bin_dir'
comment: |
This is the directory containing the Mailman 'runner' and 'master' commands
if set to the string '$argv', it will be taken as the directory containing
the 'mailman' command.
value: '/usr/lib/mailman3/bin'
- name: 'list_data_dir'
comment: 'All list-specific data.'
value: '$var_dir/lists'
- name: 'log_dir'
comment: 'Directory where log files go.'
value: '/var/log/mailman3'
- name: 'lock_dir'
comment: 'Directory for system-wide locks.'
value: '$var_dir/locks'
- name: 'data_dir'
comment: 'Directory for system-wide data.'
value: '$var_dir/data'
- name: 'cache_dir'
comment: 'Cache files.'
value: '$var_dir/cache'
- name: 'etc_dir'
comment: 'Directory for configuration files and such.'
value: '/etc/mailman3'
- name: 'ext_dir'
comment: 'Directory containing Mailman plugins.'
value: '$var_dir/ext'
- name: 'messages_dir'
comment: 'Directory where the default IMessageStore puts its messages.'
value: '$var_dir/messages'
- name: 'archive_dir'
comment: |
Directory for archive backends to store their messages in. Archivers should
create a subdirectory in here to store their files.
value: '$var_dir/archives'
- name: 'template_dir'
comment: 'Root directory for site-specific template override files.'
value: '$var_dir/templates'
- name: 'pid_file'
comment: |
There are also a number of paths to specific file locations that can be
defined. For these, the directory containing the file must already exist,
or be one of the directories created by Mailman as per above.
This is where PID file for the master runner is stored.
value: '/run/mailman3/master.pid'
- name: 'lock_file'
comment: 'Lock file.'
value: '$lock_dir/master.lck'
- name: 'database'
separator: True
options:
- name: 'class_sqlite'
option: 'class'
comment: 'The class implementing the IDatabase.'
value: 'mailman.database.sqlite.SQLiteDatabase'
state: 'comment'
- name: 'class_mysql'
option: 'class'
value: 'mailman.database.mysql.MySQLDatabase'
state: 'comment'
- name: 'class_postgresql'
option: 'class'
value: 'mailman.database.postgresql.PostgreSQLDatabase'
state: 'comment'
- name: 'url_sqlite'
option: 'url'
comment: |
Use this to set the Storm database engine URL. You generally have one
primary database connection for all of Mailman. List data and most rosters
will store their data in this database, although external rosters may access
other databases in their own way. This string supports standard
'configuration' substitutions.
value: 'sqlite:///$DATA_DIR/mailman.db'
state: 'comment'
- name: 'url_mysql'
option: 'url'
value: 'mysql+pymysql://mailman3:mmpass@localhost/mailman3?charset=utf8&use_unicode=1'
state: 'comment'
- name: 'url_postgresql'
option: 'url'
value: 'postgres://mailman3:mmpass@localhost/mailman3'
state: 'comment'
- name: 'debug'
value: False
separator: True
- name: 'logging.debian'
separator: True
comment: |
This defines various log settings. The options available are:
- level -- Overrides the default level; this may be any of the
standard Python logging levels, case insensitive.
- format -- Overrides the default format string
- datefmt -- Overrides the default date format string
- path -- Overrides the default logger path. This may be a relative
path name, in which case it is relative to Mailman's LOG_DIR,
or it may be an absolute path name. You cannot change the
handler class that will be used.
- propagate -- Boolean specifying whether to propagate log message from this
logger to the root "mailman" logger. You cannot override
settings for the root logger.
In this section, you can define defaults for all loggers, which will be
prefixed by 'mailman.'. Use subsections to override settings for specific
loggers. The names of the available loggers are:
- archiver -- All archiver output
- bounce -- All bounce processing logs go here
- config -- Configuration issues
- database -- Database logging (SQLAlchemy and Alembic)
- debug -- Only used for development
- error -- All exceptions go to this log
- fromusenet -- Information related to the Usenet to Mailman gateway
- http -- Internal wsgi-based web interface
- locks -- Lock state changes
- mischief -- Various types of hostile activity
- runner -- Runner process start/stops
- smtp -- Successful SMTP activity
- smtp-failure -- Unsuccessful SMTP activity
- subscribe -- Information about leaves/joins
- vette -- Message vetting information
options:
- name: 'format'
value: '%(asctime)s (%(process)d) %(message)s'
- name: 'datefmt'
value: '%b %d %H:%M:%S %Y'
- name: 'propagate'
value: False
- name: 'level'
value: 'info'
- name: 'path'
value: 'mailman.log'
- name: 'webservice'
options:
- name: 'hostname'
comment: 'The hostname at which admin web service resources are exposed.'
value: 'localhost'
- name: 'port'
comment: 'The port at which the admin web service resources are exposed.'
value: 8001
- name: 'use_https'
comment: 'Whether or not requests to the web service are secured through SSL.'
value: False
- name: 'show_tracebacks'
comment: |
Whether or not to show tracebacks in an HTTP response for a request that
raised an exception.
value: True
- name: 'api_version'
comment: 'The API version number for the current (highest) API.'
value: '3.1'
- name: 'admin_user'
comment: 'The administrative username.'
value: 'restadmin'
- name: 'admin_pass'
comment: 'The administrative password.'
value: 'restpass'
- name: 'mta'
options:
- name: 'incoming_exim'
option: 'incoming'
comment: 'The class defining the interface to the incoming mail transport agent.'
value: 'mailman.mta.exim4.LMTP'
state: 'comment'
- name: 'incoming'
value: 'mailman.mta.postfix.LMTP'
- name: 'outgoing'
comment: |
The callable implementing delivery to the outgoing mail transport agent.
This must accept three arguments, the mailing list, the message, and the
message metadata dictionary.
value: 'mailman.mta.deliver.deliver'
- name: 'smtp_host'
comment: |
How to connect to the outgoing MTA. If smtp_user and smtp_pass is given,
then Mailman will attempt to log into the MTA when making a new connection.
value: 'localhost'
- name: 'smtp_port'
value: 25
- name: 'smtp_user'
value: ''
- name: 'smtp_pass'
value: ''
- name: 'lmtp_host'
comment: |
Where the LMTP server listens for connections. Use 127.0.0.1 instead of
localhost for Postfix integration, because Postfix only consults DNS
(e.g. not /etc/hosts).
value: '127.0.0.1'
- name: 'lmtp_port'
value: 8024
- name: 'configuration_exim'
option: 'configuration'
comment: |
Where can we find the mail server specific configuration file? The path can
be either a file system path or a Python import path. If the value starts
with python: then it is a Python import path, otherwise it is a file system
path. File system paths must be absolute since no guarantees are made about
the current working directory. Python paths should not include the trailing
.cfg, which the file must end with.
value: 'python:mailman.config.exim4'
state: 'comment'
- name: 'configuration'
comment: |
value: 'python:mailman.config.postfix'
- name: 'archiver.hyperkitty'
comment: |
The following lines are specific to mailing lists archiving using
HyperKitty. They require 'python3-mailman-hyperkitty' to be installed
and will produce errors otherwise.
If you don't want to use HyperKitty, please comment them out.
options:
- name: 'class'
value: 'mailman_hyperkitty.Archiver'
- name: 'enable'
value: True
- name: 'configuration'
value: '/etc/mailman3/mailman-hyperkitty.cfg'
- mailman__core_default_configuration
Mailman Core configuration options defined by the role.
mailman__core_default_configuration:
- name: 'mailman'
options:
- name: 'site_owner'
value: '{{ "root@" + mailman__domain }}'
- name: 'database'
options:
- name: 'class_sqlite'
state: '{{ "present"
if ((ansible_local.mailman.database_class | d("")).endswith("SQLiteDatabase"))
else "ignore" }}'
- name: 'class_mysql'
state: '{{ "present"
if ((ansible_local.mailman.database_class | d("")).endswith("MySQLDatabase"))
else "ignore" }}'
- name: 'class_postgresql'
state: '{{ "present"
if ((ansible_local.mailman.database_class | d("")).endswith("PostgreSQLDatabase"))
else "ignore" }}'
- name: 'url_sqlite'
value: '{{ ansible_local.mailman.database_url | d() }}'
state: '{{ "present"
if ((ansible_local.mailman.database_class | d("")).endswith("SQLiteDatabase"))
else "ignore" }}'
- name: 'url_mysql'
value: '{{ ansible_local.mailman.database_url | d() }}'
state: '{{ "present"
if ((ansible_local.mailman.database_class | d("")).endswith("MySQLDatabase"))
else "ignore" }}'
- name: 'url_postgresql'
value: '{{ ansible_local.mailman.database_url | d() }}'
state: '{{ "present"
if ((ansible_local.mailman.database_class | d("")).endswith("PostgreSQLDatabase"))
else "ignore" }}'
- name: 'webservice'
options:
- name: 'admin_pass'
value: '{{ ansible_local.mailman.webservice_admin_pass | d("restpass") }}'
- mailman__core_configuration
Mailman Core configuration options defined on all hosts in the Ansible inventory.
mailman__core_configuration: []
- mailman__core_group_configuration
Mailman Core configuration options defined on hosts in a specific Ansible inventory group.
mailman__core_group_configuration: []
- mailman__core_host_configuration
Mailman Core configuration options defined on specific hosts in the Ansible inventory.
mailman__core_host_configuration: []
- mailman__core_combined_configuration
Variable which combines all of the Mailman Core configuration variables and is used in the role tasks and templates.
mailman__core_combined_configuration: '{{ mailman__core_original_configuration
+ mailman__core_default_configuration
+ mailman__core_configuration
+ mailman__core_group_configuration
+ mailman__core_host_configuration }}'