Mailman
Mailman is a mailing list management system. It is used in conjunction with a mail server.
Contents
Installation
/var/lib/mailman
as state directory and the mailman
user, they currently conflict and can not be installed alongside each other.Mailman can be used in conjunction with Postorius (for configuration) and Hyperkitty (for archiving).
mailman
user, therefore any calls to the mailman
executable have to be done as the mailman
user.Configuration
All configuration for Mailman takes place in /etc/mailman.cfg
. The schema explaining all possible configuration options and setting the defaults is stored in /usr/lib/python3.8/site-packages/mailman/config/schema.cfg
.
The configuration is also accessible via the command line. Run the following command as the mailman
user (e.g. using sudo or su):
[mailman]$ mailman conf
Database
Mailman by default uses an SQLite database in /var/lib/mailman/data/
, but can be configured to use MariaDB or PostgreSQL.
SQLite
The default location for the SQLite database is already reflected in the schema.cfg
and therefore does not have to be set in Mailman's configuration.
/etc/mailman.cfg
[database] url: sqlite:////var/lib/mailman/data/mailman.db
MariaDB
Install the python-pymysql package and configure a database on MariaDB.
/etc/mailman.cfg
[database] class: mailman.database.mysql.MySQLDatabase url: mysql+pymysql://myuser:mypassword@mymysqlhost/mailman?charset=utf8&use_unicode=1
PostgreSQL
Install the python-psycopg2 package and create a database using PostgreSQL.
/etc/mailman.cfg
[database] class: mailman.database.postgresql.PostgreSQLDatabase url: postgres://myuser:mypassword@mypghost/mailman
Running
Enable and start mailman3.service
.
Several systemd services with timers exist, taking care of various aspects of the list management:
-
mailman3-digests.timer
: for sending out daily digests to subscribers -
mailman3-gatenews.timer
: for hourly polling of NNTP servers for news -
mailman3-notify.timer
: for sending out daily notifications to admins about pending requests
Setup
Integrate with a mail server
Integrate with Hyperkitty
Mailman does not automatically archive mails on its own. The Hyperkitty web application is used for this purpose. Based on a plugin, mailman is able to send mails to a Hyperkitty instance for archival.
Install the mailman3-hyperkitty package and configure /etc/mailman-hyperkitty.cfg
.
Afterwards, make mailman aware of the plugin:
/etc/mailman.cfg
[archiver.hyperkitty] class: mailman_hyperkitty.Archiver enable: yes configuration: /etc/mailman-hyperkitty.cfg
Tips and tricks
Migrate from mailman < 3.0
Mailman offers the possibility of importing mailman < 3.0 based list databases (config.pck
). Run the following command as the mailman
user (e.g. using sudo or su):
[mailman]$ mailman import21 LISTSPEC PICKLE_FILE
Here, LISTSPEC
represents a fully-qualified name of a list to import (e.g. list@example.com
) and PICKLE_FILE
the path to the list's config.pck
file.
REST API
Mailman exposes a REST API, which can be interfaced using custom tooling, based on python-mailmanclient.
See also
- Mailman Documentation - The upstream documentation
- Mailmanclient Documentation - The upstream documentation
- Connecting to Mailman - The upstream documentation on mailman3-hyperkitty
- Mailman Suite Documentation - The (high level) upstream documentation for the entire Mailman Suite (Mailman, Hyperkitty and Postorius)