Mailman

提供: ArchWiki
ナビゲーションに移動 検索に移動

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
[..]

起動

mailman3.service有効化 して 起動 します。

タイマーを備えた systemd サービスがいくつか存在し、リスト管理のさまざまな側面を処理します。

  • mailman3-digests.timer: 毎日のダイジェストを購読者に送信するため
  • mailman3-gatenews.timer: ニュースに関する NNTP サーバーの時間ごとのポーリング用
  • mailman3-notify.timer: 保留中のリクエストに関する通知を管理者に毎日送信するため

セットアップ

メールサーバとの統合

Hyperkitty との統合

Mailman は、それ自体ではメールを自動的にアーカイブしません。Hyperkitty Web アプリケーションはこの目的に使用されます。 プラグインに基づいて、mailman はアーカイブのために Hyperkitty インスタンスにメールを送信できます。

mailman3-hyperkitty パッケージを インストール し、/etc/mailman-hyperkitty.cfg を設定します。

/etc/mailman-hyperkitty.cfg
[general]
base_url: https://example.tld/hyperkitty/
api_key: super_secret_password

その後、mailman にプラグインを認識させます。

/etc/mailman.cfg
[archiver.hyperkitty]
class: mailman_hyperkitty.Archiver
enable: yes
configuration: /etc/mailman-hyperkitty.cfg

ヒントとテクニック

mailman 3.0 未満からのマイグレート

Mailman は、mailman < 3.0 ベースのリストデータベース (config.pck) をインポートする機能を提供します。 mailman ユーザーとして次のコマンドを実行します (例: sudo または su を使用。)

[mailman]$ mailman import21 LISTSPEC PICKLE_FILE

ここで、LISTSPEC はインポートするリストの完全修飾名 (例: list@example.com) を表し、PICKLE_FILE はインポートするリストの完全修飾名を表し、config.pck は、リストのファイルへのパスを表します。

ノート: インポートされる mailman2 リストは、ターゲットの mailman インスタンスにすでに存在している必要があります。

REST API

Mailman は REST API を公開しています。これは、python-mailmanclient をベースにしたスタムツールを使用できます。

参照