以下は,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 つでしょう. |
これを作る.登録するアドレスは grey 上のもののみとし,gate-system
から受け渡してもらう.
メーリングリストからの削除・登録アドレスの変更には応じない.
$ sudo -u alias -s $ whoami alias $ cd ~alias/ $ ezmlm-make -gsu ~alias/accountholder ~alias/.qmail-accountholder accountholder ep.sci.hokudai.ac.jp $ 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/accountholder/text/bottom の中身
(~alias/hostmanager/text/bottom も同様)
--- mailing list <#l#> で利用可能な command 一覧です --- ezmlm は以下の command を自動で実行します。 [[[ 絶対に mailing list 本体に command を送らないで下さい ]]] (mailing list 本体に送られた command は、ezmlm には見えず、 購読者全員に送られてしまいます。結果として購読者全員を困惑させる ことになるでしょう) command は以下の address 宛に空の message を送ることで実行されます。 <自動登録・削除に関する記述を削除> * この mailing list に関する情報を取り出す。 (Get information) <accountholder-info@ep.sci.hokudai.ac.jp> * この mailing list で、しばしば尋ねられる質問 (FAQ) に関する 情報を取り出す。 (Get FAQ) <accountholder-faq@ep.sci.hokudai.ac.jp> * 123番から 145番迄の message を archive から取り出す。 (Retrieve messages from #123 to #145) <accountholder-get.123_145@ep.sci.hokudai.ac.jp> * 123番から 456番迄の Subject: 行と投稿者の一覧を archive から取り出す。 (Retrieve subject/author list from #123 to #456) <accountholder-index.123_456@ep.sci.hokudai.ac.jp> 一度の request で最大 2000個取り出せます。 また、番号は 100個単位で丸められます。 (この例の場合は 100番から 499番迄になります) * 12345 番から始まる一連の message を archive から取り出します。 (Retrieve `thread' from message #12345) <accountholder-thread.123@ep.sci.hokudai.ac.jp> command address 宛の message は空である必要はありません。 (ezmlm は内容を一切見ていません、address のみが重要です) <受け取りアドレス変更に関する記述を削除> --- 以下に送られてきた request message を添付しておきます --- ~alias/accountholder/text/{sub-confirm,unsub-confirm}: この mailing list <#l#>@ep.sci.hokudai.ac.jp では, 自動登録・削除を受け付けていません. |
ユーザ名のリストからメーリングリストへの登録・削除を行うスクリプト・
全てのアドレスをメーリングリストから削除するスクリプトを以下で示す.
これらは/usr/local/bin/ に置くこと.
http://flex.ee.uec.ac.jp/texi/perl-nyuumon/index.html,
http://flex.ee.uec.ac.jp/texi/perl/perl_toc.html
を参考にした.
標準入力に与えられたユーザ名リストを, メーリングリストに登録するためのスクリプトである.
$ gate-user-list stable | list-2-ezmlm-sub ~alias/accountholder/ $ list-2-ezmlm-sub ~alias/accountholder/ < listfile
のように使用する.~alias/accountholder/ は,
ezmlm-make で作成したメーリングリストのディレクトリ.
listfile がユーザ名リストのファイル.
gate-user-list は gate 班作成のプログラム.
これらのフォーマットは,
#!/usr/bin/perl #Kyoma TAKAHASHI 1999.7.4 # 1999.7.10 # 1999.7.12 # list-2-ezmlm-sub mailinglist_directory $ezmlmsubbin = '/usr/local/bin/ezmlm/ezmlm-sub'; $domain = '@ep.sci.hokudai.ac.jp'; $mldir = shift; while(<>) { chop($local = $_); if($local ne '') { if(/@/) { $address = $local; } else { $address = $local.$domain; } system "$ezmlmsubbin $mldir $address"; } }
> gate-user-list defunct | list-2-ezmlm-unsub ~alias/accountholder/ > list-2-ezmlm-unsub ~alias/accountholder/ < listfileのように使用する.~alias/accountholder/ は,ezmlm-make で作成したメーリングリストのディレクトリ.listfile がユーザ名リストのファイル.フォーマットは,list-2-ezmlm-sub で扱うものと同様.このスクリプトは,ユーザ名リストのファイル中のユーザ名に @ep.sci.hokudai.ac.jp をつけ加えたアドレスを,メーリングリストから削除する.ezmlm-unsub を呼び出しているが,登録されていないアドレスを削除しようとしても,ezmlm-unsub は何らエラーを出さない.
#!/usr/bin/perl #Kyoma TAKAHASHI 1999.9.4 # list-2-ezmlm-unsub mailinglist_directory $ezmlmunsubbin = '/usr/local/bin/ezmlm/ezmlm-unsub'; $domain = '@ep.sci.hokudai.ac.jp'; $mldir = shift; while(<>) { chop($local = $_); if($local ne '') { if(/@/) { $address = $local; } else { $address = $local.$domain; } system "$ezmlmunsubbin $mldir $address"; } }
> all-ezmlm-unsub ~alias/accountholder/ |
#!/usr/bin/perl #Kyoma TAKAHASHI 1999.7.5 # all-ezmlm-unsub mailinglist_directory $ezmlmunsubbin = '/usr/local/bin/ezmlm/ezmlm-unsub'; $ezmlmlistbin = '/usr/local/bin/ezmlm/ezmlm-list'; $mldir = shift; open(CURRENT,"$ezmlmlistbin $mldir|"); while(<CURRENT>) { chop($address = $_); system "$ezmlmunsubbin $mldir $address"; } close(CURRENT);
$ sudo -u alias -s Password: $ whoami alias $ vi ~alias/bin/ml_manage.accountholder $ vi ~alias/bin/ml_manage.hostmanager 編集する.編集結果は, $ more ~alias/bin/ml_manage.accountholder |
#!/usr/bin/perl # Kyoma TAKAHASHI 1999.09.30 $domain = '@ep.sci.hokudai.ac.jp'; open (GATEUL,"/usr/local/bin/gate-user-list stable |"); while (<GATEUL>) { chop ( $user = $_ ); if ( $user ne '' ) { open (GATEUS,"/usr/local/bin/gate-user-show $user |"); while (<GATEUS>) { if (/type/) { ($typeq) = /type: (.*)/; } } close (GATEUS); if ( $typeq eq 'person' ) { $address = $user.$domain; system "/usr/local/bin/ezmlm/ezmlm-sub ~alias/accountholder/ $address"; } } } close (GATEUL);
system "/usr/local/bin/gate-user-list defunct | /usr/local/bin/list-2-ezmlm-unsub ~alias/accountholder/"; $ more ~alias/bin/ml_manage.hostmanager |
accountholder ML と hostmanager ML とで,更新の手順が異なる. 後者では,いったん全てのアドレスを削除した後,必要なアドレス を登録する. これは,登録抹消ホストの管理者・所有者と 登録承認済みホストの管理者・所有者は 重複する可能性があるからである. 一方 accountholder ML の更新においては, 利用停止ユーザと承認済みユーザは重複しない.#!/usr/bin/perl # Kyoma TAKAHASHI 1999.09.22 system "/usr/local/bin/all-ezmlm-unsub ~alias/hostmanager/"; open (NUM,"/usr/local/bin/gate-ip-list stable | wc -l|"); $num = $_ while(<NUM>); close (NUM); chop ($num); if ( $num > 0 ){ system "/usr/local/bin/gate-ip-show -f owner `/usr/local/bin/gate-ip-list stable` | /usr/local/bin/list-2-ezmlm-sub ~alias/hostmanager/"; system "/usr/local/bin/gate-ip-show -f root `/usr/local/bin/gate-ip-list stable` | /usr/local/bin/list-2-ezmlm-sub ~alias/hostmanager/"; }
$ chmod 744 ~alias/bin/ml_manage.* # crontab -e 編集する.編集結果は, # crontab -l MAILTO="epmail"5 2 * * * /var/qmail/alias/bin/ml_manage.accountholder 15 2 * * * /var/qmail/alias/bin/ml_manage.hostmanager この例では,毎日 02:05 に実行. alias はメールを受け取らない設定になっているので, MAILTO で受取人を明示する. |
最終更新履歴: | 2003/01/09 (島沢竜平) |