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 [..]
起動
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
は、リストのファイルへのパスを表します。
REST API
Mailman は REST API を公開しています。これは、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)