さて、基本的な設定が完了したら実際にMailman 2で利用していたメーリングリストを3にインポートする作業を行う。
ここからの作業もroot権限で行う必要があるためにsudo bashでrootのシェルを立ち上げて作業する。
まずは移行するメーリングリストをMailman 3に作成する。Mailman 3ではメーリングリスト名は投稿するアドレスそのものなのでFQDNまで含めて指定する必要があることに注意。
mailman create LISTNAME@FQDN.COM
次にMailman 2のメーリングリストの設定をインポートする。
mailman import21 LISTNAME@FQDN.COM /var/lib/mailman/lists/LISTNAME/config.pck
その後、Mailman 2のメーリングリストのアーカイブをインポートする。mailman3-webのDjangoプロジェクトのディレクトリに移動する。
cd /usr/share/mailman3-web
Python2と3の混在環境ではPython3を明示して実行する必要があるので以下のコマンドでインポート作業を実行する。
python3 manage.py hyperkitty_import -l LISTNAME@FQDN.COM /var/lib/mailman/archives/private/LISTNAME.mbox/LISTNAME.mbox
多少のエラーは出るかもしれないが気にしない。インポートが完了したらインデックスを作成する。
python3 manage.py update_index_one_list LISTNAME@FQDN.COM
最後にダイジェストを保管するディレクトリの所有者がrootで作成されてしまっているので所有者をMailman 3のユーザーIDであるlistに変更する。ディレクトリ名がLISTNAMEとFQDNの間を@ではなく.でつないでいることに注意。
chown list:list /var/lib/mailman3/lists/ LISTNAME.FQDN.COM
以上で移行作業は完了。この時点で正しく配送されているかどうかを実際にメーリングリストにメールを投げてみて確認しよう。うまくいけばMailman Coreは問題なく動いている。あとは管理フロントエンドの設定を残すのみ。
メールのアーカイブ機能がうまく働いていなかった。原因はmailman-webとhyperkittyの連携に使うARCHIVER_KEYが正しく設定されていなかったため。ARCHIVER_KEYそのものはmailman3-webのインストール時に自動で生成されているので、これをhyperkitty側にも設定してあげる必要がある。
まずはARCHIVER_KEYを見つける。
grep MAILMAN_ARCHIVER_KEY /etc/mailman3/mailman-web.py
これで発見した行の中でシングルクォートに囲まれた文字列がARCHIVER_KEYの正体。
これを/etc/mailman3/mailman-hyperkitty.cfgに書き込む。
api_key: ARCHIVER_KEY
こちらのファイルに書き込むときはシングルクォートは不要なのでシングルクォートで囲まれた中の文字列だけをコピーしてここに貼り付ける。
さらにmailman.cfgにhyperkittyを有効にする設定を追加する必要がある。ていうか、なぜこれがインストール時に最初から有効になっていないのかと問い詰めたい。一応、mailman-hyperkitty.cfgに追記するようにという指示は書いてあるのだが。
/etc/mailman3/mailman.cfg
[archiver.hyperkitty]
class: mailman_hyperkitty.Archiver
enable: yes
configuration: /etc/mailman3/mailman-hyperkitty.cfg
これでメールのアーカイブが自動的にhyperkittyでインデックスされてPostoriusから見れるようになるはず。