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 のスクリプトを確認して phthon コマンドを
必要に応じて手で修正しなければなりません。
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 を見てください.(訳者)