[PREVIOUS CHAPTER]
[NEXT CHAPTER]
5 モデレータ
この章は『MLに流す前に査読をする人がいるというシステム』についてです。
注: モデレータは moderator コマンドを使うためにMLのメンバーでないと
だめです。members ないし members-admin にモデレータの人の
アドレスを追加しておいて下さい。
5.1 Overview
モデレーター機能は、以下のような査読投稿システムです。
1 ML宛に来たメールは配送されず
2 一旦モデレーターへフォワードされます
3 モデレーターは内容を査読後承認するなら
あるキーワード(パスワード)をMLサーバへ送ることで
ML全体へ配送されます。
(このキーワードを送る方法については後述します)
変数は config.ph で
$PERMIT_POST_FROM = "moderator";
となっている状態です。makefml config の設定画面では
[POST]
1 PERMIT_POST_FROM moderators
のようになります。コマンドについても
[COMMAND]
3 PERMIT_COMMAND_FROM moderators
設定はできますが、いちいち承認を出すコマンドというのは意味がない気がし
ます。が、実際にはコマンドへの承認をだすことができます:)
tricky なコードの副産物で $MAIL_LIST != $COMMAND_ADDRESS なのに
$MAIL_LIST も # moderator コマンドは理解してしまいます。このままでもい
いような気がしてそうなってます。$PERMIT_COMMAND_FROM が moderators は
tricky なことをしているので、ちょっとねぇ…
5.2 承認の仕方 ($MODERATOR_FORWARD_TYPE == 2 デフォールト)
$MODERATOR_FORWARD_TYPE という変数があります。デフォールトは2です。
次のようなメールがモデレーターに来ます。
Moderated $MAIL_LIST (elena@fml.org) receives a submit from
fukachan@fml.org.
Please check it. If you certify the following article,
please send to elena-ctl@fml.org
the following line (only this line!)
moderator certified 199711032027.709982
------- Forwarded Message
メール本文
------- End of Forwarded Message
メールはMLサーバも保存しています。メール本文の内容を承認したなら、
moderator certified 199711032027.709982
の行だけをコマンド用のアドレスに送って下さい。そうするとMLサーバは自
分が保存しておいたそのメールを配送します。
モデレーターか否かはこの特別な文字列(moderator certified 数字)を知っ
ているか否かです。この数字は毎回違うもるので、ある意味で暗合レベルの非
常に低い one time password だとみなすこともできます。
このメールが送られてくる人は誰でもモデレーターになれます。デフォールト
は $MAINTAINER ですが、複数の人をモデレーターにするなら moderators と
いうファイルを作り actives や members のように一行一アドレス書いていっ
て下さい。
5.3 承認の仕方 ($MODERATOR_FORWARD_TYPE == 1 もしくは 未定義)
承認を求めるメールがフォワードされるのは $MAINTAINER です。承認したか
否かはパスワード認証になります。パスワードを知っている人がモデレータと
いえます。MLサーバへ送るメールのヘッダに Approval: line をつけて
1 メールは一回管理者へフォワードされる。
2 管理者が査読してOKとみなしたらMLへ投げる。
Approval: password フィールドをヘッダにつけてMLに
投げればメールは配送される。
パスワードはリモート管理のし方と同様に保守して下さい。
問題としては
Approval: password をつかうのはいやだ
#こういう実装はいやなんだけど、してるだけ
ださいMUA(メールユーザインターフェイス)がある
などがあるので回避策の一つとして
admin forward
フォワードする本文
というコマンドもあります。
admin pass あなたのパスワード
admin forward
本文(この下は全部フォワードされる)
5.4 承認の仕方 ($MODERATOR_FORWARD_TYPE == 3 もしくは 未定義)
5.3
Type III は I の変形です。パスワードを知っている人(モデレータ)は査読に
関わらず出せます。Approval: パスワード つきでメールをだせば査読にまわ
らずそのまま通過します。
See also "admin forward" command.
5.3
5.5 メンバーを信頼度に応じて3段階に分ける
メンバーを3段階に分けることを考える。
group 1: モデレータ(の人々)。無条件に信頼される。
group 2: 信頼できるメンバ。普通に送ると普通に配送される。
group 3: 一般メンバ。普通に送るとモデレータに転送され、
通常のモデレータの手順を踏む。
通常モデレータモードは3段階ではないので改造が必要である。
ここではこれをHOOKでこれを実現することにする。
1. まずデフォールトはモデレータモードにする。makefml config なりcfに書
くなりして
$PERMIT_POST_FROM = "moderator";
になるようにする。
2. priv というファイルをMLのHOMEにつくり、group 2 に対応する信頼でき
るメンバー(だがモデレータではない)の群を登録する(一行一アドレス)。
3. その上で以下のようなHOOKをcfの最後に入れて config.ph を再生成する。
$START_HOOK = q#
$PRIV_LIST = "$DIR/priv";
if (&CheckMember($From_address, $PRIV_LIST)) {
$PERMIT_POST_FROM = "members_only";
}
#;
5.6 queueのexpire
$MODERATOR_EXPIRE_LIMIT (default 14 == 2 weeks)
submitされたが承認されなかったメールは2週間(デフォールト値)たったら消
す。期間は $MODERATOR_EXPIRE_LIMIT という変数で制御する。
[PREVIOUS CHAPTER]
[NEXT CHAPTER]