Mailman

提供: ArchWiki
2023年10月28日 (土) 19:38時点におけるKgx (トーク | 投稿記録)による版 (→‎MTA: 翻訳)
ナビゲーションに移動 検索に移動

Mailman はメーリングリスト管理システムです。メールサーバーと組み合わせて使用します。

インストール

mailman3 パッケージをインストールします。

ノート: mailman3 は近い将来 mailman に置き換わる予定です。両方のアプリケーションが /var/lib/mailman をステートディレクトリ、mailman ユーザーとして使うので、現在衝突していて、一緒にインストールすることはできません。

Mailman は Postorius (設定用) と Hyperkitty (アーカイブ用)と一緒に使うことができます。

ノート: Mailman は専用の mailman ユーザーとして実行されます。したがって、mailman 実行ファイルは、mailman ユーザーとして実行する必要があります。

設定

Mailman の設定はすべて /etc/mailman.cfg で行われます。全ての可能な設定オプションとデフォルトの設定を説明するスキーマは /usr/lib/python3.8/site-packages/mailman/config/schema.cfg に格納されています。

また、コマンドラインからも設定にアクセスすることができます。mailman ユーザーとして (例: sudosu を使って) 以下のコマンドを実行します。

[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_useradmin_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] セクションを設定する必要があります。 アップストリームドキュメント では、postfixeximsendmail の例について説明していますが、その他の例も説明しています。 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 の設定に応じて、これらは次のようになります。

ノート: 次の例では、transport_mapslocal_recipient_mapsrelay_domainsvirtual_mailbox_domains、および virtual_alias_maps の既存の値がマージされることを前提としています。追加の値。
/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
[..]

ノート: タイプを変更した後(例: hash から regexp へ)、必ず新しいエイリアスマップを作成してください: [mailman]$ mailman aliases

仮想メール セットアップを使用してローカルの 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 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

セットアップ

メールサーバとの統合

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.

ノート: The mailman2 list to be imported must already exist on the target mailman instance.

REST API

Mailman exposes a REST API, which can be interfaced using custom tooling, based on python-mailmanclient.

参照