Mailman - The GNU Mailing List Management System Copyright (C) 1998,1999,2000,2001,2002 Free Software Foundation, Inc. 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA これは Mailman 2.1 の INSTALL を菊地@高知大が和訳したものです. 誤訳があるかもしれないので,必ず原本(英文)を参照してください. このファイルには Mailman のインストール方法が載っています. Mailman は標準の GNU autoconf ソフトウェアを使って設定されます. まず最初に,以下のセクションで概説されているようにシステムを セットアップしてください.その後,Mailmanソフトウェアを configure し, インストールしてください. バージョンアップ Mailman をバージョンアップするのは,既存のバージョンを上書きして 新しい バージョンをインストールするのと同じくらい簡単です.しかし, バージョンアップの前に UPGRADING ファイルに書いてあるノートを 読んでください. 重要な情報があります. GNU Mailman のウェブサイトは http://www.list.org です. GNU Mailman は http://sf.net/project/showfiles.php?group_id=103 からダウンロードできます. 0. インストールの必要事項 まず, あなたがメールを送るときに使える, メールサーバ(MTA)と, CGI/1.1 の API をサポートするウェブサーバが必要です. Apache が ウェブサーバとしては適当です. また, MTA としては, Postfix, Exim, Sendmail, qmail などはどれも使えます. セキュリティ向上のために用いられている wrapper プログラムを 構築するためには ANSI C コンパイラーが必要です. GNU の C コンパイラ gcc 2.8.1 以降のバージョンでうまくいきます.Gcc を取って来るには, 以下の URL を参照してください. http://www.gnu.org/ システムには Python インタプリタがインストールされていなけれ ばなりません. 現時点で,Python 2.1 またはそれより新しいもの が必要で, バージョン毎に最新のパッチリリースを推奨します. これを書いている時点で Python 2.1.3, Python 2.2.3, Python 2.3.4 Python 2.4 が出ています. Python のソースまたは RPM, コンパイル済みバイナリを取得す るには Python のWebサイトをご覧ください. http://www.python.org/ もし, Python をソースからインストールするのであれば, UNIX 的 OS に標準の "./configure ; make install" でいけるでしょう. "make test" を実行すると沢山のテストがスキップされるかもしれ ません --- 気にすることはありません. 多分必要ないでしょう. Mailman は殆んどのシステムでコンパイルできる, 基本的な機能だ けを使うようにしています. もし, あなたが使おうとするメールサーバ(MTA)について README. があったら, 今読んでください. MTA によっては 最新の機能(例えばウェブ経由でリストを作成・削除)をシームレス に統合することができます. 例えば Exim と Postfix です. 特定の MTA についての設定指南がそれらの README ファイルに入っています. 1. システムセットアップ このセクションのステップを実行するには root になる必要があります. Mailman ソフトウェアのインストールの前に,特定のユーザとグルー プを追加登録することでシステムの準備をする必要があります. - 新しいユーザ 'mailman' を登録してください.普通これは /etc/passwd ファイルに追加されます.(訳注:直接 /etc/passwd を編集するので無く,adduser/useradd/vipw などのコマンドを使い ます.) もし, mailmanが(他の目的で)すでに使われていたら,他の 名前を選んで,下の --with-username フラグで指定します. - 新しいグループ 'mailman' を登録します.普通これは /etc/group ファイルに 追加されます.Mailman のファイルは 'mailman' グルー プでインストール され set-group-id ビットが立てられます. Mailman のセキュリティはこのグループ所有者の許可属性に基いて いますので, これを正しく設定することが重要です. もし, mailman が既に使われていたら,別の使われていない名前を選んで, 下の --with-groupname で指定します.前のステップで作成された mailman ユーザはこのグループのメンバーでなければなりません. (訳注:システムによってはユーザの登録に「既に登録されたグルー プ」が必要なことがあります. この場合先にグループ登録してくだ さい. また,別のシステムでは,コマンドでユーザ登録する時に 同時にグループ登録もできます.) - インストールのディレクトリを作成します (以下の文書では $prefix と呼ぶ). 全ての Mailman ファイルはこの $prefix の下 にインストールされます. "configure --help" を実行すると, 読み 取り専用と読み書き可能なファイルとに分けてインストールする方 法が出てきます. Mailman 2.1 のデフォルトのインストールディレクトリは /usr/local/mailman です. Mailman 2.1apha 以前のバージョンでは /home/mailman でした. デフォルトを変更するには configure で --prefix オプションを使います (下を参照). Mailman 2.1 以前の バージョンから更新するには, インストールディレクトリを変更す るので無い限り, --prefix を設定する必要があります. あなたのサイトで /usr/local に nosuid オプションが付いてマウ ントされていないか注意してください. これがあると, Mailman の インストールに失敗します. というのは, セキュリティ上の理由で set-gid プログラムの利用を前提としているからです. もし, この ような問題があったら, 単純に setgid プログラムを置けるような 場所に Mailman をインストールしてください. インストールのディレクトリが `mailman' グループに設定されて いることを確認してください (あるいは --with-groupname で指定 しようとしているグループ). そして, setgid ビットがセットされ ていることを確認してください. (もし, BSD システムを使うなら README.BSD も読んでください) また, このディレクトリが全ての ユーザに読み取りと実行(移動)可能であることを保証したいと思う でしょう. 以下のシェルコマンドでこれらのことが設定できます: % cd $prefix % chgrp mailman . % chmod a+rx,g+ws . これで, Mailman ソフトウェアを configure しインストールする 準備ができました. 2. configure を走らせる 下にある,--with-mail-gid と --with-cgi-gid のオプションに特に 注意. 多分これが必要になります. このセクションに書いてある手順を実行する間は, あなたは root に なるべきではありません. 自分自身のログイン名か, 他のソフトを インストールするときに使うアカウントを使ってください. また, mailman ユーザになる必要はありませんが, そうしても構いません. 但し, 前の手順で作成した $prefix ディレクトリの書き込み許可を 得るためには, そのアカウントが mailman グループに所属している 必要があります. ターゲットのインストールディレクトリに書き込み権限があることと, そこに setgid ファイルを作成できることを確認してください. (NFS や他のマウント方式で setgid を禁止している場合があります) もし, 他の GNU ソフトをインストールしたことがあるなら, configure スクリプトにはおなじみでしょう. Mailman の tarball を開いた ディレクトリに cd して, configure を引数を付けずに実行して ください. % cd mailman- % ./configure % make install 以下のオプションで Mailman をカスタマイズできます. --prefix= 標準的な GNU configure のオプションで Mailman がインス トールされることになるベースのディレクトリを変更します. デフォルトでは $prefix は /usr/local/mailman です.この ディレクトリはその時点で存在していなければならず,上の セクション1で説明したようにセットアップされていなけれ ばなりません. --exec-prefix= 標準的な GNU configure のオプションでアーキテクチャに 依存したバイナリのインストールディレクトリを指定できます. --with-var-prefix= 交換可能なデータを prefix や exec-prefix の代わりに の下に保存します. このようなデータの例としては, リストの保存書庫やリスト設定データベースがあります. --with-python= wrapper プログラムで使用する Python インタプリタを変更 して指定することができます.デフォルトはシェルの $PATH の中で最初に見つかったものを使います.コマンドラインか らスクリプトを実行する際には, $PATH の中で最初に見つかっ た Python のインタプリタが常に使われます. --with-username= `mailman' でないユーザ名をデフォルトに使う場合に指定 する. `mailman' というユーザ名が既に別人によって使用さ れている場合にのみ使ってください. このスイッチは整数の ユーザID またはユーザ名を使うことができます. $prefix ディレクトリがこのユーザの所有であることを確認してくだ さい. --with-groupname= `mailman' でないグループ名をデフォルトに使う場合に指定 します. `mailman' というグループ名が既に使われている 場合に限って使ってください. このスイッチは整数のグルー プID またはグループ名を使うことができます. $prefix ディレクトリがこのグループの所有であることを確認してく ださい. --with-mail-gid= mail wrapper を介してスクリプトを実行する際のグループを 指定します. は,1個または複数の整数 のグループID でも,グループの名前であっても可です.リス トの最初の値で実際に存在 するグループの値が使用されます. デフォルトでは,これは `mailman other mail daemon' の リストになっています. これは高度にシステム依存であり,正しい値を知っておく必 要があります.というのは,グループIDがmail wrapper プロ グラムにコンパイルされてセキュリティを高めるからです. Sendmail を使っているシステムでは, sendmail.cf に "DefaultUser" を使って sendmail プロセスの gid が 設定 されています.(もし,コメントアウトされていたら,それで もデフォルトを示しているかもしれません) このスイッチの正しい値を知るために, 使用している MTA の 説明や設定ファイルをチェックしてください. --with-cgi-gid= CGI wrapper を介してスクリプトを実行する際のグループを 指定します. は,1個または複数の整数 のグループID でも,グループの名前であっても可です.リス トの最初の値で実際に存在 するグループの値が使用されます. デフォルトでは,これは `www www-data nobody' の リスト になっています. この値は Web サーバの設定に依存します.正しい値を知っ ておく必要があります. というのは,グループIDがCGI wrapper プログラムにコンパイルされてセキュリティを高めるからで す.これが違っていると Mailman CGI スクリプトは 動きま せん. もし Apache を使っていれば,httpd.conf に書かれている `Group' オプション の値をチェックしてください. --with-cgi-ext= cgi プログラムの拡張子を指定します.$PREFIX/cgi-bin に 置かれた CGI wrapper はこの拡張子を持ちます.(Webサーバ によっては 拡張子が必要です) には . (dot) を入れておくこと. --with-mailhost メールが出て行く時のホスト名(FQDN)を指定します. インストール が完了すれば, この値は $prefix/Mailman/mm_cfg.py で上書き することができます. --with-urlhost ウェブ URL のホスト名 (FQDN) を指定します. インストールが 完了すれば, この値は $prefix/Mailman/mm_cfg.py で上書き することができます. --with-gcc=no gcc が見つかっても使いません.`cc' が $PATH に無いとい けません. 3. インストールのチェック "make install" を実行した後, 正しいパーミッションとグループ所 有権が設定されていることを check_perms スクリプトで確かめてく ださい. - cd で $prefix へ移動 - bin/check_perms を実行 ソースディレクトリで bin/check_perms を実行しようとしないでく ださい. インストールした (つまり, $prefix) ディレクトリでのみ 実行可能です. これが問題を報告しなければ, あなたのインストールは正しく設定さ れていた可能性が高い です. もし, 問題点が報告されたら, 手で修正するか, もう一度インストールをやりなおすか, check_perms を使って(多分, 一番簡単)修正することが出来ます. - インストールを行ったユーザ ($prefix のファイルの所有権を持つ ユーザ) になるか, root になります. - bin/check_perms -f を実行する. - エラーの報告がなくなるまで, 上の手順を繰り返す! 4. 最終システムセットアップ おめでとう!Mailman ソフトウェアのインストールが完了しました. しかし,実際に全てをうまく動かすには,Mailman を Webサーバと Mailシステムの 両方に接続しないといけません. - もし,MTAとWebサーバを別のマシンで動かして,Mailman を NFS 経由で 共有したいと考えていたら,その2つのマシンの時計が同期 していることを 確かめてください.この手の環境では, Mailman/LockFile.py に定義された CLOCK_SLOP という定数を使って, 時計のずれを補償したファイルロック機構 にすることができます. - Webサーバの設定で $prefix/cgi-bin に CGI スクリプトの実行許可を 与えてください.これをやるには root になる必要があるでしょう. 設定ファイル (httpd.conf) に書き加える行は以下のようなものにな るはずです. (もちろん,$prefix のところは実際の絶対パスディレ クトリにしてください) Exec /mailman/* $prefix/cgi-bin/* 又は, ScriptAlias /mailman/ $prefix/cgi-bin/ 詳しくは,自分が使っている Webサーバの説明書を読んでください. - CGIスクリプトを実行する ユーザIDが `mailman' グループに入って い*ない*ことをよく確認してください.でないと,非公開の保存書 庫(private archive) が誰にでも見られてしまいます. - Mailman, Python, GNU のロゴをWebサーバのアクセス可能なところに コピーしてください.例えば Apacheの場合,画像ファイルを入れて おくのに 'icons' ディレクトリが用意されているはずです.例: % $prefix/icons/*.{jpg,png} /path/to/apache/icons $prefix/Mailman/mm_cfg.py にロゴのベースディレクトリを書いた 行を追加してください.例えば: IMAGE_LOGOS = '/images/' IMAGE_LOGOS のデフォルト値は '/icons/' です.Defaults.py.in に 書かれたコメントを読んでください. - Pipermail の公開メーリングリスト保存書庫を参照できるように Web サーバを 設定してください. 例えば Apache の場合: Alias /pipermail/ $varprefix/archives/public/ ここで, $varprefix は通常は $prefix と同じで, --with-var-prefix オプションを付けて configure した場合にはその値となります. 詳しくは,ご利用の Web サーバの説明書を調べてください. また, このディレクトリでシンボリックリンクをたどることができるように Web サーバを設定してください.でないと,Pipermail の書庫にアク セスできません.Apache のユーザは FollowSymLinks オプションを 調べてください. また, もし公開保存書庫を国際化したいのであれば, Pipermail ディレクトリのデフォルト文字集合の指示をオフにした方がよいかも しれません. でないと, 多言語の保存書庫は正しく見ることができな いでしょう. Apache の標準のインストールについての設定例は: AddDefaultCharset Off ここで, Webサーバを再起動してください. - "サイト全体の" メーリングリストを作成します. これは, パスワード の覚えを送信するときの送信者に設定されます. 通常, これは mailman という名前のメーリングリストにしますが, もし変更が必要なら, mm_cfg.py に MAILMAN_SITE_LIST を設定します.(下を参照) % bin/newlist mailman 入力要求に従って必要事項を入力してください. README にも情報が あります. ここで, サイトリストの設定をします. これの助けになるように, サイトリストの便利なひな形が data/sitelist.cfg に作って あります. このひな形を適用するには次のようにします: % bin/config_list -i data/sitelist.cfg mailman これをやる前に, ひな形の設定オプションを見ておいてください. (sitelist.cfg は多くのオプションは変更されないことに注意) この後で, リストの管理ページで設定を見ておくことを忘れないで ください. サイトリストには自分を登録しておくことです. 但し管理インタ フェースを使うこと. というのは, この時点ではメールを使った 入会確認ができないからです. - crontab の設定をします.Mailman は沢山の cron ジョブを使って, 基本的な機能を実現しています. 以前のバージョンから更新している 場合には, 新しい crontab を入れる必要が出てきます. しかし, サイ トで複数の Mailman をインストールしている場合には注意してくだ さい. crontab を変更すると平行した Mailman を壊すかもしれません. あなたの使う crontab で -u オプションを使えるなら, 次の例のように root になって実行します. 次のコマンドを実行して $prefix/cron/crontab.in を crontab に登録してください. # cd $prefix/cron # crontab -u mailman crontab.in もし, --with-username オプションを使っていたら, -u の引数には, mailman の代わりにそのユーザ名を使います. もし, crontab が -u オプションをサポートしていなければ, 次のようにしてください. # cd $prefix/cron # su - mailman % crontab crontab.in - Mailman の qrunner デーモンを $prefix ディレクトリで次のように コマンド実行して起動します. % bin/mailmanctl start システムをリブートするたびに Mailman を起動したければ, そして, OS が chkconfig コマンドをサポートしていれば (例えば Red Hat や Mandrake の Linux) 次のようにしてください. (Mailman の インストールディレクトリから, root になって) # cp scripts/mailman /etc/init.d/mailman # chkconfig --add mailman (/etc/init.d はシステムによっては /etc/rc.d/init.d かもしれません) Debian では, chkconfig の代わりに次のようにします. # update-rc.d mailman defaults chkconfig をサポートしない UNIX では, scripts/mailman をコピーして # cp scripts/mailman /etc/init.d/mailman 次のようにシンボリックリンクを張ります. # cd /etc/rc.d/rc0.d # ln -s ../init.d/mailman K12mailman # cd ../rc1.d # ln -s ../init.d/mailman K12mailman # cd ../rc2.d # ln -s ../init.d/mailman S98mailman # cd ../rc3.d # ln -s ../init.d/mailman S98mailman # cd ../rc4.d # ln -s ../init.d/mailman S98mailman # cd ../rc5.d # ln -s ../init.d/mailman S98mailman # cd ../rc6.d # ln -s ../init.d/mailman K12mailman - Defaults.py の中の DEFAULT_EMAIL_HOST と DEFAULTS_URL_HOST を チェックしてください. 変更が必要な場合は mm_cfg.py に書きます. また, どちらかの値を変更したときには, mm_cfg.py の変更の後に, 次のように追加してください. add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST) もし既に作成したリストがあったら, bin/fix_url.py を使って ドメイン名を変更してください. 5. Mailman のカスタマイズ 以下の作業は上の第2節で Mailman をインストールしたときのユーザで おこなう必要があります. - $prefix/Mailman/Defaults.py には, インストールのときのデフォルト が, 沢山記述されています. もし, そのうちのどれかが間違っていれば    $prefix/Mailman/mm_cfg.py で上書きしてください. Defaults.py を 変更しないように! Defaults.py に書いてあるコメントに詳しく書かれ ています. リストが作成されてしまうと, それらの変更は効果が無く なります. その時点からは, リストの設定変更はウェブインターフェース を使うか, bin/withlist または bin/config_list のコマンド行 スクリプトを使ってください. インストールの過程では既存の mm_cfg.py を上書きしません. このため, このファイルには自由に変更を加えることができます. 注意: HOME_DIR と MAILMAN_DIR を変更しないこと. これらは, configure スクリプトで自動的に設定されます. - 次のコマンドでサイトパスワードを設定する. % $prefix/bin/mmsitepass このパスワードは個人ユーザやリスト管理者のパスワードが必要な ときにはいつでも使えます. つまり, サイト管理者には必要があれ ば, これらのことを調整する能力が与えられます. また, "リスト作成" の役割を持たせたサイト全体用のパスワード を作成することもできます. (これは, サイト管理者以外のだれかに ウェブ経由でリストを作成したり削除したりさせたいときに使い ます.) -c オプションを使うとこれができます. 6. さあ, 始めよう README ファイルには "初めてリストを作成する" というところに, 最初のテストリストを作成する方法が書いてあります. 7. トラブルと対策 もし,Mailman の実行で問題が発生したら,まず以下の「一般的な 問題」のセクションをチェックしましょう.もし,問題がそこに含 まれていなければ,FAQ ファイルとオンラインの FAQ Wizard を チェックしてください.それから,システムの syslog と, $prefix/logs/error ファイルにエラーが入っていないかもチェック しましょう. あなたのマシンでの syslog の所在はマシンによって変わります. /var/log/maillog にあるかもしれません./var/log/sylog の可能性 もあります.多くのマシンでは /var/log の代わりに /adm/log に syslog ファイルが住み着いています. もし,エラーに遭遇したら,エラーレポートを mailman-users@python.org に送ってください.その中には 問題を起こしたとき,あなたが何を やったか説明を入れてください.また,syslog から関係する行を コピーしてください. また,あなたのオペレーティングシステムと Pythonのバージョンの情報も 入れてください. (訳注:もちろん英語です.) 8. 一般的な問題 問題: Mailman の Webページが全て 404 File not found エラーに なります. 解決法: Web サーバの設定で Mailman の CGI コマンドを正しく扱え るように設定できていません.以下を確認: 1) Webサーバで $prefix/cgi-bin に正しく許可(permission) を設定する. 2) Webサーバを正しく再起動する. Webサーバのドキュメントをよく読んでどうしたらよいか調べ てください. 問題: Mailman の Webページが全て "Internal Server Error" に なります. 解決法: 間違った GID または UIDを使って CGIスクリプトを実行し ようとしている可能性があります.syslog をチェックして ください.例えば,以下のような行があったら, Attempt to exec script with invalid gid 51, expected 99 Mailman を再インストールしなければなりません.インス トールのセクションで書かれたようにして $CGI_CGI を 51 に指定してください. (訳注: ログは Web サーバの error_log に出ているかもし れません. 再インストールは ./configure --with-cgi-gid=51 ... と make install でできるはずです.他に問題が無ければ ですが.) 問題: メールをリストに送ったら,リストが見つからないという メールを受け取りました. 解決法: 多分,システムの alias データベースに必要な alias を 追加していなかったのでしょう.alias は newlist コマンド を実行したときに出てきます.もし実際に追加していたら, newaliases を実行して alias データベースを更新していな かった のかもしれません.上のセクション5をもう一度読んで ください. 問題: リストにメールを送ったら,"unknown mailer error" が 帰ってきました. 解決法: メールシステムで間違った GID または UIDを使っている 可能性があります.syslog をチェックしてください.次の ような 行があったら, Attempt to exec script with invalid gid 51, expected 99 Mailman を再インストールしなければなりません. インストールのセクションで書かれたようにして $MAIL_GID を 51に指定してください.Postfix については次の問題も 見てください,デフォルトではこのような問題が発生します. (訳注:エラーメールの中に書かれているかもしれません. ./configure --with-mail-gid=51 ... make install で 修正します) 問題: 私は Postfix を MTA に使っています.そして, mail wrapper プログラムは GIDが違っていると不平を log に残します. 解決法: Postfix の main.cf 設定ファイル内に, "alias_maps" と いう名前で, Postfix 用に別の aliases ファイルを作って ください. ファイルは mailman のホームディレクトリの どこかあるいはどこでも mailman が書きこめるところに置 いてください. mailman ユーザになって Postfix の "postalias" コマンド を alias file について実行します. % postalias さらに,mailman ユーザで, % python -c'import os; print os.getgid()' を実行します.これで mailman プログラム が mail wrapper 実行の際に 使うべき グループ ID が出力されます. これを "thegid" としましょう.次のようにして mailman を再構築 してください. % ./configure --with-mail-gid=thegid Postfix と Mailman を連携して使う件については, README.POSTFIX も見てください. 問題: リストにメールを送ると, "sh: wrapper not available for sendmail programs" というメールが帰ってきます. 解決法: あなたのシステムでは sendmail restricted shell (smrsh)が 使われて います.メール wrapper ($prefix/mail/wrapper) から smrsh で実行が許可されているディレクトリへシンボ リックリンクを 張る必要があります. 一般的にこのディレクトリは /var/admin/sm.bin, /usr/admin/sm.bin 又は /etc/smrsh などに設定されています. Debian linux ではシステムは /usr/lib/sm.bin を作成します が,これは間違っています./usr/admin/sm.bin を 作ってそ こへリンクを作成する必要があります. 注:newaliases が吐き出すどの alias も wrapper への 安全なリンクを指す必要があります. 問題: configure を呼び出すときに散らかしてしまいました. 掃除をして再インストールするにはどうしたらいいですか? 解決法 % make clean % ./configure --with-the-right-options % make install