Mailman
Mailman はメーリングリスト管理システムです。メールサーバーと組み合わせて使用します。
目次
インストール
Mailman は Postorius (設定用) と Hyperkitty (アーカイブ用)と一緒に使うことができます。
設定
Mailman の設定はすべて /etc/mailman.cfg
で行われます。全ての可能な設定オプションとデフォルトの設定を説明するスキーマは /usr/lib/python3.8/site-packages/mailman/config/schema.cfg
に格納されています。
また、コマンドラインからも設定にアクセスすることができます。mailman
ユーザーとして (例: sudo や su を使って) 以下のコマンドを実行します。
[mailman]$ mailman conf
データベース
Mailman はデフォルトで、/var/lib/mailman/data/ の SQLite データベース を使用します。
ですが、MariaDB または PostgreSQL を使用するように設定できます。
SQLite
SQLite データベースのデフォルトの場所はすでに schema.cfg
に反映されているため、Mailman で設定する必要はありません。
/etc/mailman.cfg
[database] url: sqlite:////var/lib/mailman/data/mailman.db
MariaDB
python-pymysql パッケージを インストール し、MariaDB にデータベースを設定します。
/etc/mailman.cfg
[database] class: mailman.database.mysql.MySQLDatabase url: mysql+pymysql://myuser:mypassword@mymysqlhost/mailman?charset=utf8&use_unicode=1
PostgreSQL
python-psycopg2 パッケージを インストール し、PostgreSQL を使用してデータベースを作成します。
/etc/mailman.cfg
[database] class: mailman.database.postgresql.PostgreSQLDatabase url: postgres://myuser:mypassword@mypghost/mailman
REST API
Mailman は、設定の [webservice]
セクションの設定に基づいて REST API を公開します。admin_user
と admin_pass
のデフォルト値を必ず置き換えてください (以下の例の値は使用しないでください)
/etc/mailman.cfg
[webservice] admin_user: my_new_admin_user_name admin_pass: my_new_admin_user_password
ARC
デフォルトでは、DMARC および DKIM は無効になっています。設定は、設定ファイルの [ARC]
セクションで行われます。必ず必要な値を設定し、デフォルトに関するドキュメントを読んでください。
/etc/mailman.cfg
[ARC] enabled: yes authserv_id: mailserver.tld trusted_authserv_ids: subdomain.mailserver.tld, other.mailserver.tld privkey: /path/to/privatekey.pem selector: test domain: mailserver.tld
MTA
メール転送エージェント (MTA) を接続するには、設定ファイルの [mta]
セクションを設定する必要があります。 アップストリームドキュメント では、postfix、exim、sendmail の例について説明していますが、その他の例も説明しています。 MTA は技術的には可能です。
Postfix
ローカル postfix インスタンスに接続するには、次の構成セクションを使用できます。
/etc/mailman.cfg
[mta] incoming: mailman.mta.postfix.LMTP outgoing: mailman.mta.deliver.deliver lmtp_host: mail.example.com lmtp_port: 8024 smtp_host: mail.example.com smtp_port: 25
postfix 設定は互換性を確保するために拡張する必要があります (アップストリームのメモ を参照)
/etc/postfix/main.cf
[..] recipient_delimiter = + unknown_local_recipient_reject_code = 550 owner_request_special = no [..]
さらに、postfix は mailman の トランスポートマップ を認識する必要があります。postfix の設定に応じて、これらは次のようになります。
/etc/postfix/main.cf
[..] transport_maps = hash:/var/lib/mailman/data/postfix_lmtp local_recipient_maps = hash:/var/lib/mailman/data/postfix_lmtp relay_domains = hash:/var/lib/mailman/data/postfix_domains [..]
デフォルトのハッシュベースのエイリアスマップを作成するために mailman が postmap
に直接アクセスできない場合は、代わりに正規表現ベースのエイリアスマップを生成します。
デフォルトの Python クラスベースの設定を上書きするために、mailman は設定ファイルの使用を許可します。次のファイルを作成します。
/etc/postfix-mailman.cfg
[postfix] postmap_command: /usr/bin/postmap transport_file_type: regex
このファイルを mailman の設定ファイルの [mta]
セクションに追加します。
/etc/mailman.cfg
[mta] [..] configuration: /etc/postfix-mailman.cfg
その後、regexp
ベースのエクスポートを postfix 設定で使用できるようになります。
/etc/postfix/main.cf
[..] transport_maps = regexp:/var/lib/mailman/data/postfix_lmtp local_recipient_maps = regexp:/var/lib/mailman/data/postfix_lmtp relay_domains = regexp:/var/lib/mailman/data/postfix_domains [..]
仮想メール セットアップを使用してローカルの postfix インスタンスに接続するには、まず エイリアス ドメインを設定 します。その後、それぞれの設定を変更します。
/etc/postfix/main.cf
[..] local_recipient_maps = regexp:/var/lib/mailman/data/postfix_lmtp transport_maps = regexp:/var/lib/mailman/data/postfix_lmtp virtual_mailbox_domains = regexp:/var/lib/mailman/data/postfix_domains virtual_alias_maps = regexp:/var/lib/mailman/data/postfix_vmap [..]
起動
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 subscribersmailman3-gatenews.timer
: for hourly polling of NNTP servers for newsmailman3-notify.timer
: for sending out daily notifications to admins about pending requests
セットアップ
メールサーバとの統合
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.
インストール the mailman3-hyperkitty package and configure /etc/mailman-hyperkitty.cfg
.
/etc/mailman-hyperkitty.cfg
[general] base_url: https://example.tld/hyperkitty/ api_key: super_secret_password
Afterwards, make mailman aware of the plugin:
/etc/mailman.cfg
[archiver.hyperkitty] class: mailman_hyperkitty.Archiver enable: yes configuration: /etc/mailman-hyperkitty.cfg
ヒントとテクニック
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.
参照
- 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)