さて、問題はMailman 2から3へのアップグレードだ。Mailman 2と3は根本的に設計が異なるので、そのまますんなりパッケージをインストールするだけでアップグレードしてくれたりはしない。どころか、GNU本家であるDebianのパッケージですらインストールしただけではまともに動かないという体たらく。しかし、これを突破しないとBullseyeへのアップグレードはできないので、頑張ることにする。
さて、最初に移行作業中にMailman 2が働かないようにMailman 2のサービスを停止しよう。
sudo service mailman stop
Mailman 3のパッケージはさすがにMailman 2と共存できるようには配慮されているので、このままMailman 3をインストールする。
sudo apt install mailman3-full
インストール中にmailman3とmailman3-webのデータベースを自動作成するかどうか聞いてくるので<Yes>と答え、データベースの種類はsqlite3を選択する。このサーバーではMariaDBが稼働しているのでMySQLでもいけそうな気がするが、実際にやってみると設定に失敗して壊れたパッケージインストール状態になるので、おとなしくsqlite3で設定する。
インストールが完了するとmailman3とmailman3-webのサービスが起動しているはずである。
勇気がある人はこの時点でMailman 2をアンインストールしてしまおう。 🙂
ここからはMailman 3の設定。sudo bashでroot権限のシェルを起動してrootで作業をする。
まずはPostfixと連携するための設定をする。/etc/postfix/main.cfに以下のMailman 3用の設定を追加する。
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
次に/etc/mailman3/mailman.cfgのサイトオーナーの連絡先を書き換えておく。
site_owner: MYADDRESS@MYDOMAIN.COM
ここからmailman3-webが稼働できるように設定する。
まずはapache2のproxy_uwsgiを有効にする。
a2enmod proxy_uwsgi
次にapache2でPostorius(Mailman 3のウェブフロントエンド)のページを表示できるようにする。これはapache2で読み込まれる設定を置くディレクトリにMailman 3に付属する設定をシンボリックリンクで置く。
ln -s /etc/mailman3/apache.conf /etc/apache2/conf-enabled/mailman3-web.conf
現在のmailman3-webのパッケージでインストールされるこの設定ファイル/etc/mailman3/apache.confはバグがあるので手作業で修正しておく。
ProxyPass /mailman3 unix:/run/mailman3-web/uwsgi.sock|uwsgi://localhost/
という行のlocalhost/の最後の余分な/を削除するだけである。
最後に/etc/mailman3/mailman-web.pyのいくつかの設定を変更する。
EMAILNAME = ‘FQDN.COM’
ACCOUNT_DEFAULT_HTTP_PROTOCOL = “http”
本サーバーはHTTPSで接続することができないので、認証はHTTPでできるように二行目の設定変更が必要だ。
以上の設定が完了したらサーバーを再起動して変更した設定を反映させる。もちろん、コマンドラインで手動でapache2とmailman3, mailman3-webのサービスを再起動させてもいい。
もしサーバーを再起動したらMailman 2のサービスが起動してしまうので、忘れずに停止させておこう。