...

第9回 スコアリング スコアリング - Taki Internet Mail Private Lab.

by user

on
Category: Documents
8

views

Report

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
Fly UP