[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .

ケーススタディ: フォローする場合なら誰でも投稿可能なML

「メンバー以外からの投稿」 を受けて 「投稿が拒否される」ケースが、けっこうあります。

もちろん自分の使っているアドレスを変更したのを忘れたとか、 サブドメインがあったりなかったりなど、 メールの使い方の間違いもあれば、 転送先で読んで、そこから返事を書いてエラーになるケースもあります。

そこで、2004/10/28 以降の article_post_restrictions には、 特定の条件を満たせば短時間だけ From: のアドレス(認証に使うメールアドレス)にかかわらず、 投稿可能なオプション機能が追加されています。

現在の実装は 「本MLの記事の配送先のユーザが、 その記事に対してのリプライをするのであれば通してやろう」 というものです。 ただし時間制限つきです。 具体的には、In-Reply-To: もしくは References: で、 過去(一週間以内)の記事の message-id: を参照しているメールに対しては、 (From: のメールアドレスに関わらず)記事の投稿を許す機能です。

レシピ

1. フォローする場合なら誰でも投稿可能なML

1. フォローする場合なら誰でも投稿可能なML

設定例は次のようになります。 check_article_thread が、このオプションです。

article_post_restrictions       =       reject_system_special_accounts
                                        check_article_thread
                                        permit_member_maps
                                        reject
これをデフォルト設定にしておいたほうが便利な気もしますが、いまのところ、 そういう設定になっていません。 この機能を利用したい場合、明示的に article_post_restrictions を変更して下さい。

注: fml8 2008/08/17 以降のバージョンでは isolate (SPAM の隔離)が推奨です。

article_post_restrictions       =       isolate_system_special_accounts
                                        check_article_thread
                                        permit_member_maps
                                        isolate

議論

ま、ようは cookie みたいなもんですよね。 課題は色々あります。

1) 許す時間の長さを、どのくらいまで短くするのが適正か?

article_post_article_thread_lifetime = 86400
$article_post_article_thread_lifetime という変数で制御できるようにしてみました。 デフォルト値は一日です。

それより、時間制限って、いつからいつまでが妥当なのでしょうか? スレッドの始まった時からN秒? それとも スレッドで最後に投稿された記事からN秒? どちらが妥当なのでしょうか?

2) subject: とスレッドの依存関係両方をチェックすると、 かなり偽造するのが大変になるだろうと思います。 [1]

もっとも、 たいてい message-id の方が長いことが多いので、 From: 偽造よりこっちのほうが突破は難しいですかね?

でも、でも、駄目駄目な message-id をつける mailer だと、 逆に弱くなりますね。 UNIXタイム@ホスト(FQDNじゃない) みたいなへぼいやつだと、 予測する範囲がすごく小さくなりますよね…

レシピ

1. 特定少数の人だけがスレッドをたてられるML。

1. 特定少数の人だけがスレッドをたてられるML。

これ、モデレータシステムより便利だと思うのですが、どうでしょうか?

たとえば次のような設定です。 こうすると、 疑似的に 「スレッドをたてる小数の人(管理者) + スレッドへのリプライをする管理者以外の人たち」 という運用になりますよね。

member_maps			=       $tmp_dir/members-thread-init

article_post_restrictions       =       reject_system_special_accounts
                                        check_article_thread
                                        permit_member_maps
                                        isolate
注: fml8 2008/08/17 以降のバージョンでは reject ではなく isolate (SPAM の隔離)が推奨です。

まず members-thread-init に登録されている人だけは 「いつでも投稿」できます。 これ以外のメンバーは、通常、投稿を拒否されます。 しかし、 投稿されたメールに返信をした場合は(その場合にかぎり) check_article_thread 命令で投稿が許されるという仕組みです。

つまり、最初に管理者の人が話題をふる。 その話題へのフォローだけはMLに流れる。 ようするに、 管理者の人だけが「新規の話題を紹介する」ことが出来る仕組みです。 モデレータ風だけど、技術的には少し違う仕掛けです。

このほうがモデレータより簡単で便利だと思うんですが、どうでしょうか?

なお、ネタふりをする人の認証も PGP を使うとより良いでしょう。

member_maps			=       $tmp_dir/members-thread-init

article_post_restrictions       =       reject_system_special_accounts
                                        check_article_thread
                                        check_pgp_signature
                                        isolate
注: fml8 2008/08/17 以降のバージョンでは reject より isolate (SPAM の隔離)が推奨です。

Notes

[1]

真面目に確率計算をしてくれると、 卒論くらいに、ちょうど良いかなぁ(そうか?)。 誰かやりたい人がいたら、御一報を:-)

[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .
Copyright (C) 1993-2022 Ken'ichi Fukamachi mail:< fukachan at fml.org >