Comments
Transcript
第9回 スコアリング スコアリング - Taki Internet Mail Private Lab.
第9回 スコアリング 2001年12月にInternet Week 2001がパシフィ に適応されます。スコアの合計値が負の値になっ スコアリング コ横浜で開催されました。読者の中で参加され た場合は「0」とみなされます。 表1を見ても分かるように、削除と既読のデ た方もいるかと思います。その最終日に、日本 UNIX ユーザ会主催の「The Linux/BSD Day」 ●スコアリングとは フォルト値は無効な閾値になっていますから、 というイベントにおいて、筆者はMUAのセッ スコアリングとは、メッセージにスコア (点 利用する場合には有効な閾値を設定し直す必要 ションで Mutt の紹介を行いました。初っぱな 数) を付ける機能です。この機能はニューズリー があります。例えば、「値が 0 以下の場合に削 から司会者が Mutt をどう読むか分からなかっ ダを使っている人にはお馴染みの機能だと思 除する」 、 「49以下の場合に既読にする」 、 「100 たようで、 「エム・ユー・ティー・ティ」など います。投稿数の多いメーリングリストなど 以上の場合に重要フラグを付ける」という場合 と言っていたので、筆者が 「マットと読みます」 に対して、 「特定の人の投稿だけ読みたい」 、「特 には次のように設定します。 と訂正した、というエピソードも含めて「やは 定のキーワードが含まれるメッセージだけ読 り日本国内では知名度が低いのだなぁ」と思っ みたい」 といった場合に重宝します。またその てしまいました。 そのセッション内で挙手によるアンケート を行ったのですが、Mutt ユーザーは約 200 人 中 6 人(3%)と、やはり少ない結果となりま 逆に 「この人のメッセージだけは読みたくない」 、 「spamらしきメッセージを読みたくない」とい これらの閾値は、次の項で説明するscoreコマ う場合にも使えます。 ンドと組み合わせて慎重に設定してください。 した*1。一方、未だにmailコマンドやmhを使 ●設定変数 不用意な設定を行うと、メッセージがすべて削 用しているユーザーが多かったのには驚きま スコアリングに関する設定変数は表1のよう 除されたり、既読になってしまうようなことが した。この結果は「単に昔から同じ MUA を使 なものがあります。 起こります。特にそうする必要性がなければ、 い続けている人が多い」だけなのだともいえま Muttでスコアリングを使うには$scoreを設 削除の閾値はデフォルトのまま無効にしておい す。とはいえ、Sylpheed のユーザーの方が多 定しますが、これはデフォルトで設定されて た方が良いでしょう。 かったのですが。 いますから特に何もしなくてもいいでしょう。 一応、負け惜しみを言うと、Mutt は世界的 特定のフォルダのメッセージに対して、適応 に見れば日本国内における Mew と同じくらい したい/適応したくない場合は folder-hook スコアを付けるには設定コマンドscoreを使 人気のあるMUAなのですが……。日本語に正 で設定したり解除したりしてください。例え います。記述方法は次の通りです。 式に対応する次の安定版 1.4 が出て、各ディス ば、「friends」というフォルダにスコアリン トリビューションに標準で入ってから本領発揮 グの機能を適応したくない場合には、次のよ するといったところでしょうか。 うに設定します。 ンは 1.3.25i です。この 1.3.25i ではリモートか ら攻撃される恐れのあるセキュリティホールに ●スコアの付け方 score < pattern > < value > <pattern>にはパターンを記述します。た その1.4ですが、まだベータの状態でバージョ folder-hook . 'set score=yes' folder-hook friends 'set score=no' だし「~h」 、「~b」 、 「~B」は利用できません。パ ターンについて詳しくは、Mutt マニュアルの 「4.2. パターン」 (記事末の Resource[1]を参 対する修正を行っているため、1.3 系列を使っ スコアリングを設定すると、スコアの合計 照)を参照してください。また、本誌 2001 年 ている人は1.3.25iにバージョンアップするよう 値と閾値の関係からメッセージに対して 「削除 8 月号掲載「第 2 回パターン」でも説明を行っ にお願いします。 フラグ D を付ける」 、「既読にする」、「重要フ ていますので、そちらもご覧ください。 また、安定版の1.2.5iにも同様の問題があり、 ラグ!を付ける」ことが自動的に行えます。 <value>にはスコアの値を記述します。ス 1.2.5.1iにバージョンアップしました。しかし、 削除と既読に関しては閾値以下の場合に適 コアの値は、各 score コマンドで適応された この 1.2.5.1i はセキュリティホールの修正だけ 応され、重要フラグの場合は閾値以上の場合 スコアの合計値を正または負の整数で指定しま を行ったものであり、他のバグの修正は行われ ていません。そのため、特に 1.2 系列を利用し 続けたい理由がなければ、より安定している 1.3.25i の方をお使いください。 前置きはともかくとして、今回はスコアリン グについて解説を行います。 【表 1】スコアリングの設定変数 設定変数 機能 score スコアの適応 yes score_threshold_delete 削除フラグ適応の閾値 -1 score_threshold_read 既読適応の閾値 -1 score_threshold_flag 重要フラグ適応の閾値 9999 * 1 質疑のメモは http://www.jus.or.jp/bsd-linux-day/ にあります。 64 set score_threshold_delete=0 set score_threshold_read=49 set score_threshold_flag=100 百万人の Mutt ∼ Mutt 活用講座∼ デフォルト値 す。ただし「=50」のように「=」を付けて値を 設定した場合には、その値が適応されるように なります。 表示する場合は「l」 (limit)の入力後に次のパ score '~f freemail\.example\.org$' -40 score '~s "(お得 | 副収入)"' =0 scoreコマンドで設定したスコアのエントリ 特定の人が投稿したメッセージや、特定の を削除する場合には unscore コマンドを使い Subject を含むメッセージを既読にしない場合 ます。記述方法は次の通りです。 には、次のように既読の閾値より大きい値にな unscore < pattern > [ < pattern > ……] < pattern >には、score コマンドで設定 したパターンのうち、解除したいパターンを記 るようにします。 score '~f [email protected]' +10 score '~s announce' +20 ターンを入力します。 ~n 50- ●スコアによるソート 設定変数 $ s o r t あるいは $ s o r t _ a u x に 「score」や「reverse-score」を設定すること によって、インデックス画面でスコアによるソー トが可能になります。また、インデックス画面 述していきます。すべてのエントリを解除する パターン「~A」で加える値を「50」に変える に置いて「o」 (sort-mailbox)や「O」 (sort- には「* 」とだけ記述します。 場合には、次のように一度解除してから設定を reverse)を入力し「c」 (score)を入力するこ スコアの初期値は「0」です。削除フラグや し直します。これは、フォルダごとにスコアの とでもスコアによるソートが可能です。 既読フラグの閾値を「0 以上」に設定している 設定を変える場合などに使用します。 場合、すべてのメッセージに削除フラグや既読 フラグが付くようになります。しかし、このよ うな動作が好ましくない場合には、すべてのメッ セージに一致するパターン「~A」を使い、設定 unscore ~A score ~A +50 スコアリングの利用例 スコアリングの利用例を2つほど紹介します。 した閾値よりも大きい値を設定します。例えば、 ●スコアの表示 ●利用例 1 削除の閾値「0」 、既読の閾値「49」とした場合、 リスト1のように、設定変数$index_format 非常に投稿数の多いメーリングリストがある 「削除したくはないが既読にしてもよい」とき のフォーマット中にスコアを示す「%N」 (ここ とします。しかも、あまり意味のないメッセー は、次のようにすべてのメッセージに「40」を では3桁表示させるため「%3N」 )を記述すると、 ジが非常に多く、すべてのメッセージを読み切 加えるようにします。 リスト2のようにインデックスにスコアを表示 ることはできず、しかも読む価値がない。しか することができます。 し、ごく一部の人のメッセージに関しては、読 score ~A +40 んだり議論したりする価値があります。このよ 特定のドメインのメールアドレスからのメッ ●スコアのパターン うな場合、新着メッセージの中で、特定の人の セージや、Subject に好ましくない特定の単語 パターン「~n MIN-MAX 」で特定の範囲のス メッセージ以外を既読にして、新着メッセージ が含まれているメッセージを削除したい場合に コアに対して操作を行うことができます。例え としては拾わないように設定してみます。 は、次のように負の値や「0」を指定します。 ば、スコアの値が 50 以上のメッセージだけを まず、このメーリングリストのフォルダにの みスコアリングを適応する場合はリスト3の (1) のように設定します。このとき既読フラグの閾 【リスト 1】インデックスに %N を使って 3 桁のスコアを付ける set index_format="%4C %Z (%3N) %{%b %d} %-15.15L %s" 値を「49」とします。続いて、特定の人のメッ セージを既読にしないために、リスト3の(2) のようにその人からのメッセージに対して 「+50」 を加えます。最後に、リスト 3 の(3)のよう 【リスト 2】リスト 1 の結果(インデックスに 3 桁のスコアを付ける) 3442 s 3443 Ns 3444 N ( 40) Nov 30 Prahlad Vaidyan patch-1.3.23.cd.edit_threads-6[.CYA] not ( 50) Nov 30 Thomas Roessler [Announce] mutt-1.3.24i is out (BETA). ( 50) Nov 29 Dairy Wall Lime +->Re: [Announce] mutt-1.3.24i is out (BE に設定して、フォルダを開いたときに新着メッ セージがあるスレッド以外のスレッドを畳み込 むようにします。なお、デフォルトでスレッド 表示する設定が行われているとします。 ここで、$collapse_unread は未読のメッ 【リスト 3】特定の人の新着メッセージのみを開くようにする # (1)デフォルト score なし、 maillist フォルダ score あり folder-hook . 'unset score' folder-hook . 'reset score_threshold_read' folder-hook maillist 'set score' folder-hook maillist 'set score_threshold_read=49' #(2)特定の人を +50 folder-hook maillist 'unscore *' folder-hook maillist 'score "~f foo@example\.com$" +50' folder-hook maillist 'score "~f bar@example\.com$" +50' セージがあるスレッドを畳み込む設定で、 「push \eV 」はフォルダを開いたときに「Esc V」キー を入力することを表しています。「Esc V」は、 すべてのスレッドを畳み込みむか開くかを切り 【画面1】 リスト3の実行結果(特定の人の新着メッ セージのみを開く) #(3)maillist フォルダ未読メッセージ畳み込みなし folder-hook . 'set collapse_unread' folder-hook maillist 'unset collapse_unread' folder-hook maillist 'push \eV' 2002.3 Linux Japan 65 替える collapse-all 機能のキーバインドです。 などのフィルタリング可能なMDAでもできる 以上のように設定すると、フォルダを開いた ことですし、使い勝手もその方が良いでしょう。 続いて、削除の閾値を「0 」、既読の閾値を ときに、特定の人のメッセージの新着メッセー しかし、Mutt のスコアリング機能には次のよ 「49」に設定し、通常のメッセージのスコアは ジのあるスレッドのみが開き、その他のスレッ うな利点があります。 ドが畳み込まれて画面1のような状態になりま 既読の閾値以上の値(ここでは50)になるよう ・削除前の確認が行えるため、設定ミスによ す。これで余計なメッセージを読まなくて済む るメッセージ紛失の危険性が少ない ようになります。 ・日本語のSubjectを条件にすることが可能 ・MDA を使わなくても Mutt だけで可能 ●利用例 2 るからです。 にします。設定はリスト 4 の(2)のようにな ります。なお、削除せずに「spam コレクショ ン用のフォルダに移動させたい」という物好き な人は、$score_threshold_deleteを設定せ ずに削除フラグの閾値はデフォルトのままにし spam対策用にスコアを設定してみましょう。 そこで、ここで説明する利用例では、MDAに ておいてください。 次に挙げる条件に一致するメッセージを削除し よるフィルタリングを行わず、スプールフォル 条件(a)に一致する場合は確実に spam で たり、既読にしたり、別のフォルダに移動した ダのメッセージに対するスコアリングを行って あると分かっているので、スコアを「0」にし りします。 みましょう。条件を表2、設定例をリスト4に て削除するのは問題ないでしょう。設定例は 示します。 リスト 4 の(3)のようになります。条件(b) まず、リスト 4 の(1)のように、デフォル ∼(d)は spam と断定はできないので、とり トでは既読と削除のスコアリングを適応しない あえずスコアを減らして既読にし、新着メッ ように設定しておきます。これは、スコアリン セージとして拾わないようにします。この中 グで削除フラグを付ける場合、設定を誤るとす で、2 つ以上の条件に一致する場合は spam で べてのメッセージを削除してしまう可能性があ ある可能性は高いと考えられます。そこで該 ・特定のメールアドレス ・特定のドメイン ・メーリングリスト宛でも自分宛でもない ・Subject に特定の単語を含む このような条件設定なら、procmailやmaildrop 当メッセージを削除するために、2つの条件で 【表 2】spam 対策用スコアの設定 条件 (a)特定のメールアドレス (b)特定のドメイン スコアが「0」になるように、それぞれのスコ 設定内容 設定例 アを「-25」とします。設定例はリスト4の(4) あらかじめ spam と分かっている特定の メールアドレスから来たメッセージのス コアを「0」にする リスト 4 の(3) ∼(6)のようになります。 特定のドメインから来たメッセージのス リスト 4 の(4) 以上のように設定すると、スプールフォルダ (c)メーリングリスト宛でも自分宛でもないメール (d)Subject に特定の単語を含むメール スコアを「25」減らします。メーリング リスト宛のメッセージのスコアを「+25」 にしているのは自分宛でないメッセージ で「-25」になるのを相殺するため リスト 4 の(5) Subject に特定の単語が含まれているメッ セージのスコアを「25」減らす リスト 4 の(6) 【リスト 4】spam 対策用スコアの設定 #(1)デフォルト score なし folder-hook . 'unset score' folder-hook . 'reset score_threshold_delete' folder-hook . 'reset score_threshold_read' を開いたときには、疑わしきメッセージは既読 になり、spamと判断されたメッセージには削 コアを「25」減らす 除フラグが付きます。 また、削除しないで、spamコレクションと して他のフォルダに移動させる場合には、リ スト5のようなマクロを記述してみると良いで しょう。 最後に 実を言うと、筆者はこの記事を書いておきな がらスコアリング機能はほとんど使っていませ ん。今回の記事を書くにあたって利用例を考え #(2)閾値と初期値を設定 folder-hook '!' 'set score' folder-hook '!' 'set score_threshold_delete=0' folder-hook '!' 'set score_threshold_read=49' folder-hook '!' 'unscore *' folder-hook '!' 'score ~A 50' #(3)(a)特定のメールアドレス folder-hook '!' 'score "~f spam@example\.org$" =0' てみたのですが、利用例1に関しては、実際に 使ってみてこれは結構重宝すると思いました。 利用例2に関しては、個人的にはmaildropでの フィルタリングで十分に満足しているため使わ ないでしょう。 「spam避け」 という意味ではへッ ダに記述されていることがあるX-Mailerフィー ルドなどでフィルタリングするのが効果的です。 これは大抵のspamが特定のバルクメーラーで #(4)(b)特定のドメイン folder-hook '!' 'score "~f freemail\.example\.org$" -25' 送られているからです。しかし Mutt のスコア #(5) (c)メーリングリスト宛でも自分宛でもない folder-hook '!' 'score "!~p" -25' folder-hook '!' 'score "~C mutt-users@mutt\.org$" +25' folder-hook '!' 'score "~C mutt-dev@mutt\.org$" +25' ンが使えないため、X-Mailerフィールドでパター #(6)(d)Subject に特定の単語を含む folder-hook '!' 'score "~s \"( お得 | 副収入)\"" -25' folder-hook '!' 'score "~s \"(bulk|shop|market)\"" -25' 66 百万人の Mutt ∼ Mutt 活用講座∼ リングでは、特定のへッダに対してしかパター ンを一致させるということができません。その ため、maildropなどのMDAでフィルタリング をした方が効果的です。 【リスト 5】spam コレクション用マクロ macro index \eS 'T~n <50^m;s=spam^my' Mutt も歩けば棒に当たる 単なる Mutt ユーザーの na6ce です。 い返すと恥ずかしいことばかりやっていました。 書き換え)、押すとシャットダウン(しかも sudo で) 今まで執筆された方々と違い、Muttの発展には何 Web ブラウズには Netscape Navigator を使って してしまう地雷スクリプトを作ったり、ゴリ押しで も貢献していない私ですが、なぜかお声が掛りまし いたので、しばらくは Netscape のメーラを使って spamを排除するスクリプトを作ったり……。これら た。開発関係者以外でもこんな使い方できるんだ、程 いました。しかし当時はとにかく落ちまくるし、ア は私のページに置いてあります([2])。かつての私 度に思っていただけければ幸いです。 ドレス補完の問題もあって、日常使うにはちょっと にとって、メーラとは「メールの読み書きを行うも ■ Mutt との出会い ためらわれるものがありました。そこで 「自分に合っ の」という認識だけだったので、これだけ無茶でき たメーラを探そう」と探しはじめて早 3 年(ウソ)、 るとなったら、もう離れられません。もっとも今は 私がMuttと出会ったのは「Kondara MNU/Linuxに Muttというメーラ(正確にはMUAですが)を見つけ 落ち着いていますけど……。 付いていた」 。それだけ。……ではあまりにもひどす ました。 今、一番使う機能はパターンマッチです。Tキーで ぎるので、そもそもKondaraを使い始めた経緯から タグ付けモードにし、 「~d 01/01-31/01」とすると、 お話しますね。 All mail clients suck, this one sucks less. 私が Linux を始めたきっかけは Perl でした。理由 date フィールドが 1 月 1 日∼ 1 月 31日までのメール にすべてタグを付けることができます。その後、タ は、単純に「タダで開発環境が手に入る」程度でした この自信に打たれました。これまた、自分のHDDの (後に、私が使っているプロバイダではCGIを許して 中にはすでにMuttが存在する事実に驚きながらも、プ いないことが分かって涙したのですが) 。 最初はVine ロンプトから 「mutt」 と打ち込んでみました。しかし、 私はMaildirを使っていますが、メールのアーカイ Linuxを使っていましたが、残念ながらXが起動しま メールを送るどころか読むことすらままなりません。 ブを取るときにはmbox形式で保存しています。追記 せん。いろいろ試しても動かず、Windowsを起動し 最初の感想。 「使えねー」 。 があまりない上、1つのファイルだと検索が楽ですの て情報収集してみると、使っているビデオカードは Vineでサポートされていないものだったのです。さ ■ズルズルと引き込まれる グ付きメールに対して;キーでtag-を呼び出し、sキー (save)でまとめて保存しています。 で。昔はこれをマクロでF5キーに割り当てていまし た* 2。 らに調べてみると、Red Hat Linux 6.0 ではサポー 第一印象は激悪だったMuttですが、私にしては珍 あと、d キー(delete)を押すと即座に削除してし トされている模様。そこで、当時 1.0 リリース前の しく「メールの送受信ができるまでやってみよう」と まうので、リストAのような設定ではなく、deleted Kondara を使い始めました。 思いました。幸い、英文を読むのに不便はなかった というフォルダを作成し、削除候補のメールはいっ でも Linux 自体の知識がないので、Web やメール ので、docやFAQを読んでいくにつれ、少しずつMutt たんこのフォルダに移してから削除するようにしま なんてできません。今はダイヤルアップ設定ツール の仕組みが分かってきました。 した(deleted に関する folder-hook はデフォルト などがあるので、ほとんどの人はそんな経験はない Mutt 中毒になるコツを 1 つ。メーラで「やりたい 指定のものより後に書かないとエラーになります)。 これで誤ってメールを削除することがなくなりまし でしょうが。それどころか、起動はできてもshutdown こと」を持つことです。Mutt なら、ほぼ確実にその コマンドを知らなかったので24時間ブン回しまくり。 「やりたいこと」が実現できるでしょう。私の「やり 当時は情報収集に Windows を使っていたのですが、 たいこと」は、メーリングリストから来たメールを と、このような感じでMuttを使っています。今挑 マシン1台で HDDを差し替えてWindowsと Linuxを 自動的に専用のフォルダに入れることでした。これ 戦(&停滞)中なのは、spamメールのデータベース 使い分けていたので、shutdownコマンドを知らない はすぐ実現できました。厳密にはMuttでなくprocmail 化。MySQLと連動してspamを排除しようと試みて 私は、 ですが。 います(が、いつまで経っても完成しません)。 暇が その後は無茶ばかりしていました。Perlスクリプ あったら私のページを覗いてみてください。何かま トでキーバインドをランダムに変更して (.muttrcの た無茶しているかもしれません。 本体の電源プチ(!!) た。 (na6ce) ↓ HDD を入れ替えて Windows を起動 ↓ プリントアウト ↓ Windows を終了 【リスト A】選択中のメールを d キーで消してしまう設定 folder-hook . 'set delete=yes' folder-hook . 'macro index d "s=deleted/ny" [delete]' folder-hook . 'macro pager d "s=deleted/ny" [delete]' ↓ HDD を入れ替えて Linux を起動 なんてスゴイことをやっていました。 さて、そんなこんなで少しずつコマンドを覚えて いき、それなりにLinuxが使えるようになった頃です。 PPxP なんて素晴らしいツールが(自分の HDD の中 【リスト B】delete フォルダに退避してからメールを削除する設定 folder-hook \!/deleted/ 'set delete=ask-yes' folder-hook \!/deleted/ 'bind index d delete-message' folder-hook \!/deleted/ 'bind pager d delete-message' に)存在する驚愕の事実を知ったのは……、と今思 * 2 興味のある方は私のページ(http://home.att.net/~na6ce/archive.html)を参照ください。 そういえば、昨年の夏ごろから韓国からたく さんのspamが来るようになりました。HTML なメールな上に韓国語で書いてあるので読めま [1] Japanese Mutt Manual http://ha4.seikyou.ne.jp/home/Kohtaro.Hitomi/mutt/ せん。無駄な努力はいい加減やめてほしいもの です。もっとも、読もうと思えば読めないこと [2] Mutt 王――Mutt マスターを目指す (2002 年 1 月 10 日現在、休止中です) http://home.att.net/~na6ce/mutt.html もないのですが。ちなみに、本文中に書いた spam コレクション用のフォルダに移動させて いる物好きな人とは筆者のことです。 ・ Mutt Japanese Edition http://www.emaillab.org/mutt/ 2002.3 Linux Japan 67