サーバ管理のためのメーリングリスト


以下は,epnetfan-ml に流れたメール(一部抜粋).

 Delivered-To: mailing list epnetfan_ml
 To: epnetfan-ml
 Subject: Re: inttech semi 7/2
 From: HAYASHI Yoshi-Yuki
 Date: Tue, 06 Jul 1999 09:17:21 +0900

 林です

 サーバー管理側として必要な ML は

         ・サーバーアカウント持っている人全員へのメールが送れるリスト
         ・IP 登録関係者(管理者)全員へのメールが送れるリスト

 の 2 つでしょう. 

これを作る.それぞれの ML の名前は accountholder, hostmanager とする.
登録するアドレスは grey 上のもののみとし,gate-system から受け渡してもらう.
メーリングリストからの登録削除・登録アドレスの変更には応じない.

準備,メーリングリストの作成

ezmlm-make による作成

$ sudo -u alias -s
alias@:$ cd ~alias/
alias@:$ ezmlm-make -gsu ~alias/accountholder ~alias/.qmail-accountholder accountholder ep.sci.hokudai.ac.jp
alias@:$ ezmlm-make -gsu ~alias/hostmanager ~alias/.qmail-hostmanager hostmanager ep.sci.hokudai.ac.jp

ezmlm-make のマニュアルは, http://mlm.qmail.jp/idx/ezmlm-make.htmlにある.
-s オプションによって,ユーザによるメーリングリストへの自動登録が審査されるが, 審査員に誰も登録されていないと審査を受けられずに全て却下される.
なお,-P オプションを使うと自動登録・退会のほかに アーカイブ取りだしなども不許可になってしまうため,このようにする.

コマンドメールメッセージファイルの編集

~alias/{accountholder,hostmanager}/text/ 以下には, ezmlm-manage がユーザーに対して送るメッセージが置かれている.

そのうち自動登録・抹消・受け取りアドレス変更に関する部分を削除しておく. ユーザにこれらの機能が有効であるとの誤解を与えないためである.

修正するファイルは

である. ~alias/hostmanager/text/ についても同様に行う.

alias@:$ cp ~alias/accountholder/text/bottom ~alias/accountholder/text/bottom.bak
alias@:$ vim ~alias/accountholder/text/bottom

alias@:$ cp ~alias/hostmanager/text/bottom ~alias/hostmanager/text/bottom.bak
alias@:$ vim ~alias/hostmanager/text/bottom

~alias/accountholder/text/bottom (~alias/hostmanager/text/bottom) の中身 (サンプル)

 --- mailing list <#l#> で利用可能な command 一覧です ---

 ezmlm は以下の command を自動で実行します。

 [[[ 絶対に mailing list 本体に command を送らないで下さい ]]]

 command は以下の address 宛に空の message を送ることで実行されます。

 [[[ 絶対に mailing list 本体に command を送らないで下さい ]]]

 command は以下の address 宛に空の message を送ることで実行されます。

   * 利用可能な command 一覧を取り出す

     <accountholder-help@ep.sci.hokudai.ac.jp>
     (Get help and commands)

   <購読の開始, 中止に関する記述を削除>

 以上の指示に従っても、望んだ結果にならない場合等は、
 mailing list accountholder の主宰者の
 accountholder-owner@ep.sci.hokudai.ac.jp 迄連絡して下さい。
 (返事が遅れるかもしれません。ご了承下さい)

 問題の解析を進めやすくする為に ezmlm から送られてきた message を
 『全ての header を含めて』添付してください。

 --- 以下に送られてきた message を添付しておきます ---
alias@:$ cp ~alias/accountholder/text/help ~alias/accountholder/text/help.bak
alias@:$ vim ~alias/accountholder/text/help

alias@:$ cp ~alias/hostmanager/text/help ~alias/hostmanager/text/help.bak
alias@:$ vim ~alias/hostmanager/text/help

~alias/accountholder/text/help の中身 (サンプル)

 これは汎用の help message です。
 貴方の message は ezmlm の command としては認識されませんでした。

 以下に利用可能な command address 以下の通りです:
  (空 message を指定された command address に送信することで実行されます)

   * mailing list <#l#> の説明を取り出します。
     <accountholder-info@ep.sci.hokudai.ac.jp>
     (Get information) 

   * mailing list <#l#> の『よく尋ねられる質問とその答え』を取り出します。
     <accountholder-faq@ep.sci.hokudai.ac.jp>
     (Get FAQ) 

   * 123 番から 145 番迄の message を取り出す
     <accountholder-get.123_145@ep.sci.hokudai.ac.jp>
     (一度に取り出せるのは最大で 100通です)

   * 123 番から 145 番迄の message の送信者と Subject: を取り出す
     <accountholder-index.123_456@ep.sci.hokudai.ac.jp>

   * message 12345 番の Subject: と同じ Subject: を持つ message を
     取り出す
     <accountholder-thread.12345@ep.sci.hokudai.ac.jp>

 command address 宛ての message は address のみが必要です。中身は
 何があっても無視されます。

   <受け取りアドレス変更, 購読中止に関する記述を削除>

alias@:$ cp ~alias/accountholder/text/sub-confirm ~alias/accountholder/text/sub-confirm.bak
alias@:$ vim ~alias/accountholder/text/sub-confirm

alias@:$ cp ~alias/hostmanager/text/sub-confirm ~alias/hostmanager/text/sub-confirm.bak
alias@:$ vim ~alias/hostmanager/text/sub-confirm

alias@:$ cp ~alias/accountholder/text/unsub-confirm ~alias/accountholder/text/confirm.bak
alias@:$ vim ~alias/accountholder/text/unsub-confirm

alias@:$ cp ~alias/hostmanager/text/unsub-confirm ~alias/hostmanager/text/unsub-confirm.bak
alias@:$ vim ~alias/hostmanager/text/unsub-confirm

~alias/accountholder/text/sub-confirm と ~alias/accountholder/text/unsub-confirm の中身 (サンプル)

 この mailing list <#l#>@ep.sci.hokudai.ac.jp では,
 自動登録・削除を受け付けていません.

メーリングリストへのアドレス登録

メーリングリストへのアドレス登録は, 管理用スクリプトを用いて機械的に行う. 管理用スクリプトは以下の 4 つである.

これらのスクリプトは /usr/local/bin/ に置き, パーミッションは 755 , 所有者は root とする.
なお, スクリプト作成にあたっては, http://flex.ee.uec.ac.jp/texi/perl-nyuumon/index.html,
http://flex.ee.uec.ac.jp/texi/perl/perl_toc.html を参考にした.


 $ sudo -s
 # cd /usr/local/bin
 # wget http://www.ep.sci.hokudai.ac.jp/~epmail/y2011/dvlop/script/list-2-ezmlm-sub
 # wget http://www.ep.sci.hokudai.ac.jp/~epmail/y2011/dvlop/script/list-2-ezmlm-unsub
 # wget http://www.ep.sci.hokudai.ac.jp/~epmail/y2011/dvlop/script/all-ezmlm-unsub
 # chmod 755 list-2-ezmlm-sub list-2-ezmlm-unsub all-ezmlm-unsub

list-2-ezmlm-sub

標準入力に与えられたユーザ名リストを,メーリングリストに登録するためのスクリプト. 使い方は以下の通りである.

 alias@:$ gate-user-list stable type:person | list-2-ezmlm-sub ~alias/accountholder/
 alias@:$ gate-user-list stable type:person | list-2-ezmlm-sub ~alias/hostmanager/
 

ユーザ名をリストしたファイル (listfile) がある場合は

 alias$ list-2-ezmlm-sub ~alias/accountholder/ < listfile
 alias$ list-2-ezmlm-sub ~alias/hostmanager/ < listfile
 

のように使用する.gate-user-list は gate-toroku-system のユーザアカウント名 問い合わせコマンド, ~alias/accountholder/ は, ezmlm-make で作成したメーリングリストのディレクトリである.
listfile の書式は,

とする.このスクリプトは,ユーザ名リストのファイル中の文字列に, @ep.sci.hokudai.ac.jp をつけ加えて,メーリングリストに追加する. ezmlm-sub を呼び出しているが,既に登録されているアドレスを登録しようとしても, ezmlm-sub は何らエラーを出さない.

list-2-ezmlm-unsub

標準入力に与えられたユーザ名リストを,メーリングリストから削除するためのスクリプト. 使い方は以下の通りである.

 alias$ gate-user-list stable type:person | list-2-ezmlm-unsub ~alias/accountholder/
 

ユーザ名をリストしたファイル (listfile) がある場合は

 alias$ list-2-ezmlm-unsub ~alias/accountholder/ < listfile
 

のように使用する.gate-user-list は gate-toroku-system のユーザアカウント名 問い合わせコマンド, ~alias/accountholder/ は, ezmlm-make で作成したメーリングリストのディレクトリである. listfile の書式は list-2-ezmlm-sub で扱うものと同じである. このスクリプトは,ユーザ名リストのファイル中の文字列に, @ep.sci.hokudai.ac.jp をつけ加えて,メーリングリストに追加する. ezmlm-unsub を呼び出しているが,既に登録されていないアドレスを削除しようとしても, ezmlm-unsub は何らエラーを出さない.

all-ezmlm-unsub

全てのアドレスを,メーリングリストから削除するためのスクリプトである.

 alias$ all-ezmlm-unsub ~alias/accountholder/
 

のように使用する.~alias/accountholder/ は, ezmlm-make で作成したメーリングリストのディレクトリである.

ML の定期更新

ML を定期更新するため, スクリプトを cron で定期的に起動するように設定する.
スクリプトは以下の 2 つで, ともに ~alias/bin/ 以下におく. パーミッションは 744 で所有者は alias とする.

 $ sudo -u alias -s
alias@:$ mkdir ~alias/bin/
alias@:$ cd ~alias/bin/
alias@:$ wget http://www.ep.sci.hokudai.ac.jp/~epmail/y2011/dvlop/script/ml_manage.accountholder
alias@:$ wget http://www.ep.sci.hokudai.ac.jp/~epmail/y2011/dvlop/script/ml_manage.hostmanager
alias@:$ chmod 744 ml_manage.*

accountholder ML と hostmanager ML とで,更新の手順が異なる.
後者では,いったん全てのアドレスを削除した後,必要なアドレスを登録する.
これは,登録抹消ホストの管理者・所有者と 登録承認済みホストの管理者・所有者は重複する可能性があるからである.
一方 accountholder ML の更新においては, 利用停止ユーザと承認済みユーザは重複しない.

alias@:$ crontab -e

以下のように書く. 空行を入れないように注意する.

 MAILTO="epmail"
 5 2 * * *       /var/qmail/alias/bin/ml_manage.accountholder
 15 2 * * *      /var/qmail/alias/bin/ml_manage.hostmanager
 

確認する.

alias@:$ crontab -l

この例では,毎日 02:05 に実行.
alias はメールを受け取らない設定になっているので,MAILTO で受取人を明示する.


最終更新履歴:2012/10/02 (三上 峻)