Mailman - The GNU Mailing List Management System Copyright (C) 1998-2014 by the Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA [例によって誤訳が含まれている可能性がありますので、原本を参照しながら ご利用ください。](菊地@高知大) (更新: 2.1.18以降についての訳追加:二木@市民電子情報網) 直前のバージョンからの更新 ほとんどの場合、 Mailman の更新は既存のバージョンの上にのまま 最新バージョンをインストールするだけです。新リリースを展開し、 前と同じオプションで 'configure' を実行した上で、'make install' を 実行するだけです。一部には手での修正を必要とする変更があることも あります。 何をしなければならないかは、現在利用しているバージョンと更新しよう としているバージョンによって変ります。どの場合にも, まずメールと ウェブでの Mailman へのアクセスを停止しましょう。 基本的に、データ ベースを更新しようとしているわけですから、更新中にデータベースに 変更が起こらないようにするというのは良い考えです。 私の推奨: - メール受信サーバを止める。ほとんどの SMTP サーバは、もし相手の ポート番号 25 が閉じられていたら、そのドメイン宛てのメールを 単にキューに待機させるだけです。 - 一時的に Mailman へのウェブ接続を止める。これは、ウェブサーバを 止めるか、あるいは Mailman の URL へのアクセスを "サービスを 利用できません" と書いたページへ向けるかすることでできます。 詳しくはご利用のウェブサーバの説明書をご覧ください。 Python の更新 新しいバージョンの Python のインストール位置を変えずに置き換える 場合には Mailman のためにすることは特にありません。 現在インストールされている Python と別の場所に新しいバージョンの Python をインストールして、そのバージョンの Python を Mailman で 使用するには、新しい Python を --with-python オプションで示して Mailman を configure しなおす必要があります。また、Mailman の crontab や /etc/init.d のスクリプトを確認して python コマンドを 必要に応じて手で修正しなければなりません。 2.1.5以上2.1.17までから2.1.18以降への更新 Mailman 2.1.18 では dmarc_moderation_action 機能をサポートするために 新しく Python パッケージへの依存が加わりました。Mailman で使用する Python 環境に dnspython パッケージが使用できるようになっている必要が あります。 ./configure スクリプトは dnspython パッケージを検出 できなければエラーメッセージを吐いて終了します。dnspython の パッケージは あるいは The CheeseShop からダウンロードできます。 また、pip でインストールすることもできます。 2.1.4 から 2.1.5 への更新 Mailman 2.1.5 では、qfiles と保留データベースのファイル形式に大きな 変更が加えられました。 更新は自動的かつ滑らかに行われるよう、細心の 注意が払われていますが、二重にチェックし、超偏執狂的に、更新前に mailman サイトのバックアップを取ってください。更新前に上に書いたように mailman を止めるのを忘れないように。 特に、MM2.1.4 では、キューの中のメールは .msg と .pck の2つのファイル によるメールメッセージと、.db ファイルによるメタデータで扱われて いました。MM2.1.5 ではより効率的に .pck のファイルひとつをメール メッセージとメタデータの両方に使います。このことで MM2.1.5 は ファイルシステムへの負荷を減らしているはずです。 bin/upgrade スクリプトは、更新の際に自動的に実行され、古い qfiles を 新しいスタイルの qfiles に変換します。もし, qfiles の下のディレクトリ に沢山のファイルがあると、これはとても時間がかかるかもしれません。 特に、qfiles/shunt ディレクトリにあるファイルに気をつけてください。 これらも更新されます。但し、qfiles/bad のファイルは更新されません。 MM2.1.4 では保留になった動作(つまり、入会、退会、保留メールなど) のデータベースファイルは、全てのメーリングリストについて共有されて いました。MM2.1.5 ではリスト毎に保留データベースを持つことになります。 全ての保留動作をリスト毎のファイルに分けるのに、細心の注意を払って いますが、バグがある可能性もあります。簡単ではないかもしれませんが、 更新する前に保留動作を全てクリアーしておく方がよいでしょう。 2.0.x から 2.1 への更新 Mailman 2.0.x から 2.1 に更新したときには、司会とプライバシーに関 するオプションをよくチェックして、希望通りに設定されているかどうか 調べてください。Mailman の司会とプライバシーに関するオプションは、 かなり変更があり、より理解しやすく制御しやすくなっています。古い設 定変数を新しい設定変数に翻訳するための努力はなされていますが、旧式 の解釈は非常に複雑で、あなたが設定したものが正しく翻訳されていない 可能性があります。 特に (プライバシー -> 送信者フィルター) の default_member_moderation、 generic_nonmember_action と accept_these_nonmembers をチェックして ください。また、会員管理画面で会員情報の「発言制限」フラグもチェッ クしてください。 Mailman 2.1 では qrunner システムが完全に書き換えられています。 qrunner を cron でスタートはしません! その代わり, bin/mailmanctl スクリプトによって、メール配送を起動, 停止, 再起動するようになりま した。このスクリプトは UNIX の初期起動スクリプトとして使うこともで きます。crontab を新しい、cron/crontab.in ファイルで更新することを 忘れないで下さい。 注意: もし、MM2.1alpha2 以前のシステムから MM2.1alpha2 以後に更新 するのであれば、更新する前に、古い qrunner のプロセスで qfiles/ の 全てのメールをクリアーしておくことが重要です。でないと更新後は、そ れらのメールは配送されません。そして、それらの保留メールをどうやっ て更新したらよいか、私にはわかりません。 注意: Mailman 2.1 に更新する時には、aliases ファイルを再生成 する必要があります。 alias の名前やそれが呼び出すプログラム、wrapper スクリプトに沢山の変更がありました。あなたがお使いのメールサーバを Mailman と連携させることの詳細については README.<あなたのMTA> を見 てください。 aliases を再生成するには bin/genaliases スクリプトをご利用ください。 Mailman 2.1 では多言語 (国際化 internationalization = i18n) を導入 しています。以前のバージョンでは, ただ一つの言語だけがサポートされ ており、この言語は英語であると仮定されていました。Mailman 2.1 への upgrade スクリプトは lists/ ディレクトリに `en' という サブディレクトリが作成され、lists/ から .txt と .html の ファイルを全て lists//en にコピーします。 もし、あなたがこれらのテンプレートファイルを変更して英語でない文書 を入れていたら、en サブディレクトリを手で名前変更して、適当な言語 コードにする必要があります、Mailman の更新スクリプトはデフォルトの 重複になっているテンプレートを掃除しますが、これを手でよく確認した ほうがよいでしょう。 もし, 標準でないパッチをあてた MM2.0.x をご利用の場合には、更新に 別の問題が発生するかもしれません。現在までの既知の問題としては: - もし, パッチ #413752 (平文に強制変更) を当てていたら、更新はス ムーズにはいかないでしょう。 パッチ #651406 に非公式の解決法が載っ ています。 http://sf.net/tracker/?group_id=103&atid=300103&func=detail&aid=413752 http://sf.net/tracker/?group_id=103&atid=300103&func=detail&aid=651406 個別にリストを更新する もし、あなたが全てのリストを一度に 2.1 に更新するのが怖ければ、ひ とつずつ移動して更新することもできます. まず最初に空のディレクトリ に Mailman 2.1 をインストールすます。これを $MM21 と呼びましょう。 (Mailman 2.0 は $MM20 にインストールされているものとします。) こうすることは、全てのリストを Mailman 2.1 に移動するまでの短い間 Mailman 2.0 と 2.1 が共棲していることになります。MTA とウェブサー バによってはこれは透過的で簡単かもしれませんが、頭痛の種になるかも しれません。 もし、Apache の mod_rewrite を使っていれば、これはかなり直接的に、 Mailman 2.1 と 2.0 の両方が /mailman と /pipermail の URL 空間に 棲みつくように設定できます。これを使うと移行がリストの管理者と会員 にとって透過的になります。詳しくは以下を参照。 * MTA をシャットダウンする. もし、リストから出て行くメールが沢山あるときには、127.0.0.1 (localhost) からの接続を残して暫く MTA を動かしておいて、キュー を流しきるようにする必要があるかも知れません. どのようにするか は、MTA に依存します。Exim の場合 "local_interface = 127.0.0.1" に設定し、Exim デーモンに "kill -HUP" を送ります。 * ウェブサーバをシャットダウンする。プロの視点から言うと、あるい はウェブサイトのほかの部分にはアクセスできるようにしておきたい なら、全ての /mailman/ へのアクセスに "一時的ですが利用できま せん" と書いたページを返すように設定できます。 どのようにするかはサーバーに依存します。Apache と mod_rewrite を使っているなら、次のようにします。 RewriteRule ^/mailman/.* /var/www/unavailable.html [L] (もちろん自分で /var/www/unavailable.html を作成しておく必要が あります。) * Mailman 2.0 に queue 処理を強制する: Python -S $MM20/cron/qrunner (これは, $MM20/qfiles にファイルが残っている場合に必要です; これが必要なときには、MTA が 127.0.0.1 で動いていることを確認 してください。) * リストを移動する: cd $MM20 mv -i lists/foo-list $MM21/lists mv -i archives/private/foo-list $MM21/archives/private mv -i archives/private/foo-list.mbox $MM21/archives/private rm archives/public/foo-list rm archives/public/foo-list.mbox cd $MM21 bin/withlist -l -r fix_url mylist (fix_url のステップは Mailman 2.0 と 2.1 が同じ URL空間を共有 している場合には必要ありません。) * ウェブサーバの設定ファイルを書替えてリストの URL が使えるよう にします。ここでは、2つの可能な方法があります。簡単な方法では Mailman 2.1 のインストール用に新しく URL空間を作成します。 例え ば /mailman-21 とします。 RewriteRule /mailman/(.*)/(foo-list.*) /mailman-21/$1/$2 [R=temp] ([R=temp] は "/mailman-21/" が一時的な URL であり, Mailman 2.1 への移行が終ったら全てのリストを "/mailman/" に移すことを仮定 しています。) もし, "/mailman-21" のような醜い URL を世間にさらしたくなけれ ば、Mailman 2.0 と 2.1 が同じ URL空間を共有するように、もう少 し仕事が必要です。次のように Apache と mod_rewrite を設定しま す。 RewriteRule ^/mailman/(.*)/(foo-list.*) \ $MM21/cgi-bin/$1/$2 \ [T=application/x-httpd-cgi] こちらのほうは、審美的に嬉しいだけでなく、速いです -- リダイレ クトが無いからです。 どちらをとるにしても, Mailman 2.1 の保存書庫の URL も書替えて おく必要があります。 RewriteRule ^/pipermail/(foo-list.*) $MM21/archives/public/$1 * ウェブサーバを再起動します (又は、"一時的ですが利用できません" を除きます)。 * MTA を再起動します (又は, 127.0.0.1 以外も接続を許可します)。 2.0 から 2.0.x への更新 (但し, x >= 1) 更新の際の "make install" 以外は何も必要ありません。 以下略. 英語版の UPGRADING を見てください.(訳者)