mailman2はpython2で書かれており、Debian bullseye(11)ではもうmailman3しかパッケージがありません。かつ、パッケージ側でデータまわりのハンドリングは特になされないので、手動で移行作業を行う必要があります。意外とはまりどころが多かったので記録しておきます。
公式のドキュメント https://docs.mailman3.org/en/latest/migration.html
mailman3のインストール
apt install mailman3 mailman3-web
(debconfでPostrious(web UI)やhyperkitty(アーカイバ)の質問があるので適時答える)
mailman3上でのML作成
$ list_lists # ML一覧を得る
$ mailman-wrapper create ${ML-NAME}@example.com # mailman3ではドメイン名も必要
MLの一時停止 (一時的に新規メールを受け付けないため)
自分の場合postfixだったのでmain.cfからmailmanの設定を削除した。
import21の実行 (subscriber等設定のコピー)
$ mailman-wrapper import21 ${ML-NAME}@example.com /var/lib/mailman/lists/${ML-NAME}/config.pck
場合によってはimport21が失敗する。自分の場合はその原因が bounce_infoが空でなかったのが原因(参考: https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/JEPMB3HW4FI57EUMOST4L7BD2ILIIS3P/)だったので、手動で削除した。
$ withlist ${ML-NAME} # ここでPython interactive modeになる
$ m.Lock()
$ m.bounce_info = {}
$ m.Save()
$ ^D
アーカイブの移行 (pipermail -> hyperkitty)
$ /usr/share/mailman3-web/manage.py hyperkitty_import -l ${ML-NAME}@example.com /var/lib/mailman/archives/private/${ML-NAME}.mbox/${ML-NAME}.mbox
(運が悪いとcodec周りで変換できずエラーになるメールが混じるが処理は中断されない)
web設定の修正 (apacheの場合)
# /etc/apache2/conf-available/mailman3.conf
# 末尾の / を削除
# ref: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=996105
# https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/USXUYZYB5KIXT37APMCOAUZLKBRPARTL/
# これがないとウェブのリンク先が正しく辿れない
--- foo 2021-10-13 16:27:11.000000000 +0900
+++ mailman3.conf 2021-10-12 19:15:31.000000000 +0900
@@ -8,5 +8,5 @@
<IfModule mod_proxy_uwsgi.c>
ProxyPass /mailman3/favicon.ico !
ProxyPass /mailman3/static !
- ProxyPass /mailman3 unix:/run/mailman3-web/uwsgi.sock|uwsgi://localhost/
+ ProxyPass /mailman3 unix:/run/mailman3-web/uwsgi.sock|uwsgi://localhost
</IfModule>
hyperkittyの設定変更 (API key設定)
$ grep MAILMAN_REST_API_PASS /etc/mailman3/mailman3-web.py # API鍵情報のチェック
$ edit /etc/mailman3/mailman-hyperkitty.cfg
(api_key: MAILMAN_REST_API_PASSの内容 に書き換え)
Django管理UIからドメイン名の修正 (デフォルトはexample.com)
- http://${site}/mailman3/admin/ にアクセス
- サイト (http://${site}/mailman3/admin/sites/site/) の「変更」を選択
- example.com があるのでそれを自サイトに変更
mailman3の有効化 (postfix)
# /etc/postfix/main.cf
# ref: /usr/share/doc/mailman3/README.Debian
# 他のMTAについても記載あり
# Mailman related settings
#owner_request_special = no
transport_maps = hash:/var/lib/mailman3/data/postfix_lmtp
local_recipient_maps = proxy:unix:passwd.byname $alias_maps hash:/var/lib/mailman3/data/postfix_lmtp
relay_domains = ${{$compatibility_level} < {2} ? {$mydestination} : {}} hash:/var/lib/mailman3/data/postfix_domains
ACCOUNT_DEFAULT_HTTP_PROTOCOLの設定 (optional)
Debianのmailman3-webはデフォルトでweb UIはhttpsを想定しているので、httpしかない場合 /etc/mailman3/mailman-web.py の ACCOUNT_DEFAULT_HTTP_PROTOCOL を http にする。
UI/アーカイブの確認
http://${site}/mailman3/ にアクセスする。debconfで入力した管理者情報を入れてログインしようとすると、一度確認メールが送られるので注意。
検索インデックスの更新
# /usr/share/mailman3-web/manage.py update_index # mailman3向けのdjango-adminに相当するのがこの manage.py になる
漏れなどがあればご指摘ください。
2021-10-14: ACCOUNT_DEFAULT_HTTP_PROTOCOLと検索インデックスについて追記。