[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
9.1 プロセス/接頭引数 | ||
9.2 利用者との相互作用 | Gnus に多くの質問を尋ねさせる | |
9.3 シンボルの接頭引数 | いくつかの Gnus の関数に選択権を提供する方法 | |
9.4 書法仕様変数 | ||
9.5 ウィンドウの配置 | Gnus の各バッファーのウィンドウを設定する | |
9.6 フェースとフォント | ||
9.7 コンパイル | Gnus を速くするには | |
9.8 モード行 | ||
9.9 ハイライトとメニュー | ||
9.10 デーモン | Gnus はあなたの裏で仕事をすることができる | |
9.11 やり直し | ||
9.12 述語指示子 | ||
9.13 司会役 | ||
9.14 グループを取得する | グループを読むためだけに Gnus を起動する | |
9.15 画像の拡張 | 最新の Emacs/XEmacs は画像を表示できる | |
9.16 ファジーな一致 | 大きなひずんだ音 (big fuzz) って何? | |
9.17 spam メールの裏をかく | 頼んでもいない広告メールを避ける簡単な方法 | |
9.18 Spam パッケージ | ||
9.19 Gnus レジストリー | 記事を Message-ID で辿るためのパッケージ | |
9.20 他のモードとの相互作用 | ||
9.21 いろいろのいろいろ |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
多くの関数、その中でも記事の移動、デコード、保存をするための関数は、「プ ロセス/接頭引数の習慣」として知られているものを使います。
これは、利用者がどの記事に命令を実行したいかを見つけるための方法です。
それはこのような感じです:
数値接頭引数が N だったら、現在の記事を含めた次の N 個の記事に対して作業 を実行します。もし数値接頭引数が負だったら、現在の記事を含めた前の N 個 の記事に対して作業を実行します。
transient-mark-mode
が nil
ではなく、リージョンが設定され
ていたら、リージョンにあるすべての記事で作業が行なわれます。
数値接頭引数が無くても、いくつかの記事はプロセス印が付いている場合には、 プロセス印が付いている記事で作業が実行されます。
数値接頭引数やプロセス印の付いている記事が無い場合は、現在の記事でだけ作 業を実行します。
これは実際とても単純なのですが、びっくりされないためにも、はっきりさせて おく必要があります。
プロセス印に反応するコマンドは、現在プロセス印が付いている記事のリストを スタックに積んで、記事のすべてのプロセス印を消去します。前回の設定 を M P y で復旧させることができます (see section プロセス印を付ける)。
多くの人々をぎょっとさせ、恐がらせると思われることの一つは、例え
ば 3 d が、本当に d d d と同じことをすることです。
それぞれの d (これは現在の記事に既読の印を付けます) は、ディフォル
トでは印を付けた後で次の未読記事に移動するので、3 d は概略バッファー
がどうなっていても、次の三つの未読記事を既読にします。動作をもっと分かり
やすくするには、gnus-summary-goto-unread
を nil
に設定して
ください。
多くのコマンドはプロセス/接頭引数の習慣を使いません。それをしないすべて のコマンドは、このマニュアルで明記されています。そういうコマンドにプロセ ス/接頭引数の習慣を適用するには、M-& コマンドを使ってください。例 えば、そのグループのすべての記事を期限切れ消去可能として印を付けるに は M P b M-& E とします。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
gnus-novice-user
この変数が nil
でないのは、あなたは Usenet の世界の新参者か非常に
慎重な人のどちらかだというです。これは本当に良いことです。何か危険なこと
をする前に、「本当にこれをしたいのですか?」というような質問を受けます。
これはディフォルトでは t
です。
gnus-expert-user
この変数を nil
でない値にすれば、Gnus から質問を受けることが滅多
に無くなるでしょう。これは単純に、どんな変なことをしても、あなたが何をし
ているかをわかっているものと見なします。例えば ‘.newsrc’ ファイルを
保存せずに Gnus を終了したり、既読情報などを更新せずにグループを抜けたり、
グループの記事をすべて既読にしたり、期限切れ消去される記事を消去したり、
ニュース記事にメールで返信しようとしたときに、確認を求められなくなります。
gnus-interactive-catchup
nil
でないと、グループに追いつく (catchup, 未読の記事を読んだこと
にしてしまう) 前に、確認を求めます。ディフォルトで t
です。
gnus-interactive-exit
Gnus を終了する前に確認を求めます。ディフォルトで t
です。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
非常に多くの Emacs の命令が (数値) 接頭引数に反応します。例え
ば C-u 4 C-f はポイントを 4 文字先に移動し、
C-u 9 0 0 I s s p は 900 のスコア (永続、Suject
、文字列の一
部、という規則) を現在の記事に加えます。
これはすべて素敵で良いのですが、命令にもう少し追加の情報を与えたいときは どうすれば良いのでしょう? えーと、たいていの命令がしていることは「生の」 接頭引数を何らかの特別な方法で解釈することです。例え ば C-u 0 C-x C-s は、現在の記事を保存するときにバックアップファイ ルを作らないで欲しいことを意味します。でも、バックアップファイルを作らな いで保存するのと同時に、Emacs に閃光を放って、素敵な音楽を演奏して欲しい ときはどうすれば良いでしょう? それができなくても、あなたは申し分なく幸 せですね(?)。
私はそうではありません。そこで、私は二つめの接頭引数「シンボル接頭引数」
を加えました。接頭キーは M-i (gnus-symbolic-argument
) で、
次に押される文字が値です。いくらでも M-i 接頭語を積み重ねることが
できます。M-i a C-M-u は「C-M-u 命令にシンボル接頭引
数 a
を与える」ということです。M-i a M-i b C-M-u は
「C-M-u 命令にシンボル接頭引数 a
b
を与える」という
ことです。趣旨はわかりましたね。
シンボル接頭引数を受け付けない命令にそれを打ち込んでも何も悪いことをしま せんが、良いことも何もしません。現在のところ、あまり多くの関数がシンボル 接頭引数を利用しているわけではありません。
Gnus がこれを実装しているやり方に興味があるなら、 対話形式の拡張 を見てください。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
このマニュアルを通して、おそらく gnus-group-line-format
また
は gnus-summary-mode-line-format
のように呼ばれるたくさんの変数が
あることに気付いたでしょう。これらは Gnus が色々なバッファーでどのように
行を出力するかを制御します。非常にたくさんのものがあります。幸運なことに、
それらはすべて同じ構文を使うので、あまり嫌な目には会わないでしょう。
書法仕様 (format) 指定の例です (グループバッファーより):
‘%M%S%5y: %(%g%)\n’。それは極めて醜く、たくさんのパーセント記号がい
たるところにあります。
9.4.1 書法仕様の基本 | ||
9.4.2 モード行書法仕様 | ||
9.4.3 上級書法仕様 | ||
9.4.4 利用者定義の指定 | Gnus にあなた自身の関数を呼ばせる | |
9.4.5 書法仕様フォント | ||
9.4.6 ポイントの移動 | ||
9.4.7 整列 | ||
9.4.8 Wide Characters | 幅が広い文字を扱う |
現在のところ Gnus は以下の書法仕様変数を使います:
gnus-group-line-format
, gnus-summary-line-format
,
gnus-server-line-format
, gnus-topic-line-format
,
gnus-group-mode-line-format
,
gnus-summary-mode-line-format
,
gnus-article-mode-line-format
,
gnus-server-mode-line-format
, およ
び gnus-summary-pick-line-format
。
これらすべての書法仕様変数は任意の elisp 式であることもできます。その場
合、それらは要求される行に挿入するために eval
(評価) されます。
Gnus は、あなたが自分用の書法仕様指定を作っているときに、手助けをする命
令を備えています。M-x gnus-update-format は現在の式
を eval
し、当の仕様を更新し、行を生成するための Lisp 式を検査す
ることができるバッファーに移動します。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
それぞれの ‘%’ の要素は、当のバッファーが作成されるときに何らかの文 字列や他のもので置き換えられます。‘%5y’ は「‘y’ 指定を挿入して、 5 文字の場所を得るために空白を詰め込みなさい」ということです。
普通の C や Emacs Lisp の書法仕様 (format) 文字列と同じように、 ‘%’ と書法仕様の型の文字の間の数値修飾子は、常に少なくともその長さ になるように、出力に (空白文字などを)「詰め込み」ます。‘%5y’ はその 場所が常に (少なくとも) 5 文字の長さになるように、左に空白を詰め込みます。 もし ‘%-5y’ とすれば、代わりに右側に詰め込みます。
特に広い幅の値に対して保護するために、その場所の長さを制限したいこともあ るでしょう。そのために ‘%4,6y’ などと指定することができます。これは、 その場所は決して 6 文字を超える幅にはならず、かつ 4 文字より少ない幅にも ならないということです。
Gnus は ‘%&user-date;’ のような、いくつかの拡張様式指示もサポートし ます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
モード行書法仕様変数 (例えば gnus-summary-mode-line-format
) は、
以下の二つの違い以外は、バッファー行に適応した書法仕様変
数 (see section 書法仕様の基本) と同じ規則に従います:
mode-line-format
の説明文を見て
ください。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
表示された領域を後で何らかの方法で処理するのは、しばしば役に立ちます。詰 め込み、制限、切り取り、および特定の値の抑制は、「チルダ修飾子」を使うこ とによって実現することができます。よくあるチルダ仕様は、 ‘%~(cut 3)~(ignore "0")y’ のように見えるでしょう。
これらは有効な修飾子です:
pad
pad-left
領域の左側に、要求された長さになるまで空白を詰め込みます。
pad-right
領域の右側に、要求された長さになるまで空白を詰め込みます。
max
max-left
指定された長さになるように、文字列の左側を切り取ります。
max-right
指定された長さになるように、文字列の右側を切り取ります。
cut
cut-left
指定された数の文字を左側から切り落とします。
cut-right
指定された数の文字を右側から切り落とします。
ignore
領域が指定された値と等しい (equal) ならば、空文字列を返します。
form
‘@’ 仕様が使われたときに、指定された式を領域の値として使います。
これは例です:
"~(form (current-time-string))@" |
例を出してみましょう。概略モード行での ‘%o’ 仕様は ISO0861 様式の凝 縮された日付 (‘19960809T230410’ のようなもの) を返します。これはと ても発音しにくいので、世紀を表す数と時刻を削ぎ落として、6 文字の日付を残 したいと思います。それは ‘%~(cut-left 2)~(max-right 6)~(pad 6)o’ と なるでしょう。(切り落とし (cutting) は 最大幅の制限 (maxing) より先に行 なわれるので、表示欄での見栄えを良くするために、日付が 6 文字より少なく ならないことを保証する詰め込み (padding) が必要になります。)
無視 (ignore) が最初に行なわれます。それから切り落とし (cutting)、次に最 大幅の制限 (maxing)、そして最後の操作である詰め込み (padding) が行なわれ ます。
もしあなたが、これらの上級参照をたくさん使っているなら、Gnus がとても遅 くなるのがわかるでしょう。これはあなたが行の外見に満足したとき に M-x gnus-compile を実行することによって、格段に速度低下を減らす ことができます。See section コンパイル.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
すべての仕様に、利用者が定義した ‘u’ で始まる述語を挿入することがで
きます。書法仕様文字列の次の文字は、アルファベットでなければなりません。
‘%u’ に続くアルファベットが ‘X’ だったら、Gnus は関
数 gnus-user-format-function-
‘X’ を呼びます。関数には単一の
引数が与えられますが、その引数の意味は関数がどのバッファーから呼ばれてい
るかによって変わります。関数は文字列を返さなければなりません。それは他の
述語によって生成される情報とまったく同じように、バッファーに挿入されます。
関数は意味の無い値と共に呼ばれる場合もあるので、それの対策をしておくべき
です。
Gnus は利用者定義仕様を拡張した ‘%u&foo;’ のような形式もサポートし
ます。この場合は gnus-user-format-function-
‘foo’ という関数
を呼び出します。
新しい関数を定義しなくても、ほとんど同じことをチルダ修飾 子 (see section 上級書法仕様) を使って達成できるでしょう。例です:
‘%~(form (count-lines (point-min) (point)))@’
ここで与えられた式は評価されて現在の行番号をもたらし、それから挿入されま す。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
すべての書法仕様変数によって共有される、ハイライト (強調表示) のための仕
様があります。述語 ‘%(’ と 述語 ‘%)’ で囲まれたテキストには特
別な mouse-face
属性が与えられ、そこにマウスのポインターを置いた
ときに (gnus-mouse-face
によって) ハイライトされます。
述語 ‘%{’ と 述語 ‘%}’ で囲まれたテキストには、普通のフェー
スである gnus-face-0
(ディフォルトで bold
) が与えられます。
‘%1{’ を使うと、代わりに gnus-face-1
が与えられ、以下同様で
す。欲しいだけたくさんのフェースを作ってください。同じこと
が mouse-face
仕様にも言えます。‘hello’ がマウスを置いたとき
に gnus-mouse-face-3
でハイライトされるためには、
‘%3(hello%)’ とすれば良いでしょう。
述語 ‘%《’ と 述語 ‘%》’ で囲まれたテキストでは、特別
な balloon-help
属性が gnus-balloon-face-0
に設定されます。
‘%1《’ とすると、gnus-balloon-face-1
が使われ、以下同様です。
gnus-balloon-face-*
変数は、文字列か文字列を返す関数を指すシンボ
ルのどちらかでなければなりません。この属性が設定されているテキストの上を
マウスが通過すると、吹き出しが現れて文字列を表示します。これの詳しい情報
は See (emacs)Tooltips section ‘Tooltips’ in The Emacs Editor, (Emacs) また
は balloon-help-mode
(XEmacs) の説明を参照してください。(技術的な
理由のために、ギィメ (guillemets) はこの節では ‘《’ と ‘》’ で近似されま
した。)
訳注: guillemets (仏語) はギュメとも表記されます。実際に Gnus で有効なの は次の二つです:
(string (make-char 'latin-iso8859-1 43)) ;; 《 (string (make-char 'latin-iso8859-1 59)) ;; 》日本語の「」に当たるもので、口頭表現を表記したり、強調したい単語を囲む、 何かからの引用部分を囲む、書物等のタイトルを記す等様々に使われます。
これはグループバッファーで使うことができる、もう一つの調理法です:
;; 三つのフェースを作ります。
(setq gnus-face-1 'bold)
(setq gnus-face-3 'italic)
;; 記事の数をボールドで緑のフェースにしたいので、
;; |
あなたがこの案を使って、完全に読めなくて非常に下品な表示を作ることができ ることを確信しています。楽しんでください!
‘%(’ 指定 (やその類のもの) は、モード行変数ではまったく意味をなさな いことに注意してください。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gnus は通常ほとんどのバッファーで、ポイントを各行のあらかじめ決められた 場所に移動します。ディフォルトでは、ポイントは行の最初のコロンに移動しま す。この振るまいは、三つの違う方法でカスタマイズすることができます。
また、コロンを行のどの場所にでも移動することができます。
コロンの位置にポイントを移動させるための関数を定義し直すことができます。
その関数は gnus-goto-colon
と呼ばれています。
でも、行にコロンを含めたくないならば、これを扱うためのおそらく最も手ごろ な方法は ‘%*’ という述語を使うことです。あなたの行の書法仕様の定義 に ‘%*’ を入れておけば、Gnus はそこにポイントを置きます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
通常は、空白文字を詰め込んだり端を切り落とすことによって、文字列をディス プレイに並べることができます。でも大きさが違う異なる文字列を連結させる場 合は、単に文字列を出力してしまうのがより手ごろであることが多いはずで、し かしそうするとその後に続くテキストを並べるのに悩むことになります。
それを行なうために、Gnus は整列子 (tabulator) の仕様 ‘%=’ を備えて います。これには二つの形式 hard tabulators およ び soft tabulators があります。
‘%50=’ は文字列が 50桁までの場所を占めるように空白文字を詰め込みま す。もし挿入するテキストの末端が 50桁より後ろになる場合は何も挿入しませ ん。これは穏やか (soft) な整列子です。
‘%-50=’ もまた、文字列が 50桁までの場所を占めるように空白文字を詰め 込みます。ですが、もし挿入するテキストの末端が 50桁より後ろになる場合は、 50桁より後ろになる過剰なテキストは削除されます。これは厳密 (hard) な整列 子です。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
多くの地域において、固定幅フォントは同じ幅の文字を持っています。しかしい くつかの地域、よく知られている東アジアの国々では、ラテン文字と幅の広い文 字が混在して使われています。
整形において、Gnus は文字列が 10個の文字の幅だとしたら、スクリーンで も 10個分のラテン文字の幅になると仮定しますが、それは問題です。かの国々 では、それは正しくありません。
それを救済するために、あなた
は gnus-use-correct-string-widths
を t
に設定することがで
きます。これはバッファーの生成を遅くしますが、より美しい結果を得ることが
できるでしょう。ディフォルト値は XEmacs では t
ですが Emacs で
は nil
です。(訳注: 日本語などを Emacs で表示する場合に、書法仕様
によっては t
にしないと概略バッファーの表示が不揃いになることがあ
ります。)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
いえ、X に関することはありませんから、おとなしくしてください。
もし gnus-use-full-window
が nil
でないと、Gnus はすべての
他のウィンドウを消して、Emacs の画面全体を占有します。これはディフォルト
で t
です。
この変数を nil
に設定してもそれなりに動作しますが、問題もありま
す。危険を覚悟の上で使ってください。
gnus-buffer-configuration
はそれぞれの Gnus のバッファーがどのく
らいの空間を与えられるべきかを現します。これはこの変数の抜粋です:
((group (vertical 1.0 (group 1.0 point))) (article (vertical 1.0 (summary 0.25 point) (article 1.0)))) |
これは連想リストです。「キー」は何らかの動作を名付けるためのシンボルです。
例えば、グループバッファーを表示するときは、ウィンドウを設定するための関
数は group
をキーとして使います。使用可能な名前の完全な一覧は下に
挙げられています。
「値」(すなわち「分割」) は、それぞれのバッファーがどれくらいの空間を占
めるべきかを指定します。article
の分割を例に取ると
(article (vertical 1.0 (summary 0.25 point) (article 1.0))) |
この「分割」は概略バッファーが画面の上の 25% を占めるべきで、それは記事
バッファーの上に配置されると言っています。お気づきのように、
100% + 25% は実際は 125% です (えぇ、皆さんの計算はこの様になったと思い
ます。) しかし、特別な数値 1.0
は、残りのバッファーが必要なものを
取り去った後に、使用可能な残りの空間すべてを吸い取る、ということを合図す
るために使われます。1.0
の大きさを指定するバッファーは、一つの分
割につき一つだけでなくてはなりません。
ポイント (カーソル) は省略可能な三つ目の要素、point
を持つバッファー
に置かれます。frame
分割では、frame-focus
タグが含まれてい
る枝葉の分割を持っている副分割の、最後のもののフレームがフォーカスを得る
ことになります (frame-focus
タグは、それを含んでいる枝葉リストに
おいて、point
タグが無ければ三番目の、あれば四番目の要素になりま
す。
次はもっと複雑な例です:
(article (vertical 1.0 (group 4) (summary 0.25 point) (article 1.0))) |
もし大きさの指定が浮動小数点数の代わりに整数だったなら、それは割合ではな く、どのくらい多くの行をバッファーが占めるべきかを指定するために使われま す。
もし「分割」が eval
(評価) されるもののように見えるときは (正確に
言うと—分割の car
が関数か原始関数 (subr) であるときは)、この分
割は eval
されます。結果が nil
でないなら、それは分割とし
て用いられます。
まだ複雑ではないですって? それでは、大きさとしてこれを試してみてください:
(article (horizontal 1.0 (vertical 0.5 (group 1.0)) (vertical 1.0 (summary 0.25 point) (article 1.0)))) |
おぉっと。二つのバッファーに謎の 100% タグが付いています。そし
て horizontal
って何でしょう?
もし分割の一つの最初の要素が horizontal
であったなら、Gnus はウィ
ンドウを水平に分割し、二つのウィンドウを横に並べます。これらのそれぞれの
小片の中では、あなたのやりたいことをすべて普通の流儀で行なうことができま
す。horizontal
の後の数値は、この小片に画面のどれくらいの割合が与
えられるかを指定します。
それぞれの分割では、100% のタグを持つ要素が 必ず 一つある必要があ ります。分割は決して正確ではないので、分割によって余ったすべての行を、こ のバッファーが分捕ります。
もう少し形式的に、有効な分割がどのようになるかの定義を挙げておきましょう:
split = frame | horizontal | vertical | buffer | form frame = "(frame " size *split ")" horizontal = "(horizontal " size *split ")" vertical = "(vertical " size *split ")" buffer = "(" buf-name " " size *[ "point" ] *[ "frame-focus"] ")" size = number | frame-params buf-name = group | article | summary ... |
制限として、frame
は最も上位階層の分割としてしか現れることができ
ないというものがあります。form
は有効な分割を返す Emacs Lisp の
式 (form) でなければなりません。それぞれの分割は完全に再帰的で、任意の数
の vertical
と horizontal
分割を含むことができます。
正しい大きさを見つけることは、少し複雑になります。どのウィンドウ
も gnus-window-min-height
(ディフォルトは 1) の文字の高さよりも小
さくてはならないし、少なくとも gnus-window-min-width
(ディフォル
トは 1) の文字幅でなくてはなりません。Gnus は分割を適用する前にこれを強
制しようと試みます。もし標準の Emacs のウィンドウの幅/高さ制限を使いたい
なら、この二つの変数を nil
にするだけで良いです。
Emacs の用語になじんでいないのなら、
horizontal
と vertical
の分割は、期待したものと反対の動作
をするでしょう。horizontal
分割の中のウィンドウは横に並んで表示さ
れ、vertical
分割の中のウィンドウは上下に表示されます。
ウィンドウの配置に関して実験をしてみたいのであれば、良い方法は分割を引数
にして直接 gnus-configure-frame
を呼ぶことです。これはバッファー
を分割するときにすべての実際の仕事をする関数です。下のものは五つのウィン
ドウを作るかなりばかげた設定です。二つをグループバッファーに、三つを記事
バッファーのために充てます。(だから、ばかげていると言ったでしょ。) もし
下の文を 評価
すると、普通の Gnus の経路を使わないで、すぐにそれ
がどのように見えるかの直観を得ることができます。満足するまでそれで遊んで、
それから gnus-add-configuration
を使って新しい作品をバッファー配
置リストに加えてください。
(gnus-configure-frame '(horizontal 1.0 (vertical 10 (group 1.0) (article 0.3 point)) (vertical 1.0 (article 1.0) (horizontal 4 (group 1.0) (article 10))))) |
複数のフレームも欲しいかもしれません。問題ありません—frame
分割
を使うだけです:
(gnus-configure-frame '(frame 1.0 (vertical 1.0 (summary 0.25 point frame-focus) (article 1.0)) (vertical ((height . 5) (width . 15) (user-position . t) (left . -1) (top . 1)) (picon 1.0)))) |
この分割の結果は、最初の (もしくは「主たる」) フレームに見慣れた概略/記
事ウィンドウを配置し、小さな追加のフレームが picon を表示するために作ら
れます。ご覧の通り、普通の最上位階層の 1.0
の定の代わりに、それぞ
れの追加の分割が大きさの指定として、フレームパラメーターの連想リストを持
たなければなりません (see (elisp)Frame Parameters section ‘Frame Parameters’ in The GNU Emacs Lisp Reference Manual)。XEmacs では、フレームプロパティー
リストも使えます—例えば (height 5 width 15 left -1 top 1)
がそ
のような plist です。gnus-buffer-configuration
で使うことができる
すべてのキーの一覧は、そのディフォルト値で見つけることができます。
キー message
は gnus-group-mail
およ
び gnus-summary-mail-other-window
の両方で使われることに注意して
ください。もし二つを区別するほうが望ましいなら、このような物を使うことが
できます:
(message (horizontal 1.0 (vertical 1.0 (message 1.0 point)) (vertical 0.24 (if (buffer-live-p gnus-summary-buffer) '(summary 0.5)) (group 1.0)))) |
良くある複数のフレーム分割の要望は、メールとニュースの作成には別のフレー ムを使い、元のフレームはそのままに残すというものです。これの達成には、以 下のようなものでできます。
(message (frame 1.0 (if (not (buffer-live-p gnus-summary-buffer)) (car (cdr (assoc 'group gnus-buffer-configuration))) (car (cdr (assoc 'summary gnus-buffer-configuration)))) (vertical ((user-position . t) (top . 1) (left . 1) (name . "Message")) (message 1.0 point)))) |
訳注: これを高度に発展させたもの が http://www.jpl.org/elips/message-multiple-frames.el.gz として 入手できます。使い方はファイルの冒頭に書かれています。
変数 gnus-buffer-configuration
はとても長く複雑なので、単一の設定
の変更を簡単にするための関数があります: gnus-add-configuration
で
す。例えば article
の設定を変えたいのなら、次のようにできます:
(gnus-add-configuration '(article (vertical 1.0 (group 4) (summary .25 point) (article 1.0)))) |
普通はこれらの gnus-add-configuration
の呼び出し
を ‘~/.gnus.el’ ファイルに入れるか、何らかの起動時のフックに入れる
でしょう—それらは Gnus が読み込まれた後で実行されなければなりません。
もし分割の設定で指定されたすべてのウィンドウがすでに見えているのであれば、
Gnus はウィンドウの配置を変更しません。常に「正しい」ウィンドウ設定を強
制したいのであれば、
gnus-always-force-window-configuration
を nil
でない値に設
定してください。
木表示 (see section 木表示) を使っていて、木ウィンドウが垂直方向に次の
別のウィンドウで表示されるなら、ウィンドウの大きさが変更されることを避け
るために gnus-tree-minimize-window
をいじるのが良いでしょう。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
以下は現在知られているほとんどのウィンドウ配置とそれらの用途です:
group
グループバッファー。
summary
あるグループに入ってその概略 (だけ) を表示。
article
記事の選択。
server
サーバーバッファー。
browse
サーバーバッファーから閲覧するグループ。
message
(新しい) メッセージの作成。
only-article
記事バッファーだけの表示。
edit-article
記事の編集。
edit-form
グループパラメーターなどの編集。
edit-score
サーバーの定義の編集。
post
ニュース記事の作成。
reply
記事に元記事の引用無しで返信またはフォローアップ。
forward
記事の転送。
reply-yank
記事に元記事の引用付きで返信またはフォローアップ。
mail-bounce
メールの弾き返し。
pipe
記事を外部プロセスに送る。
bug
バグリポートを送る。
score-trace
スコア規則の表示。
score-words
スコアに使う単語の表示。
split-trace
分割されるメールの行方の表示。
compose-bounce
弾き返されたメールの再送信。
mml-preview
MIME パートの送信する前の下見。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
(gnus-add-configuration '(article (horizontal 1.0 (vertical 25 (group 1.0)) (vertical 1.0 (summary 0.16 point) (article 1.0))))) (gnus-add-configuration '(summary (horizontal 1.0 (vertical 25 (group 1.0)) (vertical 1.0 (summary 1.0 point))))) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
かつてフォントとフェースをいじくるのは非常に難しかったのですが、今日では 非常に簡単です。単に M-x customize-face とやって、変えたいフェース を選び出して、標準のカスタマイズインターフェースを使って変更することがで きます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
あの行書法仕様指定変数を覚えています
か? gnus-summary-line-format
, gnus-group-line-format
など
などです。さて、Gnus はこれらの変数が何であっても注意を払いますが、残念
ながらそれらを変更すると大変重大な速度低下を引き起こすことになります。
(これらの変数のディフォルト値は、それらに関連付けられたバイトコンパイル
された関数を持っていますが、利用者作成のものはもちろんそうではありませ
ん。)
これを改善するために、変数をいじくりまわして、(なんとなく) 満足したと感 じた後で、M-x gnus-compile を実行することができます。これは新しい 指定がバイトコンパイルされ、もう一度最高速度に復帰できるということです。 Gnus はこれらのバイトコンパイルされた指定を ‘.newsrc.eld’ ファイル に保存します。(もっとも利用者が定義した関数は、この関数によってコンパイ ルされません—それらを ‘~/.gnus.el’ ファイルに突っ込んでから、自分 でそのファイルをバイトコンパイルしなければなりません。)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
gnus-updated-mode-lines
はどのバッファーがそれらのモード行を常に
最新のものにしておくかを指定します。それはシンボルのリストです。使うこと
のできるシンボルは group
, article
, summary
,
server
, browse
, tree
などです。もし対応するシンボル
が存在すると、Gnus は該当する情報でモード行を更新します。この変数
が nil
ならば、画面の再描画はもっと速いでしょう。
ディフォルトでは、Gnus は概略バッファーと記事バッファーのモード行に現在
の記事の情報を表示します。Gnus が表示したい情報 (例えば記事の表題) はし
ばしばモード行よりも長いことがあるので、どこかで切り落とされなければなり
ません。変数 gnus-mode-non-string-length
はその行の他の要素 (すな
わち情報でない部分) がどのくらいの長さであるかを指定します。もしモード行
に追加の要素を入れたなら、この変数を修正する必要があります:
(add-hook 'display-time-hook (lambda () (setq gnus-mode-non-string-length (+ 21 (if line-number-mode 5 0) (if column-number-mode 4 0) (length display-time-string))))) |
もしこの変数が nil
であるなら (これがディフォルトですが)、モード
行は切り落とされず、詰め込みもされません。ディフォルトでは、バッファーの
完全なパーセント表示さえもモード行から追いやられる可能性もあるので、おそ
らく望ましい設定ではないことに注意してください。利用者が自分の設定に合う
ようにこの変数を適切に設定しなければなりません。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
変数 gnus-visual
は Gnus を素敵にするたいていの方面の操作をします。
nil
であると、Gnus はメニューを作ったり、素敵な色やフォントを使っ
たりしようとしません。これはさらに ‘gnus-vis.el’ ファイルを読み込む
ことも禁止します。
この変数は有効にされている視覚的なプロパティーのリストであることができま す。以下の要素は有効で、ディフォルトですべて含まれています:
group-highlight
グループバッファーでハイライト (強調表示) をします。
summary-highlight
概略バッファーでハイライトをします。
article-highlight
記事バッファーでハイライトをします。
highlight
すべてのバッファーでハイライトをするようにします。
group-menu
グループバッファーでメニューを作成します。
summary-menu
概略バッファーでメニューを作成します。
article-menu
記事バッファーでメニューを作成します。
browse-menu
ブラウズバッファーでメニューを作成します。
server-menu
サーバーバッファーでメニューを作成します。
score-menu
スコアバッファーでメニューを作成します。
menu
すべてのバッファーでメニューを作成します。
ですから、記事バッファーだけをハイライトしたくて、すべてのバッファーでメ ニューを作りたい場合は、このようにすることができます:
(setq gnus-visual '(article-highlight menu)) |
もしハイライトだけで、メニューの類は欲しくないときは、次のようにできます:
(setq gnus-visual '(highlight)) |
gnus-visual
が t
であると、ハイライトとメニューはすべて
の Gnus のバッファーで使用されます。
他のすべてのバッファーの外見に影響する総合的な変数は:
gnus-mouse-face
これは Gnus でマウスのハイライトに使われるフェース (すなわちフォント) で
す。gnus-visual
が nil
であると、マウスハイライトはなされ
ません。
まったく違ったメニューを作成するために、関連するフックがあります:
gnus-article-menu-hook
記事モード (article mode) のメニューを作成した後に呼ばれるフックです。
gnus-group-menu-hook
グループモード (group mode) のメニューを作成した後に呼ばれるフックです。
gnus-summary-menu-hook
概略モード (summary mode) のメニューを作成した後に呼ばれるフックです。
gnus-server-menu-hook
サーバーモード (server mode) のメニューを作成した後に呼ばれるフックです。
gnus-browse-menu-hook
概観モード (browse mode) のメニューを作成した後に呼ばれるフックです。
gnus-score-menu-hook
スコアモード (score mode) のメニューを作成した後に呼ばれるフックです。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gnus、それは (言い伝えによれば) かつて書かれたいかなるプログラムよりも大 きく、あなたがやって欲しいと思うさまざまな奇妙なことを、あなたのいないと ころで行なってくれるものです。例えば、あなたは時たま新着メールをチェック してもらいたいかもしれません。あるいは Emacs をしばらく放っておいたとき すべてのサーバーの接続を切断してもらいたくなるかもしれません。他にも何か そういったことです。
Gnus はさまざまな「ハンドラー」(処理を行なわせるためのもの) を定義するこ とによってそのようなことを可能にします。各ハンドラーは三つの要素から成り ます:「関数」、「時間」、「アイドル」(何もしていない状態を示すもの) パラ メーターです。
これは Emacs のアイドル状態が三十分続いたときに接続を切断するハンドラー の例です:
(gnus-demon-close-connections nil 30) |
これは Emacs がアイドルのとき、一時間毎に PGP ヘッダーを走査す るハンドラーです:
(gnus-demon-scan-pgp 60 t) |
この「時間」パラメーターと「アイドル」パラメーターは、奇妙かつ素晴らしい
やり方で一緒に動作します。基本的に「アイドル」が nil
だったら、関
数は「時間」分毎に呼び出されます。
「アイドル」が t
だったら、関数は Emacs がアイドルだったときに限っ
て「時間」分後に呼び出されます。したがって Emacs がアイドルにならなけれ
ば、関数は呼び出されません。いったん Emacs がアイドル状態になると、この
関数は「時間」分毎に呼び出されます。
「アイドル」が数値で「時間」も数値だった場合、Emacs のアイドル状態が「ア イドル」分続いた場合に限って、「時間」分毎に関数が呼び出されます。
「アイドル」が数値で「時間」が nil
だった場合、関数は Emacs のア
イドル状態が「アイドル」分続く度に一度呼び出されます。
そして「時間」が文字列だった場合 (それは ‘07:31’ のような形式でなけ ればなりません)、関数は毎日その時刻の頃になると一度呼び出されます。もち ろん「アイドル」パラメーターによって動作が変わります。
(ここで「分」と言ったとき、それは実際には gnus-demon-timestep
秒
のことです。これはディフォルトでは 60 です。もしこの変数を変更すると、す
べてのハンドラーの計時に影響を与えます。)
というわけで、ハンドラーを追加したければ、‘~/.gnus.el’ ファイルに以 下のようなものを書き込めば良いでしょう:
(gnus-demon-add-handler 'gnus-demon-close-connections 30 t) |
このための既製の関数がいくつか作成されています:
gnus-demon-add-disconnection
,
gnus-demon-add-nntp-close-connection
,
gnus-demon-add-scan-timestamps
, gnus-demon-add-rescan
, お
よび gnus-demon-add-scanmail
です。これらの機能を必要とするならば、
単にこれらの関数を ‘~/.gnus.el’ に入れてください。
gnus-demon-handlers
に直接ハンドラーを追加した場合には、それを効
かせるために gnus-demon-init
を実行してください。すべてのデーモン
を取り消すには、gnus-demon-cancel
関数を使うことができます。
デーモンの追加をやりすぎるのはかなりマズいことです。すべてのサーバーから すべてのニュースとメールを二秒毎に調べまわす関数を付け加えたりすることは、 どんな立派なシステムからも確実に追い出される方法です。お行儀良くしましょ う。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
実行したことのやり直しができると、とても便利です。Emacs の普通のバッファー
では十分に簡単です—単に undo
ボタンを押すだけです。しか
し Gnus のバッファーでは、それは簡単ではありません。
Gnus がバッファー内に表示しているものは、Gnus にとってはまったく何の価値
もありません—これはみんな、利用者に奇麗に見えるようにデザインされてい
るただのデータなのです。C-k でグループバッファーからグループを消去
すると、その行は消え去りますが、それは実際の動作—当のグループ
を Gnus の内部構造体から削除すること、の単なる副作用でしかありません。こ
れらのやり直しは、通常の Emacs の undo
関数では行なうことができま
せん。
Gnus は利用者がすることを憶えておいて、利用者がすることの逆を行なうこと
によって、これを多少は救済しようとします。利用者が undo
キーを押
すと、一段階または数段階前までの操作を元に戻すコードを実行します。しかし、
すべての操作が簡単に逆戻りできるわけではないので、現在 Gnus は、やり直し
可能なキーの機能を僅かしか提供していません。これらはグループの削除、グルー
プの貼り付け、およびグループの既読記事のリストの変更です。実際それだけで
す。将来はもっと機能が追加されるかもしれませんが、追加されるそれぞれの機
能は保存するべきデータを増やすので、決して Gnus は完全にやり直し可能には
ならないでしょう。
やり直し機能は gnus-undo-mode
マイナーモードによって提供されます。
これは gnus-use-undo
が nil
以外であれば使用され、これがディ
フォルトです。C-M-_ キーが gnus-undo
命令を実行します。これ
は通常の Emacs の undo
命令にいくぶん似ているはずです。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
いくつかの Gnus の変数は「述語指示子」(predicate specifiers) です。これ は、その多くをすべて記述する必要なしに、述語の仕様に融通を効かせることが できる特別な形式です。
これらの指示子は関数、シンボルおよびリストからなるリストです。
例です:
(or gnus-article-unseen-p gnus-article-unread-p) |
利用できるシンボルは or
、and
および not
です。関数
はすべて一つのパラメーターを受け取ります。
呼ぶことができる関数を作るために、Gnus はこれらの指示子について内部的
に gnus-make-predicate
を使います。この関数へのこの入力パラメーター
は、述語指示子の中のすべての関数に渡されます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
もしあなたが司会者 (モデレーター) ならば、‘gnus-mdrtn.el’ パッケー ジを使うことができます。これは標準の Gnus パッケージには含まれていません。 ‘larsi@gnus.org’ に、どのグループの司会を行なうのかを述べたメール を書いてください。そうすればコピーを手に入れることができます。
司会者用パッケージは概略バッファーのマイナーモードとして実装されています。
(add-hook 'gnus-summary-mode-hook 'gnus-moderate) |
をあなたの ‘~/.gnus.el’ ファイルに入れてください。
あなたが ‘rec.zoofle’ の司会者だとすると、これは以下のように動作す るようになっています:
二つのグループで司会者モードを使うとすれば、こうなります:
(setq gnus-moderated-list "^nnml:rec.zoofle$\\|^rec.zoofle$") |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
時々「Gnus が起動しているかどうかを気にしないでこのグループを読みたい。」
ということができれば便利なことがあります。これは、利用者よりもプログラム
のコードを書く人に便利な機能ですが、どちらにし
ろ gnus-fetch-group
コマンドはこの機能を提供します。それはグルー
プの名前を引数としてとります。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
XEmacs それに v21 以上の Emacs は絵やその種のものを表示することができ る(2)ので、Gnus はこれを利用することにしました。
9.15.1 X-Face | ファンキーでちっちゃな白黒の絵を表示する | |
9.15.2 Face | よりファンキーでちっちゃなカラーの絵を表示する | |
9.15.3 スマイリー | ||
9.15.4 Picons | あなたが読んでいるものの絵を表示する方法 | |
9.15.5 Gravatars | あなたが読んでいる人々のアバターを表示します | |
9.15.6 さまざまな XEmacs 変数 | XEmacs のための Gnus の変数 |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
X-Face
ヘッダーは、メッセージの著者を表わすことになってい
る 48×48 画素の白黒 (深さ 1 bit の) の絵を描きます。これは進化し続ける
あまたのメールとニュースリーダーによってサポートされるでしょう。
X-Face
ヘッダーを見るには ‘compface’ をサポートしてい
る Emacs (ほとんどの XEmacs の版がサポート) か、変換または表示のための適
切なプログラムをインストールしてあることが必要です。あなたの Emacs が自
前で画像の表示をサポートしているならば、ディフォルトで From
ヘッ
ダーの前に顔が表示されます。Emacs が自前で X-Face
をサポートして
いない場合、Gnus は pbmplus
パッケージとその仲間の外部プログラ
ム (下記参照) を使って X-Face
ヘッダーを変換しようとします。
X-Face
をサポートするようにコンパイルされている XEmacs は速いです。
画像をサポートしていない Emacs では、ディフォルトでは表示のための処理
を display
というプログラムに委ねます。
GNU/Linux システムの場合、ImageMagick パッケージに含まれてい
る display
プログラムを使います。外部プログラムとして
は netpbm
、libgr-progs
および compface
のような名前
のものを探します。Windows では http://gnuwin32.sourceforge.net に
ある netpbm
および compface
パッケージを使っても良いです。
PATH
環境変数に bin
ディレクトリーを追加する必要があります。
変数 gnus-article-x-face-command
で、X-Face
ヘッダーを表示
するために何のプログラムを使うかを制御します。この変数が文字列ならば、こ
の文字列がサブシェルで実行されます。関数ならば、この関数が顔を引数として
呼ばれます。もし gnus-article-x-face-too-ugly
(これは正規表現で
す) が From
欄に合致すれば、顔は表示されません。
(注: 変数/関数名には xface
ではなく x-face
が使われます。)
フェースと変数:
gnus-x-face
X-Face を表示するためのフェース。このフェースの色が表示される X-Face の 前景色と背景色として使われます。ディフォルトの色は黒と白です。
gnus-face-properties-alist
Face (see section Face) と X-Face 画像に適用される、画像の形式とプロパティー
の連想リストです。ディフォルト値は Emacs 用の ((pbm . (:face
gnus-x-face)) (png . nil))
または XEmacs 用の ((xface . (:face
gnus-x-face)))
です。例を挙げましょう:
;; From ヘッダーにおける Face と X-Face の高さを指定します。 (setq gnus-face-properties-alist '((pbm . (:face gnus-x-face :ascent 80)) (png . (:ascent 80)))) ;; Face と X-Face を凹んだボタンのように表示します。 (setq gnus-face-properties-alist '((pbm . (:face gnus-x-face :relief -2)) (png . (:relief -2)))) |
いろいろな画像の形式で利用可能なプロパティーについて
は See (elisp)Image Descriptors section ‘Image Descriptors’ in The GNU Emacs Lisp Reference Manual, を参照してください。今のところ Emacs で
は pbm
が X-Face 画像に使われ、 png
が Face 画像に使われま
す。XEmacs では、それが ‘libcompface’ ライブラリーとともに構築され
ていれば、xface
画像形式に :face
プロパティーだけが効果を
及ぼします。
投稿様式 (posting style) を使うのであれば、
gnus-posting-styles
に x-face-file
の項を加えれば良いでしょ
う (see section 投稿様式)。さもなけば、外に出すメッセージに X-Face ヘッ
ダーを簡単に挿入できるようにするために Gnus が提供する、いくつかの便利な
関数と変数を利用することができます。これらの機能のためには、前述
の ImageMagick、netpbm または他の画像を変換するパッケージ (何が必要かは、
下記の変数群の値によります) も必要です。
gnus-random-x-face
は gnus-x-face-directory
にあるすべて
の ‘pbm’ ファイルをくまなく探してランダムに一つを選び取り、シェルコ
マンド gnus-convert-pbm-to-x-face-command
を使ってそれ
を X-Face の形式に変換します。‘pbm’ ファイルは 48×48 画素の大きさ
でなければなりません。それは X-Face ヘッダーのデータを文字列で返します。
gnus-insert-random-x-face-header
は gnus-random-x-face
を
呼んで、ランダムに生成されたデータによる X-Face ヘッダーを挿入します。
gnus-x-face-from-file
はパラメーターとして GIF ファイルを受け取り、
シェルコマンド gnus-convert-image-to-x-face-command
を使ってその
ファイルを X-Face の形式に変換します。
一番目の関数の一般的な使い方を示します。以下のようなもの を ‘~/.gnus.el’ ファイルに書き込んでください:
(setq message-required-news-headers (nconc message-required-news-headers (list '(X-Face . gnus-random-x-face)))) |
最後の関数を使うのは、このようになるでしょう:
(setq message-required-news-headers (nconc message-required-news-headers (list '(X-Face . (lambda () (gnus-x-face-from-file "~/My-face.gif")))))) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Face
ヘッダーは、本質的に X-Face
をよりファンキーに変形し
たものです。それらは、メッセージを書いた人を象徴することになってい
る 48×48 画素のカラー画像を描きます。
Face
ヘッダーの内容は base64 でエンコードされた PNG の画像でなけ
ればなりません。正確な仕様について、
http://quimby.gnus.org/circus/face/ を参照してください。
変数 gnus-face-properties-alist
は表示される Face 画像の外観に影
響します。See section X-Face.
Face
ヘッダーを見るには Emacs が PNG 画像を表示できる必要がありま
す。
Gnus は外に出すメッセージに Face ヘッダーを簡単に挿入できるようにするた めの、便利な関数と変数を少しばかり提供します。
gnus-convert-png-to-face
は 726-byte 以下の 48×48 の PNG の画像
を受け取って、それを Face に変換します。
gnus-face-from-file
は JPEG ファイルの名前をパラメーターとして受
け取り、シェルコマンド gnus-convert-image-to-face-command
を使っ
てそのファイルを Face フォーマットに変換します。
この関数の代表的な使い方を挙げておきましょう。以下のようなもの を ‘~/.gnus.el’ ファイルに入れてください:
(setq message-required-news-headers (nconc message-required-news-headers (list '(Face . (lambda () (gnus-face-from-file "~/face.jpg")))))) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
スマイリー smiley は Gnus とは別のパッケージですが、スマイリーを使っ ているパッケージは現在 Gnus だけなので、ここで説明します。
ひとことで言えば—Gnus でスマイリーを使うには、以下 を ‘~/.gnus.el’ ファイルに書き込んでください。
(setq gnus-treat-display-smileys t) |
スマイリーは、文字の顔マーク—‘:-)’, ‘8-)’, ‘:-(’ などと いったもの—を絵に割り当てて、文字の顔マークの代わりにその絵を表示しま す。この変換は文字に合致する正規表現と、それに割り当てられたファイル名の リストで制御されます。
使われる連想リストは、変数 smiley-regexp-alist
で設定します。各要
素の最初の項目は合致する正規表現で、二番目の要素は絵で置き換えられる正規
表現のグループ番号、そして三番目の要素は表示されるファイルの名前です。
以下の変数でスマイリーの見栄えをカスタマイズします:
smiley-style
スマイリーの形式を指定します。あらかじめ定義されている形式
は low-color
(13×14 画素で 3 色の小さい画像)、medium
(16×16 画素でもっとカラフルな画像) および grayscale
(14×14 画素
のグレースケール画像) です。ディフォルトはディフォルト face の高さに依存
します。
smiley-data-directory
スマイリーが顔ファイルを探す場所です。もうこの変数はいじらないで、代わり
に smiley-style
をカスタマイズしてください。
gnus-smiley-file-types
スマイリーのファイル名として試してみる拡張子のリストです。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
それで…、あなたはこのニュースリーダーをさらにもっと遅くしたいってわけで すね! これはそうするのにぴったりな方法です。さらにこれは、あなたがニュー スを読んでいるんだということを、あなたの肩越しに見つめている人に印象づけ るための素晴らしい方法でもあります。
Picon とはなんでしょう? Picons ウェブサイトから直接引用しましょう。
Picon とは「個人アイコン (personal icons)」の略です。これは、ある 電子メールアドレスのための適切な画像を見つけることができるように、無理矢 理小さくしてデータベースにまとめられた画像たちで、ネット上の利用者やドメ インを表現するために使われます。利用者とドメイン以外に、Usenet ニュース グループや天気予報のための picon データベースがあります。picon は白黒 の
XBM
形式、またはカラーのXPM
形式およびGIF
形式 のいずれでも構いません。
Picon データベースの入手とインストールの手順については、ウェブブラウザー で http://www.cs.indiana.edu/picons/ftp/index.html を訪ねてみてく ださい。
もし Debian GNU/Linux を使っているのなら、‘apt-get install picons.*’ と言えば、Gnus が見つけることができる picon がインストールされ ます。
Picon の表示ができるようにするためには、picon データベースがあるディレク
トリーが、ただ単に gnus-picon-databases
に設定されているようにし
てください。
変数 gnus-picon-style
は picon をどのように表示するかを制御します。
inline
だったらテキスト形式の表現が置き換えられます。
right
だったら、テキスト形式の表現の右側に picon が加えられます。
ものごとの所在を管理するために、以下の変数を設けています。
gnus-picon-databases
Picon データベースの場所です。これは ‘news’, ‘domains’,
‘users’ (などなど) のサブディレクトリーが含まれているディレクトリー
のリストです。("/usr/lib/picon" "/usr/local/faces")
がディフォル
トです。
gnus-picon-news-directories
gnus-picon-databases
からニュースグループ用のフェースを探すための
サブディレクトリーのリストです。ディフォルトは ("news")
です。
gnus-picon-user-directories
gnus-picon-databases
から利用者のフェースを探すためのサブディレク
トリーのリストです。("local" "users" "usenix" "misc")
がディフォ
ルトです。
gnus-picon-domain-directories
gnus-picon-databases
からドメイン名のフェースを探すためのサブディ
レクトリーのリストです。ディフォルトは ("domains")
です。このリス
トに ‘"unknown"’ を追加しておきたくなる人もいるでしょう。
gnus-picon-file-types
Picon のファイル名として試してみる順に並べられた拡張子のリストです。ディ
フォルトは ("xpm" "gif" "xbm")
から Emacs に組み込まれていないも
のを除外したものです。
gnus-picon-inhibit-top-level-domains
もし nil
ではない (それがディフォルト) 値だったら、
‘.net’ や ‘.de’ のようなものについて picons を表示しません。普
通それらはあまり面白いものではありません。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gravatar はそれぞれの電子メールアドレスに対応して登録された画像です。
あなたのものを http://www.gravatar.com にオンラインで置くことがで きます。
以下の変数は、それらがどのように表示されるかの制御を提供します。
gnus-gravatar-size
Gravatars の画素のサイズ。Gravatars は常に正方形なので、サイズの指定には 単一の数値で十分です。
gnus-gravatar-properties
Gravatar 画像に適用する属性のリストです。
gnus-gravatar-too-ugly
表示されるべきではないアバターの、持ち主たちのメールアドレスまたは名前に
合致する正規表現、または nil
。ディフォルト
で gnus-article-x-face-too-ugly
の値になります (see section X-Face)。
それらを From フィールドで見たいなら、こうしてください:
(setq gnus-treat-from-gravatar 'head) |
もしそれらを Cc と To フィールドで見たいなら、こうです:
(setq gnus-treat-mail-gravatar 'head) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
gnus-xmas-glyph-directory
これは Gnus が絵を探す場所です。Gnus は通常このディレクトリーを自動検出 しますが、もし標準的でないディレクトリー構造を持っている場合は、これを手 動で設定することができます。
gnus-xmas-modeline-glyph
すべての Gnus のモード行で表示される画像。これはディフォルトではちいさな ヌー (gnu) の頭です。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
gnus-use-toolbar
この変数はツールバーを表示する位置を指定します。nil
だったらツー
ルバーを表示しません。非-nil
の場合、それは default
,
top
, bottom
, right
または left
の中の一つの
シンボルでなければなりません。default
だったらディフォルトのツー
ルバーを使い、他のものだったらその名前が示す場所にツールバーを表示します。
ディフォルトは default
です。
gnus-toolbar-thickness
高さと幅のコンス (cons) で、ツールバーの厚さを指定します。高さは上辺か下 辺に表示するツールバーで使われ、幅は右端か左端に表示するツールバーで使わ れます。ディフォルトはディフォルトのツールバーの値です。
gnus-group-toolbar
グループバッファー内のツールバーです。
gnus-summary-toolbar
概略バッファー内のツールバーです。
gnus-summary-mail-toolbar
メールグループの概略バッファー内のツールバーです。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gnus はスコア付け、スレッドの形成、およびスレッドの比較などを行なうとき
に、Subject
行のファジーな合致 fuzzy matching を提供します。
正規表現による合致とは違って、ファジーな合致はとってもファジーです。あま りにもファジーすぎて、何がファジーであるかという定義さえ無いし、実装も何 度も変更されています。
基本的に、これは比較の前に行から邪魔物を取り除こうとします。‘Re: ’、 挿入句の印、および空白文字等々が文字列から除去され、その結果を比較します。 これはほとんどの場合妥当な結果をもたらします—たとえニュースリーダーの 仮面をかぶった文字列切り刻み機で生成された文字列が差し出されても、です。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ここ最近の USENET では、宣伝のハゲタカどもが彼らの詐欺や製品を押し付ける
ための電子メールアドレスを探そうとして、気違いのようにニュース上をうろつ
いて grep しまくっています。これに対する反動として、多くの人々が無意味な
アドレスを From
行に入れはじめるようになってしまいました。私はこ
れは逆効果を招くと思います—あなたが書いたことに対する返信として人々が
正当なメールを送ることを面倒にさせるだけでなく、誰が書いたものなのかを分
かりづらくします。こんな書き換えは、結局は押し付け宣伝メールそれ自身より
も大きな脅威となるかもしれません。
私にとっての spam メールの最大の問題は、嘘の口実で入ってくるからです。私 が g を押すと、Gnus は十通の新着メールがありますと陽気に私に教えて くれます。私は「おおっ、わーい! 僕って幸せ!」と言ってメールグループを選 択します。しかしそこには、二つのネズミ講と、七つの広告 (「最新! 奇跡の育 毛トニック、ふさふさでつやつやの髪をあなたのつま先(※)に!」) と、悔い改 め神を信じよ、という一つのメールがあるだけなのです。
これは迷惑千万です。あなたがそれに関してできることがあります。
訳注※: ホビット族用の育毛トニック。たぶん。
9.17.1 Spam の問題 | 背景、そして解決 | |
9.17.2 Spam 退治の基礎 | たくさんの spam を減らす簡単な方法 | |
9.17.3 SpamAssassin, Vipul’s Razor, DCC, etc | Spam 対策ツールの使い方 | |
9.17.4 Hashcash | CPU 時間を費やして spam 退治する |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
初めに spam の背景から。
あなたが電子メールを使っているならば、spam (専門用語としては Unsolicited Commercial E-mail—望まれない商用電子メール—の頭文 字 UCE) のことはよく知っているでしょう。簡単に言えばそれは紙の メールに比べて電子メールの配送がとても安くつくために存在し、非常に小さな 割合の人々が UCE に応答するだけで広告主に利益をもたらすのです。皮肉なこ とに最も一般的な spam の一つは、さらに spam を助長するための電子メールア ドレスのデータベースを提供します。Spam の送信者はふつ う spammers と呼ばれますが、vermin、scum、 sociopaths および morons のような用語もよく使われています。
Spam は種々さまざまな出どころからやって来ます。有用なメッセージを捨てず にすべての spam を単に始末することは不可能です。良い例は TMDA (訳注: 送 信する度にユニークなアドレスを使う) システムで、それは、あなたが知らない 送信者からの電子メールがあなたのもとに届くことができる前に、彼らに対して 彼ら自身が正当な送信者であることの確認を求めます。正当な出どころからの電 子メールが、それらの出どころが TMDA システムを通して確認できない、または 行なわれない場合は捨てられてしまうかもしれないというマイナス面は、 TMDA の技術的な側面に立ち入らなくても明白です。もう一つの TMDA の問題は、 電子メールの配送と処理への基本的な理解を、利用者に求めていることです。
Spam の除去 (filtering) への最も単純な取り組みは、メールサーバーで、ある いは入ってきたメールを分類するときに濾過すること (filtering) です。毎 日 ‘random-address@vmadmin.com’ から 200通の spam メッセージを受け 取るのならば、‘vmadmin.com’ を阻止すれば良いでしょう。「バイアグラ」 に関するメッセージを 200通受け取るのならば、「バイアグラ」を含むすべての メッセージを捨ててしまえば良いでしょう。例えばブルガリアからたくさん の spam がやって来るのならば、ブルガリアの IP から来るすべてのメールを濾 過すれば良いでしょう。
これは、残念ながら正当な電子メールを捨てるためのすぐれた方法です。あなた に連絡しようとする国 (ブルガリア、ノルウェー、ナイジェリア、中国、等) 全 体、または大陸 (アジア、アフリカ、ヨーロッパ、等) さえも封じ込めてしまう 危険は明らかなので、あなたに選択権があるのならば、そんなことはしないでく ださい。
もう一つの例として、とても示唆に富んで有益な RISKS ダイジェストは、それ が spam メッセージと共通の語を 含んで いるために、熱心すぎるメー ル濾過器によって阻止されてしまいます。それでもなお孤立した環境では、注意 深く使うことによって直接の濾過は有益になり得ます。
もう一つの電子メール濾過への取り組みは分散型 spam 処理で、DCC (訳 注: Distributed Checksum Clearinghouse—http://www.rhyolite.com/anti-spam/dcc/) がそのよ うなシステムを導入しています。本質的には、世界中の N 個のシステム が、ガーナ、エストニアあるいはカリフォルニアにあるマシ ン X が spam 電子メールを送出していることを認めたら、それ ら N 個のシステムは X または X からやって来た spam メー ルをデータベースに記入します。Spam 検出の基準は一様ではありません。それ は送られたメッセージの数やメッセージの内容などであるかもしれません。メッ セージが spam かどうかを分散処理システムの利用者が知りたい場合、彼はそれ らの N 個のシステムのうちの一つを調べます。
分散型 spam 処理は一度にたくさんのメッセージを送る spammers と非常によく 戦ってくれますが、それには利用者がかなり複雑なチェックを設定することが必 要です。商用とフリーな分散型 spam 処理システムがあります。分散型 spam 処 理は、それ自体の危険もはらんでいます。例えば、正当な送信者が spam を送っ たかどで非難され、彼らのウェブサイトやメーリングリストがその事件のために 暫くの間閉鎖されてしまう、とか。
Spam の濾過への統計的な取り組みもまた普及しています。それは過去 の spam メッセージの統計的な分析に基づいています。通常その分析は、おそら く単語の対か三つの単語の組合せの合成による、単語の出現頻度の単純な計数で す。Spam の統計分析はほとんどの場合にとてもよく働くのですが、時として正 当な電子メールを spam として分類してしまうことがあります。分析には時間が かかります。すべてのメッセージを分析しなければなりません。そして利用者 は spam を分析するためのデータベースを蓄えなければなりません。サーバーで の統計分析は人気を得ています。これには、利用者は単にメールを読めば良いと いう長所と、しかしサーバーにそれが過ってメールを分類したことを伝えるのが 困難だという短所があります。
余人の言を待たずとも、spam との戦いは楽ではありません。ママからの電子メー ルとバイアグラ広告を区別する魔法のスイッチはありません。人々は 非-spam と spam を区別するのに手を焼いているというのに。それは、 spammers が懸命にそれらをママだと思わせようとしているのが本質だからです。 Spamming は、世界が彼らに恩義があると思っている人々の一団からの、腹立た しく、無責任で、ばかげた行為です。以下の各章が spam なる疫病との戦いの助 けになることを望みます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Spam に対処する一つの方法は、Gnus にすべての spam を ‘spam’ メール グループに分離させてしまうことです (see section メールの分割)。
最初に、あなたに連絡することができる正しいメールアドレスを一つ選び、それ
をすべてのあなたのニュース記事の From
ヘッダーに入れましょう。(こ
こでは ‘larsi@trym.ifi.uio.no’ を選びましたが、
‘larsi+usenet@ifi.uio.no’ の形式のたくさんのアドレスの方が良い選択
です。あなたのサイトの sendmail の設定がメールアドレスのローカル部として
どんなキーワードを受け付けるかは、あなたのサイトのシステム管理者に聞いて
ください。)
(setq message-default-news-headers "From: Lars Magne Ingebrigtsen <larsi@trym.ifi.uio.no>\n") |
そして nnmail-split-fancy
に以下の分割規則を入てくださ
い (see section 特級メール分割)。
(... (to "larsi@trym.ifi.uio.no" (| ("subject" "re:.*" "misc") ("references" ".*@.*" "misc") "spam")) ...) |
この意味は、このアドレスに届いたすべてのメールが疑わしいが、
‘Re:’ で始まる Subject
が付いているか、References
ヘッ
ダーが付いていればおそらく OK だろう、ということです。残りはすべ
て ‘spam’ グループに行きます。(このアイデアはおそらく Tim Pierce 氏
によるものです。)
これに加えて、多くのメール spam 屋は、あなたのところの SMTP サー
バーと直接話して、To
ヘッダーにあなたのメールアドレスが明示されな
いようにします。なんでそんなことをするのかはわかりませんが—もしかした
ら、この裏をかく機構の裏をかくためかな? どちらにしても、対処は簡単なこと
です—特級分割規則を以下のように終端させることによって、あなた宛てでな
いものを全部 ‘spam’ グループに入れるだけです:
( ... (to "larsi" "misc") "spam") |
私の経験では、これで実質的にはすべてが正しいグループに分類されます。まあ、 それでもときどき ‘spam’ グループをチェックして、正しいメールがある かチェックしなくてはいけませんけどね。あなたが自分が良いネットワーク市民 であると思っているなら、それぞれの押し付け宣伝メールの関係当局に苦情を送 り付けることさえもできます—暇なときにでもね。
これで私のところでは動いています。これでみんなは簡単な方法で私に連絡を取
ることができ (普通に r を押すだけでできる)、私は spam に煩わされる
ことはまったくありません。お互いに有利な状況です。私に言わせれば、
From
ヘッダーを偽造して存在しないドメインに送らせるのはすごく良く
ないです。
訳注: 以上の文章は 1997年4月に書かれました。
この手法には注意してください。Spammers はそれに気付いています。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Spam を避けるための前章のヒントが十分だった日々は過ぎ去りました。今では 受け取ったたくさんの spam を減らすという触れ込みの多くの道具があります。 この章は、新しい道具が古いものに取って代わって行くにつれてすぐに時代遅れ になってしまうでしょうが、幸いなことにこれらのほとんどの道具は類似のイン ターフェースを持っているようです。この章は例として SpamAssassin を使って いますが、他のほとんどの道具にも簡単に適合するはずです。
この章は spam.el
パッケージとは関係無いことに注意してください。そ
れは次の章で論じられます。すべての spam.el
の機能に関心が無いのな
らば、これらの単純なレシピで間に合わせることができます。
もしあなたが使う道具がメールサーバーにインストールされていないならば、あ
なた自身がそれを呼び出す必要があります。以下に :postscript
メール
ソース指示子 (see section メールソース指示子) を使う場合の考え方を示しま
す。
(setq mail-sources '((file :prescript "formail -bs spamassassin < /var/mail/%u") (pop :user "jrl" :server "pophost" :postscript "mv %t /tmp/foo; formail -bs spamc < /tmp/foo > %t"))) |
いったんメールを受けるスプールをどうにかして処理する、例えばそのメール に spam であることを表示するヘッダーを含めるようにすれば、それをふるい落 とす準備は完了です。使うのは普通の分割方式 (see section メールの分割) です:
(setq nnmail-split-methods '(("spam" "^X-Spam-Flag: YES") ...)) |
または特級分割方式 (see section 特級メール分割) です:
(setq nnmail-split-methods 'nnmail-split-fancy nnmail-split-fancy '(| ("X-Spam-Flag" "YES" "spam") ...)) |
いくらかの人たちは :prescript
を使ってメールをいろんなプログラム
にパイプすることを嫌うかもしれません (もし何かのプログラムにバグがあった
ら、すべてのメールを失ってしまうかもしれません)。あなたがそれらの一人な
らば、別の解は分割するときに外部の道具を呼ぶことです。特級分割方式の例で
す:
(setq nnmail-split-fancy '(| (: kevin-spamassassin) ...)) (defun kevin-spamassassin () (save-excursion (widen) (if (eq 1 (call-process-region (point-min) (point-max) "spamc" nil nil nil "-c")) "spam"))) |
Nnimap バックエンドの場合、ディフォルトでは記事のボディーがダウンロード
されないことに注意してください。それをするために
は nnimap-split-download-body
を t
に設定する必要がありま
す (see section クライアント側での IMAP 分割)。
以上がこれに関することです。ある種の spam はどうしても素通りしてしまいが ちなので、spam を読むはめになったときに呼ぶための気の利いた関数が必要で しょう。これがその気の利いた関数です:
(defun my-gnus-raze-spam () "SPAM の処理を Vipul の Razor に委ねてから、 それに期限切れ消去可能の印を付けます。" (interactive) (gnus-summary-save-in-pipe "razor-report -f -d" t) (gnus-summary-mark-as-expirable 1)) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Spam と戦うための斬新な技法は、いくらか負担にはなるが明らかに独特なこと を、送信するメッセージに対して送信者が行なうことを求めることです。これは インターネット標準の一部ではないので、世界中のすべての人がこの技法を使う ことは当てにできないという明らかな欠点がありますが、小規模な集団では役に 立つでしょう。
前章の道具類は実際にうまく働きますが、それらは新しい形式の spam が現れる たびにしょっちゅう更新かつ整備されることによってのみ動作します。このこと は、小さなパーセンテージの spam がいつも素通りしてしまうことを意味します。 それはまた、どこかでだれかがそれらの道具を更新するために、たくさん の spam を読まなければならないことをも意味します。Hashcash はそれを回避 しますが、代わりにあなたが電子メールで連絡するすべての人たちに、なるべく その仕組みをサポートしてもらいたいのです。あなたは実際的 (pragmatic) か 独断的 (dogmatic) かの観点で、二つの取り組みを考えることができます。それ らのやり方には、それら自体の利点もあれば不利な点もありますが、現実の世の 中ではしばしばあるように、それらを連係させたものはどちらか一方より強力で す。
「いくらか負担にはなる」とは CPU 時間を消費することで、もっと具体的には
一定数のビットまでハッシュの衝突 (hash collision) を計算することです。そ
の結果としての hashcash クッキーは ‘X-Hashcash:’ ヘッダーに挿入され
ます。もっと詳しいこと、そしてこの機能を使うためにインストールする必要が
ある外部アプリケーションの hashcash
について
は http://www.hashcash.org/ を参照してください。さらなる情報
が http://www.camram.org/ で見つかるでしょう。
送信するメッセージのそれぞれについて hashcash を生成させようと思うなら、
以下のように message-generate-hashcash
(see (message-ja)Mail Headers section ‘メールヘッダー’ in The Message Manual) をカスタマイズしてくだ
さい:
(setq message-generate-hashcash t) |
いくつかの追加の変数の設定もしなければなりません:
hashcash-default-payment
この変数はハッシュの衝突を成すディフォルトのビット数を示します。ディフォ ルトは 20 です。提唱されている有効な値は 17 から 29 までの数です。
hashcash-payment-alist
何人かの受取人は、あなたにディフォルトより多くの CPU 時間を費やすことを 要求するかもしれません。この変数は ‘(addr amount)’ の形 式の要素のリストで、addr は受取人 (メールアドレスかニュースグルー プ)、amount は衝突で必要とされるビット数です。これはま た ‘(addr string amount)’ の要素を持つことも可能 で、string は文字列 (通常はメールアドレスかニュースグループ名) と して使われます。
hashcash-path
hashcash
バイナリーがインストールされている場所です。この変数
は executable-find
によって自動的に設定されるはずですが、それ
が nil
だった (ありがちなのは hashcash
バイナリーが実
行 path 中に無い) 場合は、hashcash payments をチェックするときに警告され、
hashcash payments を生成するときはエラーになるでしょう。
Gnus は hashcash クッキーを認証することができますが、手でカスタマイズし
たメール濾過スクリプトで行なうこともできます。メッセージ中の hashcash クッ
キーを認証するには、hashcash.el
ライブラリー
の mail-check-payment
関数を使ってください。入ってきたメール
の hashcash クッキーを確認し、それによってメールを濾過するために、
spam-use-hashcash
バックエンドで spam.el
を使うこともでき
ます (see section 非-spam Hashcash 印)。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Spam パッケージは spam を検出して濾過するために集結された機構を Gnus に 提供します。それは新着メールを濾過し、spam か ham かに応じてメッセージを 処理します。(Ham は spam ではないメッセージを示すために、このマニュ アルを通して使われる名前です。)
9.18.1 Spam パッケージ序説 | ||
9.18.2 やって来るメールの濾過 | ||
9.18.3 グループにおける spam の検出 | ||
9.18.4 Spam と Ham プロセッサー | ||
9.18.5 Spam パッケージの設定例 | ||
9.18.6 Spam バックエンド | ||
9.18.7 Spam パッケージの拡張 | ||
9.18.8 Spam 統計パッケージ |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Spam パッケージがどのように働くかを理解するために、必ずこの章を読んでく ださい。読み飛ばし、速読、または斜め読みしてはいけません。
spam.el
シーケンスのイベントの章をちゃんと読みましょう。
Spam パッケージの拡張 を参照してください。
Spam パッケージを使うには、必ず 最初
に spam-initialize
関数を実行させてください:
(spam-initialize) |
これは spam.el
を自動読み込み (autoload) して、Spam パッケージに
その仕事をさせるために必要な諸機能が使えるようにします。Spam パッケージ
を利用するために、いくつかのグループパラメーターと変数を設定しなければな
りません。それらは以下で説明します。Spam パッケージを制御するすべての変
数は、‘spam’ カスタマイズグループで見つかるでしょう。
Spam パッケージと Gnus には二つの「接点」があります。それは新着メール が spam かどうかを検査するときと、グループを抜け出るときです。
新着メールが spam かどうかの検査は、やって来たメールを分割するときか、グ ループに入るときのどちらかで行なわれます。
最初のやり方、つまりやって来たメールを分割するときに検査をするのは、新着
メールが単一のスプールファイルに入れられ
る nnml
や nnimap
のようなメールバックエンドに適しています。
Spam パッケージはやって来たメールを処理し、spam と見なすメールを“spam”
用に指定したグループに送ります。See section やって来るメールの濾過.
二番目のやり方は、nntp
のような (やって来たメールのためのスプール
がない) バックエンドや、やって来たメールの分割をサーバーが担当するバック
エンドに適しています。この場合 Gnus のグループに入ると、そのグループにあ
るまだ読まれたことが無い、または未読になっているメッセージに対し
て spam かどうかの検査が行なわれます。検出された spam メッセージに
は spam 印が付けられます。See section グループにおける spam の検出.
どちらの場合でも、spam メッセージの検出にどの方法を使うかを Spam パッケー ジに指示しなければなりません。選択肢として複数の方法、と言うか「spam バッ クエンド」があります (Gnus のバックエンドと混同しないでくださ い): spam の「ブラックリスト」と「ホワイトリスト」、辞書に基づいた濾過器、 などです。See section Spam バックエンド.
Gnus の概略バッファーで spam だと同定されたメッセージには、常 に ‘$’ 印が付きます。
Spam パッケージは Gnus のグループを三つに分類します: ham グループ、
spam グループ、および分類されないグループです。講読している各グループが
ham グループと spam グループのどちらなのかを、spam-contents
グルー
プパラメーターを使って指定してくださ
い (see section グループパラメーター)。Spam グループには特別な属性があり、
spam グループに入ると、まだ読まれたことが無いすべてのメッセージ
に spam 印が付きます。そのため、spam グループに分割されたメールには自動
的に spam 印が付きます。
Spam メッセージを同定することは、Spam パッケージの仕事の半分に過ぎません。 もう半分は、グループを抜け出るときに実行します。このとき Spam パッケージ は複数のことを行ないます。
最初に spam か ham かに応じて記事を処理するために spam and ham
processors を呼び出します。各々の spam バックエンドと連係してい
る spam と ham のプロセッサーの対があって、プロセッサーが行なうことはバッ
クエンドに依存しています。現在のところ spam と ham プロセッサーの主な役
割は、辞書に基づいた spam 濾過のためのものです: それらは将来の spam を検
出する性能を改良するために、グループにあるメッセージの内容を濾過器の辞書
に追加します。spam-process
グループパラメーターで、どの spam プロ
セッサーを使うかを指定します。See section Spam と Ham プロセッサー.
Spam 濾過器が spam メッセージに印を付けそこなったら、グループを抜け出る ときにそのメッセージが spam として処理されるようにするために、あなた自身 がそれに印を付けても良いでしょう。
現在の記事に spam 印を付けて、‘$’ 印を表示しま
す (gnus-summary-mark-as-spam
)。
同様に、記事に誤って付けられた spam 印を消すこともできます。 See section 印を付ける.
普通 ham ではないグループで見つかった ham メッセージは ham として処理さ
れません。つまり、さらに処理されるために、それは ham グループに移動させ
るべきであるということです (以下を見てください)。しか
し spam-process-ham-in-spam-groups
およ
び spam-process-ham-in-nonham-groups
を設定することによって、それ
らの記事を ham として処理することを強制することもできます。
グループを抜け出るときに、二番目に Spam パッケージが行なうことは、ham 記
事を spam グループの外へ、spam 記事を ham グループの外へ移動させることで
す。Spam グループの ham 記事は、変
数 gnus-ham-process-destinations
またはグループパラメー
ター ham-process-destination
で指定されたグループに移動させられま
す。Ham グループの spam 記事は、変
数 gnus-spam-process-destinations
またはグループパラメー
ター spam-process-destination
で指定されたグループに移動させられ
ます。これらの変数が設定されていない場合、記事はそれらの現在のグループに
残されます。記事を移動させることができない場合 (例えば NNTP の
ような読み出し専用のバックエンドでは)、代わりに記事がコピーされます。
記事が別のグループに移動させられると、その新しいグループを訪れたときに、
記事は再び処理されます。普通これは問題になりませんが、それぞれの記事が一
回だけ処理されるようにしたいならば、gnus-registry.el
パッケージを
読み込んで、変数 spam-log-to-registry
を t
に設定してくだ
さい。See section Spam パッケージの設定例.
普通 spam グループは gnus-spam-process-destinations
を無視します。
しかし spam-move-spam-nonspam-groups-only
を nil
に設定す
ると、spam-process-destination
パラメーターに従っ
て spam は spam グループの外へ移動させられます。
最後に Spam パッケージが行なうことは、spam 記事に期限切れ消去の印を付け ることです。普通それは正しい行ないです。
これらのすべてがわけがわからなくても、心配は要りません (訳注: でも訳文が 正確ではないかもしれないので、変だと思ったら原文を見てね :-p)。すぐにそ れは神経インターフェース上に Lisp で小話を書くように自然なことになりま す… え゛ごめん、それにはまだ 50年早いですね。ただ私たちを信頼して ください。それは捨てたものではありません。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
やって来るメールを濾過するために Spam パッケージを使うには、最初に特級メー
ル分割を使うための設定を行なってください。See section 特級メール分割.
Spam パッケージは、特級分割のための変数 (メールバックエンドによる
が nnmail-split-fancy
または nnimap-split-fancy
) に追加す
ることができる、特別な分割関数を定義します:
(: spam-split) |
spam-split
関数は、あなたが選んだ spam バックエンド (一つまたは複
数) に応じて、やって来たメールを走査します。ディフォルトでは spam グルー
プは ‘spam’ という名前のグループですが、spam-split-group
を
カスタマイズすることによって変更することができます。
spam-split-group
の値に Gnus のバックエンド名やサーバー名を含めな
いでください。例えば ‘your-server’ という nnimap
のサーバー
では、‘spam’ という名前は ‘nnimap+your-server:spam’ を意味しま
す。したがって ‘nnimap+server:spam’ という値は誤りで、それ
は ‘nnimap+your-server:nnimap+server:spam’ というグループを指すこと
になってしまいます。
spam-split
はいかなる方法によってもメッセージの内容を変更しません。
IMAP の利用者への注意: spam バックエンドとし
て spam-check-bogofilter
、spam-check-ifile
およ
び spam-check-stat
を使う場合は、さらに変
数 nnimap-split-download-body
を t
に設定しなければなりま
せん。これらの spam バックエンドがメッセージの本文を「走査」(scan) する
ことができれば、非常に有用です。ディフォルトでは nnimap バックエンドはメッ
セージヘッダーだけを取り込みますが、nnimap-split-download-body
で
メッセージの本文も取り込むことを指示することができます。それ
は IMAP を遅くしてしまうので、ディフォルトでは設定されません。
そして、利用者に代わってそれを行なうことは、適切な判断ではありません。
See section クライアント側での IMAP 分割.
spam-use-*
変数を使って、spam-split
が使う一つ以上
の spam バックエンドを設定しなければなりません。See section Spam バックエンド.
通常 spam-use-*
は、あなたがこのようにして設定したすべて
の spam バックエンドを、単に使います。しかし、それらのいくつかだけを使う
ように、spam-split
に指示することもできます。それがなぜ役に立つの
かって? Spam バックエンドとし
て spam-use-regex-headers
と spam-use-blackholes
を使って
いて、かつ以下の分割規則を使っているとすると:
nnimap-split-fancy '(|
(any "ding" "ding")
(: spam-split)
;; ディフォルトのメールボックス。
"mail")
|
問題は ding 宛てのメッセージをすべて ding フォルダーに入れようとしている
ことです。でもそれは、ding メーリングリスト宛てに送られた明らか
な spam (例えば SpamAssassin と spam-use-regex-headers
によって検
出される spam) を許してしまうでしょう。一方、いくつかの ding 宛てのメッ
セージはブラックホールリストに載っているメールサーバーからやって来るので、
ding の規則より前に spam-split
を発動することができません。
解決策は SpamAssassin ヘッダーに ding の規則を置き換えさせ、ding の規則
の後で別の spam-split
の規則 (二つ目の正規表現によるヘッダーの検
査を含む) を作動させることです。これはパラメーター
を spam-split
に渡すことによって行なわれます:
nnimap-split-fancy '(| ;; |
これは、あなたの特別な必要に応じた特定の spam-split
検査を起動し、
それらの検査の結果で特定の spam グループを指し示します。すべてのメールに
対して、すべての spam 検査を行なう必要はありません。これが良いもう一つの
理由は、分割規則を設定してあるメーリングリスト宛てのメッセージに対して、
資源集約的なブラックホール・チェックを実行する必要がないということです。
さらに、nnmail の分割のために nnimap のものとは異なる spam 検査のやり方
を設定することもできるでしょう。気が狂うー。
使用するどんな spam バックエンドにも spam-use-*
変数を設定するべ
きです。そのわけは、‘spam.el’ を読み込むときに、どん
な spam-use-xyz
変数を設定したかによって、何らかの条件付きの読み
込みが行なわれるからです。See section Spam バックエンド.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
グループに入ったときに spam を検出するためには、そのグループ
の spam-autodetect
と spam-autodetect-methods
グループパラ
メーターを設定してください。これらは通常とおり G c か G p で
行なうことができます (see section グループパラメーター)。
使用するどんな spam バックエンドにも spam-use-*
変数を設定するべ
きです。そのわけは、‘spam.el’ を読み込むときに、どん
な spam-use-xyz
変数を設定したかによって、何らかの条件付きの読み
込みが行なわれるからです。
ディフォルトでは、まだ読まれたことがない記事だけが spam かどうかを検査さ
れます。spam-autodetect-recheck-messages
を t
に設定するこ
とによって、グループにあるすべての記事の再検査を Gnus に強制することがで
きます。
Spam の検査に spam-autodetect
の手段を使う場合は、異なるグループ
で違う spam 検出手段を指定することができます。例えば ‘ding’ グルー
プは自動検出の手段として spam-use-BBDB
を持つことができる一方で、
‘suspect’ グループでは spam-use-blacklist
およ
び spam-use-bogofilter
の手段を使うことができます。
spam-split
と違って検査の 順序 を制御できませんが、これは
たぶん重要ではありません。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Spam と ham プロセッサーには、グループバッファを抜け出るときに行なう動作 に関して特別な性質があります。Spam プロセッサーは spam メッセージに作用 し、ham プロセッサーは ham メッセージに作用するということです。現在のと ころ、これらのプロセッサーの主な役割は、 Bogofilter (see section Bogofilter) や Spam 統計パッケージのような辞書に基づ いた spam バックエンドの辞書を更新することです (see section Spam 統計濾過)。
それぞれのグループに適用される spam と ham プロセッサーは、そのグループ
の spam-process
グループパラメーターで決定されます。このグループ
パラメーターが定義されていないと、それらは変
数 gnus-spam-process-newsgroups
によって決められます。
Gnus はあなたが受け取った spam から学びます。あなたは一つ以上の spam グ
ループに spam 記事を集めて、変数 spam-junk-mailgroups
を適切に設
定もしくはカスタマイズしなければなりません。また、spam を含めるグループ
を、そのグループパラメー
ター spam-contents
を gnus-group-spam-classification-spam
に
設定するか、またはそれに対応する変
数 gnus-spam-newsgroup-contents
をカスタマイズすることによって宣
言することができます。spam-contents
グループパラメーター
と gnus-spam-newsgroup-contents
変数は、それらの種別
を gnus-group-spam-classification-ham
に設定することによって、
ham グループであることを宣言するために使うこともできます。グルー
プが spam-junk-mailgroups
, spam-contents
また
は gnus-spam-newsgroup-contents
であることを示す分類が行なわれて
いないと、それらは 未分類 であると解釈されます。すべてのグループ
はディフォルトでは未分類です。
Spam グループでは、ディフォルトですべてのメッセージが spam であると解釈
されます: そのグループに入ると、それら
に ‘$’ 印 (gnus-spam-mark
) が付きます。あるメッセージを見て、
いったんそれに spam の印を付けても、後で取り消せば、その後そのグループに
入ったときに、それには spam 印は付きません。
spam-mark-only-unseen-as-spam
パラメーターを nil
にすれば、
そういう動作をやめさせる、つまりすべての未読メッセージに spam 印が付くよ
うにすることができます。そのグループの概略バッファーにいるときに、やっぱ
り spam ではなかったとわかった記事があったら、それらのすべてか
ら ‘$’ 印を消さなければなりません。‘$’ 印を消すに
は M-u でその記事を「未読」にするか、あるいは d を使っ
て spam ではないものとして読んだことを宣言すれば良いでしょう。グループを
抜けるとき、すべての spam 印 (‘$’) が付いた記事は spam プロセッサー
に送られ、それらを spam の標本として学習します。
メッセージは他のいろいろな方法によっても消去されるかもしれないし、
ham-marks
グループパラメーターが無効にされなければ、‘R’ 印
と ‘r’ 印、および ‘X’ 印と ‘K’ は、‘Y’ 印と同様
に、すべて spam では無い記事に関連付けられるものと解釈されます (それぞ
れ ‘R’ はディフォルトの既読の印、‘r’ 明示的な消去の印、
‘X’ は自動的な削除の印、‘K’ は明示的な削除の印、そし
て ‘Y’ は低いスコアのため印です)。この仮定は、特に真性の spam を検
出するために消去 (kill) ファイルかスコアファイルを使っている場合は、間違
いかもしれません。そうであれば ham-marks
グループパラメーターを調
整するべきです。
このグループまたはトピックパラメーターを ham であると解釈したい印のリス トに設定することができます。ディフォルトでは、消去 (deleted)、既 読 (read)、削除 (killed)、kill ファイルにあるもの (kill-filed) および低 いスコア (low-score、既読だけれども spam ではないと考える) 印のリストで す。Ham 印のリストに可視 (tick) 印を含めることが役立つこともあります。未 読印を ham 印にすることは、通常それが分類されていないことを表すので、勧 められません。しかし、あなたがそれを行なうことはできるし、私たちに不満は ありません。
このグループまたはトピックパラメーターを spam であると解釈したい印のリス トに設定することができます。ディフォルトでは spam 印だけを持つリストです。 それを変更することは勧めませんが、本当にそうしたいのならご勝手に。
グループを抜けるときに (そのグループが 何 であっても)、そ
の spam-contents
の分類にかかわらず、spam 印が付いているすべての
記事は spam プロセッサーに送られ、それらを spam の標本として学習します。
意図的にたくさんの消去を行なうと、たまにそれは見ていない ‘K’ 印が付
いた記事群で終わるかもしれません。そしてそれらは偶然に spam を含んでいる
かもしれません。最も良いのは、本当の spam に ‘$’ が付いていて、他に
何も印が無いことを確かめることです。
Spam グループを抜けるときに、spam 印が付いているすべての記事
には spam プロセッサーで処理した後で期限切れ消去の印が付けられます。これ
は 未分類 または ham グループに対しては行なわれません。さ
らに spam グループにあるどの ham 記事も、
ham-process-destination
グループパラメーターが示す場所
か gnus-ham-process-destinations
変数の中で合致する場所のどちらか
に移されます。後者はグループ名に合致する正規表現のリストです (M-x
customize-variable <RET> gnus-ham-process-destinations によってこの
変数をカスタマイズするのが最も簡単です)。変数を手でカスタマイズする方が
好きな人のために言っておくと、それぞれのグループ名のリストは普通
の Lisp の list です。ham-process-destination
パラメーターが設定
されていないと、ham 記事は移動させられません。
spam-mark-ham-unread-before-move-from-spam-group
パラメーターが設
定されていると、ham 記事には移動させられる前に未読の印が付けられます。
例えば NNTP のような読み込み専用バックエンドであるため に ham が移動できない場合、それはコピーされます。
グループごとに、または正規表現に合致するグループごとに、複数の移動先を指 定できることに注目してください! これによって ham 記事を正規のメールグルー プと ham トレーニング グループに送ることができます。
Ham グループを抜けるときに、ham 印が付いているすべての記事 は ham プロセッサーに送られ、それらを spam ではない標本として学習します。
変数 spam-process-ham-in-spam-groups
はディフォルトで
は nil
です。Spam グループで見つかった ham がプロセッサーに送られ
るようにしたい場合は t
にしてください。通常これは行なわれません。
その代わり、あなたが自分で ham 記事を ham グループに送って、そこで処理す
ることが想定されています。
変数 spam-process-ham-in-nonham-groups
はディフォルトで
は nil
です。Ham ではない (spam または未分類の) グループで見つかっ
た ham がプロセッサーに送られるようにしたい場合は t
にしてくださ
い。通常これは行なわれません。その代わり、あなたが自分で ham 記事
を ham グループに送って、そこで処理することが想定されています。
Ham または 未分類 グループを抜けるときに、すべて
の spam 記事は、spam-process-destination
グループパラメー
ターが示す場所か gnus-spam-process-destinations
変数の中で合致す
る場所のどちらかに移されます。後者はグループ名に合致する正規表現のリスト
です (M-x customize-variable <RET>
gnus-spam-process-destinations によってこの変数をカスタマイズするのが最
も簡単です)。変数を手でカスタマイズする方が好きな人のために言っておくと、
それぞれのグループ名のリストは普通の Lisp の list です。
spam-process-destination
パラメーターが設定されていないと、
spam 記事は単に期限切れ消去されます。グループ名は完全形であること、すな
わちグループバッファーでグループ名の前に ‘nntp:servername’ のような
ものが見える場合は、ここでもそれを使う必要があります。
例えば NNTP のような読み込み専用バックエンドであるため に spam が移動できない場合、それはコピーされます。
グループごとに、または正規表現に合致するグループごとに、複数の移動先を指 定できることに注目してください! これによって spam 記事を正規のメールグ ループと spam トレーニング グループに送ることができます。
Ham と spam に関する問題は、Gnus がディフォルトではこの処理を追跡してく
れないことです。複数回にわたって処理することを回避するために、
spam.el
が gnus-registry.el
を使って処理された記事を追跡す
るように、spam-log-to-registry
変数を有効にしてください。
gnus-registry.el
が登録する数を制限してしまうと、制限が無い場合の
ように動作しないことを覚えておいてください。
Spam グループにある、まだ読まれたことが無い記事だけに spam の印を付けた
い場合は、この変数をセットしてください。ディフォルトではセットされていま
す。これを nil
にすると、未読の記事にも spam 印が付けられます。
Ham が spam グループから移動される前に印を消したい場合は、この変数をセッ
トしてください。これは ham に印を付けるために可
視 (tick) 印 (‘!’) のようなものを使う場合に、とても役に立ちます。記
事はあたかもそれがメールサーバーから来たばかりのように、無印
で ham-process-destination
に置かれるでしょう。
この変数は spam.el
が spam の自動検出を行なう場合に、まだ読まれた
ことが無い記事だけか、またはすべての未読記事のどちらに対して spam 検査を
行なうかを指示します。これはそのままにしておくことを勧めます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
From Ted Zlatanov <tzz@lifelogs.com>.
;; |
spam.el
を使うFrom Reiner Steib <reiner.steib@gmx.de>.
私のプロバイダーは (IMAP) メールサーバー上で (DCC と 連係した) bogofilter を立ち上げました。認識され た spam は ‘spam.detected’ へ行き、残りには通常の濾過規則が適用され る、すなわち ‘some.folder’ か ‘INBOX’ に行きます。誤検出と見逃 しのトレーニングは、それぞれ ‘training.ham’ また は ‘training.spam’ に記事をコピーするか移動させることによって行なわ れます。サーバー上の cron ジョブが、それらを適切な ham または spam オプ ションとともに bogofilter に与え、‘training.ham’ およ び ‘training.spam’ フォルダーからそれらを削除します。
以下の gnus-parameters
の要素群によって、spam.el
はほとん
どの仕事を私のためにこなします:
("nnimap:spam\\.detected" (gnus-article-sort-functions '(gnus-article-sort-by-chars)) (ham-process-destination "nnimap:INBOX" "nnimap:training.ham") (spam-contents gnus-group-spam-classification-spam)) ("nnimap:\\(INBOX\\|other-folders\\)" (spam-process-destination . "nnimap:training.spam") (spam-contents gnus-group-spam-classification-ham)) |
gnus-group-spam-classification-spam
の項のために、すべてのメッセー
ジには spam の印 ($
) が付けられます。誤検出を見つけたら、私は記事
にいくつかの他の ham 印 (ham-marks
, Spam と Ham プロセッサー) を付けます。グループを出るとき、それらの記事
は ‘INBOX’ (私が記事を置いておきたいとこ
ろ) と ‘training.ham’ (bogofilter のトレーニング用) の両方のグルー
プにコピーされ、‘spam.detected’ フォルダーから削除されます。
gnus-article-sort-by-chars
の項は、私の誤検出の発見を簡単にします。
私は、すべて似たサイズの、たくさんのワーム (sweN, …) を受け取りま
す。それらをサイズ (つまり文字数) でまとめると、他の誤検出を見つけやすく
なるのです。(もちろん厳密にはワームは spam (UCE,
UBE) ではありません。ともあれ、それらの要らないメールを濾過す
るのに bogofilter は私にとって優秀な道具です。)
gnus-summary-mark-as-spam
) を
叩きます。グループを出るとき、それらのメッセージ
は ‘training.spam’ に移されます。
spam-report.el
で Gmane グループの spam を報告するFrom Reiner Steib <reiner.steib@gmx.de>.
以下の gnus-parameters
に納めた要素によって、S x
(gnus-summary-mark-as-spam
) で gmane.*
グループの spam 記
事に印を付け、グループを出るときに Gmane に報告します:
("^gmane\\." (spam-process (gnus-group-spam-exit-processor-report-gmane))) |
加えて、私は news.gmane.org からではなくローカルニュースサー
バー (leafnode) を通して記事を読んでいるので、
(setq spam-report-gmane-use-article-number nil)
を使っています。
つまり、記事番号が news.gmane.org におけるものと異なるので、正しい記事番
号を見つけるために spam-report.el
に X-Report-Spam
ヘッダー
を検査させなければなりません。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Spam パッケージは spam を検出するための様々なバックエンドを提供します。 それぞれのバックエンドでは、spam を検出する手段の組 (see section やって来るメールの濾過, see section グループにおける spam の検出) と spam および ham プ ロセッサーの対が定義されています (see section Spam と Ham プロセッサー)。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
入ってくるメールを分割するときにブラックリストを使いたい場合は、この変数
を t
に設定してください。送信者がブラックリストに載っているメッセー
ジは spam-split-group
に送られます。これは、送信者が spammer であ
ることが定義されているメールに対してだけ動作する、明示的な濾過器です。
入ってくるメールを分割するときにホワイトリストを使いたい場合は、この変数
を t
に設定してください。送信者がホワイトリストに載っていないメッ
セージは、次の spam-split 規則 (による検査工程) に送られます。これは、ホ
ワイトリストに載っていない誰かのメッセージは spam とも ham とも見なされ
ないことを意味する、明示的な濾過器です。
送信者がホワイトリストに載っていないすべてのメッセージが spam だと見なさ
れることを意味する暗黙の濾過器としてホワイトリストを使いたい場合は、この
変数を t
にしてください。注意して使ってください。
このシンボルを、グループパラメーターのカスタマイズによってグループ
の spam-process
パラメーターに加えるか、また
は gnus-spam-process-newsgroups
変数に加えてください。このシンボ
ルがグループの spam-process
パラメーターに加えられると、spam 印が
付いた記事の送信者がブラックリストに追加されます。
警告
旧式の gnus-group-spam-exit-processor-blacklist
の代わり
に (spam spam-use-blacklist)
を使うことを推奨します。すべて同等に
動作することは保証されます。
このシンボルを、グループパラメーターのカスタマイズによってグループ
の spam-process
パラメーターに加えるか、また
は gnus-spam-process-newsgroups
変数に加えてください。このシンボ
ルがグループの spam-process
パラメーターに加えられると、ham 印が
付いた ham グループの記事の送信者がホワイトリストに追加されます。
警告
旧式の gnus-group-ham-exit-processor-whitelist
の代わり
に (ham spam-use-whitelist)
を使うことを推奨します。すべて同等に
動作することは保証されます。
ブラックリストは、あなたが spam の送信者だと考えるアドレスに合致する正規 表現のリストです。例えば ‘vmadmin.com’ の誰からでも来るメールを阻止 するには、あなたのブラックリストに ‘vmadmin.com’ を入れてください。 空のブラックリストで始めましょう。ブラックリストの各項目は Emacs の正規 表現の構文を使います。
逆に、ホワイトリストは何のアドレスが正当だと考えられるかを告げます。ホワ イトリストにあるアドレスからやって来たすべてのメッセージは、非-spam だと 見なされます。BBDB ホワイトリスト も見てください。ホワイトリストの各項 目は Emacs の正規表現の構文を使います。
ブラックリストとホワイトリストのファイルの所在は、
spam-directory
変数 (ディフォルトは ‘~/News/spam’) また
は直接 spam-whitelist
と spam-blacklist
変数でカスタマイズ
することができます。ホワイトリストとブラックリストのファイルは、ディフォ
ルトでは spam-directory
のディレクトリーにあり、それぞ
れ ‘whitelist’ と ‘blacklist’ という名前が付けられます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
spam-use-whitelist
(see section ブラックリストとホワイトリスト) に似ていま
すが、ホワイトリストのアドレスの源として BBDB を使います。正規表現はあり
ません。spam-use-BBDB
をちゃんと動作させるには BBDB を読み込まな
ければ (load しなければ) なりません。その送信者が BBDB に載っていないメッ
セージは、次の spam-split 規則 (による検査工程) に送られます。これは、
BBDB に載っていない誰かのメッセージは spam とも ham とも見なされないこと
を意味する、明示的な濾過器です。
送信者が BBDB に載っていないすべてのメッセージが spam だと見なされること
を意味する暗黙の濾過器として BBDB を使いたい場合は、この変数
を t
にしてください。注意して使ってください。BBDB に載っている送
信者だけが通行を許され、他のすべては spammers として分類されます。
spam.el
に関する限りは、spam-use-BBDB
の別名とし
て spam-use-BBDB-exclusive
を使うことができますが、それは別のバッ
クエンドではありません。spam-use-BBDB-exclusive
を t
に設
定すれば、BBDB による分割はすべて排他的になります。
このシンボルを、グループパラメーターのカスタマイズによってグループ
の spam-process
パラメーターに加えるか、また
は gnus-spam-process-newsgroups
変数に加えてください。このシンボ
ルがグループの spam-process
パラメーターに加えられると、ham 印が
付いた ham グループの記事の送信者が BBDB に追加されます。
警告
旧式の gnus-group-ham-exit-processor-BBDB
の代わりに、
(ham spam-use-BBDB)
を使うことを推奨します。すべて同等に動作する
ことは保証されます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
グループパラメーターか変数 gnus-spam-process-newsgroups
をカスタ
マイズして、このシンボルをグループの spam-process
パラメーターに
加えてください。これが加えられると、spam 印が付いた記事のグループ
が HTTP 経由で Gmane の管理者に報告されます。
Gmane は http://gmane.org で見つけることができます。
警告
旧式の gnus-group-spam-exit-processor-report-gmane
の代わり
に (spam spam-use-gmane)
を使うことを推奨します。すべて同等に動作
することは保証されます。
この変数はディフォルトで t
です。例えばあなた自身がニュースサーバー
を運営しているなどの理由によって、ローカルな記事番号が Gmane の記事番号
と合わない場合は、nil
に設定してください。
spam-report-gmane-use-article-number
が nil
であると、
spam-report.el
はその番号を記事のヘッダーから取得します。
Gmane への spam の報告に付加される User-Agent に現れるメールアドレスです。
これは、誤った報告が行なわれたときに、Gmane の管理者があなたに連絡できる
ようにするためのものです。ディフォルトは user-mail-address
です。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
spam-use-whitelist
(see section ブラックリストとホワイトリスト) に似ていま
すが、送信者のアドレスの代わりに、潔白なメッセージの証しとし
て hashcash の印 (tokens) を使います。Hashcash 印が無いメッセージは次
の spam-分割 (spam-split) 規則 (による検査工程) に送られます。これ
は hashcash 印が見当たらないメッセージは spam とも ham とも見なされない
ことを意味する、明示的な濾過器です。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
このオプションはディフォルトで無効になっています。このオプションをセット
すると、Gnus にブラックホール型の分散 spam 処理システム (例えば DCC) を
調べさせることができます。変数 spam-blackhole-servers
は、Gnus が
意見を求めるブラックホール・サーバーのリストを持ちます。現在のリストはか
なり広範囲に渡っていますが、もし時代遅れなサーバーを含んでいたら必ず私た
ちに知らせるようにしてください。
ブラックホール・チェックは ‘dig.el’ パッケージを使います。しか
し spam-use-dig
を nil
に設定すれば、より良い性能のため
に ‘dns.el’ を代わりに使うことを spam.el
に指示することがで
きます。現状では spam-use-dig
を nil
に設定することは、い
く人かの利用者が使えないかもしれないので、それが可能な性能改善であるにも
かかわらず推奨されません。しかし、それが動くかどうかを確かめることはでき
ます。
ブラックホール・チェックのために意見を求めるサーバーのリストです。
ブラックホール・サーバーのリストと照合されてはならない IP の正規表現です。
nil
に設定されると無効になります。
‘dns.el’ パッケージの代わりに ‘dig.el’ パッケージを使います。
ディフォルトの設定である t
が推奨されます。
ブラックホール・チェックは入って来るメールに対してだけ行なわれます。ブラッ クホールに spam または ham プロセッサーはありません。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
このオプションはディフォルトで無効になっています。このオプションをセット
すると、Gnus に正規表現のリストとメッセージヘッダーを照合させることがで
きます。変数 spam-regex-headers-spam
およ
び spam-regex-headers-ham
が正規表現のリストを持ちます。メッセー
ジが spam か ham かどうかをそれぞれの変数を使って決めるために、Gnus はメッ
セージヘッダーを検査します。
メッセージヘッダーの中で一致した時に、それが spam であることを断定するた めの正規表現のリストです。
メッセージヘッダーの中で一致した時に、それが ham であることを断定するた めの正規表現のリストです。
正規表現によるヘッダーの検査は、入ってきたメールに対してだけ行なわれます。 正規表現のために特有な spam または ham プロセッサーはありません。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Eric Raymond の迅速な Bogofilter を spam-split
に使用したい場合は、
この変数をセットしてください。
Spam 記事に ‘$’ 印を関連付ける最小限度の世話だけで、Bogofilter トレー ニングはすべてかなり自動的になります。Spam とそうでないものそれぞれの種 類について数百通ずつの記事を入手するまで、これをやらなければなりません。 デバッグまたは好奇心のどちらかのために概略モードで S t コマンドを 使うことによって、現在の記事の spam 度 (spamicity) スコ ア (0.0〜1.0) を表示させることができます。
Bogofilter はメッセージが spam かどうかを、ある明確な閾値に基づいて見極 めます。閾値はカスタマイズできます。Bogofilter のドキュメントを調べてく ださい。
Path に bogofilter
の実行ファイルが無い場合、Bogofilter の処理は
取り消されます。
spam-use-bogofilter-headers
を使う場合は、これを有効にしてはいけ
ません。
Bogofilter の spam 度スコアを得ます (spam-bogofilter-score
)。
メッセージヘッダーだけを調べるために Eric Raymond の迅速
な Bogofilter を spam-split
に使用したい場合は、この変数をセット
してください。これは spam-use-bogofilter
と同じように動作しますが、
あらかじめ X-Bogosity
ヘッダーがメッセージに存在しなければなりま
せん。通常これは procmail の技法か、何かそれに似たもので行なうことになる
でしょう。Bogofilter のインストールに関する文書を調べてください。
spam-use-bogofilter
を使う場合は、これを有効にしてはいけません。
このシンボルを、グループパラメーターのカスタマイズによってグループ
の spam-process
パラメーターに加えるか、また
は gnus-spam-process-newsgroups
変数に加えてください。このシンボ
ルがグループの spam-process
パラメーターに加えられると、spam 印が
付いた記事が bogofilter の spam データベースに加えらます。
警告
旧式の gnus-group-spam-exit-processor-bogofilter
の代わり
に (spam spam-use-bogofilter)
を使うことを推奨します。すべて同等
に動作することは保証されます。
このシンボルを、グループパラメーターのカスタマイズによってグループ
の spam-process
パラメーターに加えるか、また
は gnus-spam-process-newsgroups
変数に加えてください。このシンボ
ルがグループの spam-process
パラメーターに加えられると、ham 印が
付いた ham グループの記事が非-spam 記事用の Bogofilter データベー
スに追加されます。
警告
旧式の gnus-group-ham-exit-processor-bogofilter
の代わり
に (ham spam-use-bogofilter)
を使うことを推奨します。すべて同等に
動作することは保証されます。
これは Bogofilter がそのデータベースを格納するディレクトリーです。ディフォ ルトでは設定されていないので、Bogofilter はそれ自身のディフォルトのデー タベース・ディレクトリーを使います。
Bogofilter のメール分類器は、意図と目的の点で ifile
に似ていま
す。Ham および spam のプロセッサーが提供され、記事で Bogofilter が使われ
るべきか、または既に使われたかを spam-split に示すため
の spam-use-bogofilter
変数
と spam-use-bogofilter-headers
があります。この機能を検査するため
に Bogofilter のバージョン 0.9.2.1 が使われました。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
spam-split
に SpamAssassin を使いたい場合は、この変数をセットして
ください。
SpamAssassin は、規則と分析のセット (ベイジアンフィルタを含む) に基づい て、それぞれの記事のスコアを裁定します。ベイジアンフィルタは、spam 記事 に ‘$’ 印を関連させることによって訓練することができます。Spam のス コアは、概略モードで S t コマンドを使うことによって見ることができ ます。
この変数をセットすると、それぞれの記事は spam-split
が呼ばれると
きに SpamAssassin によって処理されます。メールが SpamAssassin で処理され
るようになっていて、SpamAssassin ヘッダーだけを使いたいのならば、代わり
に spam-use-spamassassin-headers
をセットしてください。
spam-use-spamassassin-headers
を使う場合、これを有効にしてはいけ
ません。
メールが SpamAssassin で処理されるようになっている場合に、
SpamAssassin ヘッダーに基づいて spam-split
に分割を行なわせたいの
ならば、この変数をセットしてください。
spam-use-spamassassin
を使う場合、これを有効にしてはいけません。
この変数は SpamAssassin の実行形式を指します。spamd
を稼働してい
るならば、より速い処理のために、この変数に spamc
の実行形式を設定
することができます。spamd
/spamc
の更なる情報は、
SpamAssassin のドキュメントを見てください。
SpamAssassin は、spam を同定するために広範な分析を行なう、強力で融通性の
ある spam 濾過器です。Ham および spam のプロセッサーが提供され、記事
で SpamAssassin が使われるべきか、または既に使われたかを spam-split に示
すための spam-use-spamassassin
変数
と spam-use-spamassassin-headers
変数があります。この機能を検査す
るために SpamAssassin のバージョン 2.63 が使われました。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Bogofilter に似た統計分析器であ
る ifile
を spam-split
に使いたい場合は、この変数を有効
にしてください。
spam-use-ifile
に、単なる spam/非-spam ではなくて ifile のすべて
の区分 (カテゴリー) を与えてもらいたいならば、この変数を有効にしてくださ
い。これを使う場合は、その文献に書かれているように ifile をトレーニング
しておかなければなりません。
ifile に関する限り、これは spam メッセージのカテゴリーです。実際に使われ る文字列は無関係ですが、たぶんあなたは ‘spam’ のディフォルト値を残 しておきたいでしょう。
これは ifile データベースのファイル名です。ディフォルトでは定義されてい ないので、ifile はそれ自身のディフォルトのデータベース名を使います。
ifile のメール分類器は、意図と目的の点で Bogofilter に似ています。
Spam と ham のプロセッサーが提供され、ifile が使われるべきであること
を spam-split に示すための spam-use-ifile
変数があります。この機
能を検査するために ifile のバージョン 1.2.1 が使われました。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
このバックエンドは、統計に基づいた濾過を行なう Spam 統計 Emacs Lisp パッ ケージを使います (see section Spam 統計パッケージ)。これを使う前に、あな たの Spam 統計辞書を初期化するための、いくつかの追加の処理を行なう必要が あるでしょう。See section spam-統計 (spam-stat) 辞書を作る.
このシンボルを、グループパラメーターのカスタマイズによってグループ
の spam-process
パラメーターに加えるか、また
は gnus-spam-process-newsgroups
変数に加えてください。このシンボ
ルがグループの spam-process
パラメーターに加えられると、spam 印が
付いた記事が spam 記事用の spam-stat データベースに追加されます。
警告
旧式の gnus-group-spam-exit-processor-stat
の代わり
に (spam spam-use-stat)
を使うことを推奨します。すべて同等に動作
することは保証されます。
このシンボルを、グループパラメーターのカスタマイズによってグループ
の spam-process
パラメーターに加えるか、また
は gnus-spam-process-newsgroups
変数に加えてください。このシンボ
ルがグループの spam-process
パラメーターに加えられると、ham 印が
付いた ham グループの記事が非-spam 記事用の spam-stat データベー
スに追加されます。
警告
旧式の gnus-group-ham-exit-processor-stat
の代わり
に (ham spam-use-stat)
を使うことを推奨します。すべて同等に動作す
ることは保証されます。
これは spam.el
が ‘spam-stat.el’ と働き合うことを可能にしま
す。‘spam-stat.el’ は (Lisp だけの) spam 内部データベースを提供しま
すが、それは ifile や Bogofilter と違って外部プログラムを必要としません。
Spam と ham のプロセッサー、および spam-split
のため
の spam-use-stat
変数が提供されます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
気軽に spam を濾過する一つのやり方は SpamOracle を使うことです。統計的に メールを濾過するための道具である SpamOracle は、Xavier Leroy によって書 かれました。これは別にインストールする必要があります。
Gnus で SpamOracle を使うには、複数のやり方があります。すべての場合に、 メールは mark モードで動作している SpamOracle にパイプされます。 すると SpamOracle は、そのメールを spam だと見なしたかどうかを示 す ‘X-Spam’ ヘッダーを記入します。
実現可能な一つは、SpamOracle を :prescript
として メールソース指示子 から走らせることです。この方法には、利用者
が X-Spam ヘッダーを見ることができるという利点があります。
もっとも手軽な方法は、‘spam.el’ (see section Spam パッケージ) が SpamOracle を呼ぶようにすることです。
spam.el
で SpamOracle を利用できるようにするためには、変
数 spam-use-spamoracle
を t
にして、
nnmail-split-fancy
または nnimap-split-fancy
を設定してく
ださい。See section Spam パッケージ. この例では nnimap サーバー
の ‘INBOX’ が SpamOracle を使って濾過されます。Spam であると認定さ
れたメールは、spam-split-group
(この場合は ‘Junk’) に移動さ
せられます。Ham なメッセージは ‘INBOX’ に残ります:
(setq spam-use-spamoracle t spam-split-group "Junk" ;; nnimap 用にたぶん nnimap-split-methods を設定する必要あり。 ;; マニュアル参照。 nnimap-split-inbox '("INBOX") nnimap-split-fancy '(| (: spam-split) "INBOX")) |
Gnus に SpamOracle を使って spam の濾過をさせたい場合に t
にして
ください。
Gnus は利用者の PATH で見つかった ‘spamoracle’ という SpamOracle の
バイナリーを使います。これにはカスタマイズ可能な変
数 spam-spamoracle-binary
を使います。
SpamOracle はその解析結果をデータベースとして格納するために、ディフォル
トで ‘~/.spamoracle.db’ ファイルを使います。これは変
数 spam-spamoracle-database
で制御され、ディフォルト
は nil
です。それは、ディフォルトの SpamOracle データベースが使わ
れることを意味します。データベースがどこか特別な場所に置きたい場合は、
spam-spamoracle-database
をそのパスに設定してください。
SpamOracle はメッセージが spam か ham かを見極めるために統計的な手法を使 います。間違いや見逃しの少ない良い結果を得るために、SpamOracle はトレー ニングを必要とします。SpamOracle は spam メールの特徴を学びます。 add モード (トレーニング・モード) を使って、良いメー ル (ham) と spam を SpamOracle に与えなければなりません。これは、概略バッ ファーで | を押すことによってメールを SpamOracle のプロセスにパイ プするか、または ‘spam.el’ の spam および ham プロセッサーを使うこ とによって行なうことができます。See section Spam パッケージ.
このシンボルを、グループパラメーターのカスタマイズによってグループ
の spam-process
パラメーターに加えるか、また
は gnus-spam-process-newsgroups
変数に加えてください。このシンボ
ルがグループの spam-process
パラメーターに加えられると、spam 印が
付いた記事が spam のサンプルとして SpamOracle に送られます。
警告
旧式の gnus-group-spam-exit-processor-spamoracle
の代わり
に (spam spam-use-spamoracle)
を使うことを推奨します。すべて同等
に動作することは保証されます。
このシンボルを、グループパラメーターのカスタマイズによってグループ
の spam-process
パラメーターに加えるか、また
は gnus-spam-process-newsgroups
変数に加えてください。このシンボ
ルがグループの spam-process
パラメーターに加えられると、
ham グループにある ham 印が付いた記事が ham の記事のサンプルとし
て SpamOracle に送られます。
警告
旧式の gnus-group-ham-exit-processor-spamoracle
の代わり
に (ham spam-use-spamoracle)
を使うことを推奨します。すべて同等に
動作することは保証されます。
例: これらは ham グループとして分類された、つまり ham の記事しか ないグループのためのグループパラメーターです。
((spam-contents gnus-group-spam-classification-ham) (spam-process ((ham spam-use-spamoracle) (spam spam-use-spamoracle)))) |
このグループでは spam-use-spamoracle
が ham と spam の両方の処理
を行ないます。このグループに spam 記事があって (SpamOracle が十分なサン
プルを食べさせてもらっていなければ、そうなりますね)、かつ利用者がいくつ
かの記事に spam の印を付けたならば、それらの記事は SpamOracle によって処
理されます。そのプロセッサーは、新しい spam のサンプルとし
て SpamOracle に記事を送ります。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Blackbox という新しいバックエンドを追加したいとしましょう。入ってくるメー ルを濾過するために以下のものを用意してください:
(defvar spam-use-blackbox nil "Blackbox を使うときは t にする。") |
Blackbox が入ってくるメールを検査できるのであれば、
spam-check-blackbox
を書いてください。
Blackbox が spam と ham を登録または登録解除できるのであれば、手始め
に bogofilter の登録/解除ルーチンを使って、またはもっと Blackbox にふさ
わしい他の登録/解除ルーチンを使っ
て spam-blackbox-register-routine
およ
び spam-blackbox-unregister-routine
を書いてください。
spam-check-blackbox
関数は、他の習慣に倣っ
て ‘nil’ か spam-split-group
を返さなければなりません。あな
たに何ができるかの例として、既存の spam-check-*
関数を参照してく
ださい。また、あなたがそうでない理由を完全に理解していないならば、テンプ
レートに齧り付いてください。
Spam と ham メッセージを処理するために、以下のものを用意してください:
Spam または ham のプロセッサーを用意する必要はありません。 Blackbox が spam または ham の処理をサポートする場合だけ、それらを用意し てください。
さらに ham と spam のプロセッサーは単一の変数ではなくされつつあり、代わ
りに (spam spam-use-blackbox)
また
は (ham spam-use-blackbox)
の形式が推奨されます。今のとこ
ろ spam/ham プロセッサー変数はまだあちこちにありますが、長く存続すること
はないでしょう。
(defvar gnus-group-spam-exit-processor-blackbox "blackbox-spam" "概略を出るときに呼ばれる blackbox の spam プロセッサー。 Spam グループだけに適用される。") (defvar gnus-group-ham-exit-processor-blackbox "blackbox-ham" "概略を出るときに呼ばれる blackbox の ham プロセッサー。 Spam ではない (未分類または ham) グループだけに適用される。") |
gnus.el
にあるグループパラメーター spam-process
に
(const :tag "Spam: Blackbox" (spam spam-use-blackbox)) (const :tag "Ham: Blackbox" (ham spam-use-blackbox)) |
を加えてください。それを必ずパラメーターと変数のカスタマイズの二回につい て行なうようにしてください。
Blackbox が入ってくるメールが spam かどうかを検査できるのであれば、
(variable-item spam-use-blackbox) |
を gnus.el
のグループパラメー
ター spam-autodetect-methods
に加えてください。
最後に、spam.el
にある適切な spam-install-*-backend
関数を
使ってください。利用できる関数は次の通りです。
spam-install-backend-alias
この関数は、オリジナルのバックエンドのようにすべてを行なうバックエンドの
ために、別名を使うことができるようにするだけです。今のところ、これ
は spam-use-BBDB-exclusive
を spam-use-BBDB
のように働かせ
るためだけに使われます。
spam-install-nocheck-backend
この関数は、検査する機能は無いけれども ham または spam を登録/解除するこ
とができるバックエンドになります。spam-use-gmane
がそのようなバッ
クエンドです。
spam-install-checkonly-backend
この関数は、入ってくるメールが spam かどうかの検査だけを行なうことができ
るバックエンドになります。それはメッセージを登録または登録解除することが
できません。spam-use-blackholes
と spam-use-hashcash
がそ
のようなバックエンドです。
spam-install-statistical-checkonly-backend
この関数は、入ってくるメールの検査だけを行なうことができる、統計処理を行
なうバックエンド (検査のためにメッセージの本文全体を必要とします) になり
ます。spam-use-regex-body
がそのような濾過器です。
spam-install-statistical-backend
この関数は、入ってくるメールの検査と登録/解除ルーチンを持つ、統計処理を
行なうバックエンドになります。spam-use-bogofilter
は、そのように
仕立てられています。
spam-install-backend
これは最も普通なバックエンドになります。それは検査とメッセージの
登録/解除を行なうことができ、統計処理の能力はありません。
spam-use-BBDB
がそのようなバックエンドです。
spam-install-mover-backend
移動させる (mover) バックエンドは spam.el
の内部で、概略バッファー
を出るときにある明確なやり方で記事を移動させます。おそらくそのようなバッ
クエンドを使うことは無いでしょう。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Paul Graham は統計を使った spam の濾過に関する優れたエッセイを書きまし た: A Plan for Spam。そこで彼 は SpamAssassin によって使われているような規則ベースの濾過に固有な欠陥に ついて述べています。例えば: 誰かが規則を書かなければならないし、他のすべ ての人はこれらの規則をインストールしなければなりません。あなたはいつも遅 れをとってしまいます。それよりも、それが spam または非-spam に何となく似 ているかどうかに基づいてメールを濾過する方が遥かに良いだろうと彼は主張し ています。これを測定する一つの手段は単語の分布です。その後で彼は、新着メー ルがあなたの他の spam メールに似ているかどうかをチェックする方法を述べて います。
基本的な考えはこうです: あなたのメールの二つの集合を作ります。一方 は spam を、もう一方は spam ではないメールを集めたものです。両方の集合に おける各単語の出現頻度を数えて、集合のメールの総数で重み付けを行ない、こ の情報を辞書に格納します。新着メールのすべての単語について、 spam か spam ではないメールに属する確率を判定します。15 の最も顕著な単語 を使って、そのメールが spam であることの確率の総計を計算します。この確率 がある閾値より高かったら、そのメールは spam であると見なされます。
Spam 統計パッケージは、この種の濾過のためのサポートを Gnus に追加します。 Spam パッケージ (see section Spam パッケージ) のバックエンドの一つとして、また はそれ自体を使うことができます。
Spam 統計パッケージを使う前に、それを使うための準備を行なう必要がありま す。第一に、あなたのメールの二つの集合が要ります。一方は spam を、もう 一方は spam ではないメールを集めたものです。そして、それらの二つの集合を 使って辞書を作り、それをセーブしてください。そして特に最後に、あなたの特 級分割の規則でこの辞書を使ってください。
9.18.8.1 spam-統計 (spam-stat) 辞書を作る | ||
9.18.8.2 spam-統計 (spam-stat) を使ってメールを分割する | ||
9.18.8.3 spam-統計 (spam-stat) 辞書への低階層インターフェース |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
統計に基づいた spam 濾過を始めるには、前もって二つのメールの集合 (一方 は spam を、もう一方は spam ではないメールを集めたもの) に基づいた統計を 作らなければなりません。そしてそれらの統計は、後で利用するために辞書に格 納されます。それらの統計を意味のあるものにするために、両方の集合につき数 百通のメールが必要です。
今のところ Gnus は nnml バックエンドでだけ辞書の自動生成をサポートします。 nnml バックエンドは一通のメールにつき一つのファイルで、すべてのメールを 一つのディレクトリーに格納します。以下を使ってください:
このディレクトリーにあるすべてのファイルについて spam の統計を生成します。 すべてのファイルは一つの spam メールとして扱われます。
このディレクトリーにあるすべてのファイルについて非-spam の統計を生成しま す。すべてのファイルは一つの spam ではないメールとして扱われます。
普通は ‘~/Mail/mail/spam’ のようなディレクトリー (通
常 ‘nnml:mail.spam’ グループに対応) につい
て spam-stat-process-spam-directory
を呼ぶことになるでしょう。ま
た ‘~/Mail/mail/misc’ のようなディレクトリー (通
常 ‘nnml:mail.misc’ グループに対応) につい
て spam-stat-process-non-spam-directory
を呼びましょう。
IMAP を使っている場合はメールをローカルには持っていないので、
それは働きません。一つの解決策は、Gnus エージェントで記事をキャッシュす
ることです。そうすれば spam-stat-process-spam-directory
とし
て ‘"~/News/agent/nnimap/mail.yourisp.com/personal_spam"’ のような
ものを使うことができます。See section キャッシュとしてのエージェント.
この変数はすべての統計のハッシュテーブル—辞書と言っているもの—を保持 します。このハッシュテーブルは、双方の集合のすべての単語について spam お よび spam ではないメールにおける出現頻度を表すベクトルを格納します。
統計を最初から作り直したいときは、辞書をリセットする必要があります。
すべての統計を削除して spam-stat
ハッシュテーブルをリセットします。
行なったら辞書をセーブしなければなりません。辞書はかなり大きくなるかもし れません。辞書を追加更新しない場合 (言い換えると、例えば毎月一回作り直す 場合)、頻繁に現れないか、または spam か spam ではないメールのどちらに属 するかがはっきりしないすべての単語を削除することによって、辞書のサイズを 小さくすることができます。
辞書のサイズを小さくします。これは辞書を追加更新したくない場合だけ使って ください。
辞書をセーブします。
辞書の格納に使うファイル名です。ディフォルトは ‘~/.spam-stat.el’ で す。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
この章は Spam 統計パッケージを Spam パッケージ (see section Spam パッケージ) と は 独立して 使う方法について説明します。
最初に以下を ‘~/.gnus.el’ ファイルに追加してください:
(require 'spam-stat) (spam-stat-load) |
これは必要な Gnus のコードとあなたが作った辞書を読み込みます。
次に、特級分割の規則を改造する必要があります: どうやっ
て spam-stat
を使うかを決めてください。以下の例は nnml バックエン
ド用です。nnimap バックエンドでもまったく同様に動作します。単
に nnmail-split-fancy
の代わりに nnimap-split-fancy
を使っ
てください。
‘mail.misc’ と ‘mail.spam’ の二つのグループだけがある、最も単
純な事例を想定しましょう。以下の式は、メールが spam でなかった
ら ‘mail.misc’ に行くことを示します。もし spam だった
ら、spam-stat-split-fancy
は ‘mail.spam’ を返します。
(setq nnmail-split-fancy `(| (: spam-stat-split-fancy) "mail.misc")) |
Spam 用のグループです。ディフォルトは ‘mail.spam’ です。
特定の表題を持つメールを他のグループに入れる濾過をも行ないたいならば、以 下の式を使ってください。正規表現に合致しないメールだけに spam の可能性が あると考えます。
(setq nnmail-split-fancy `(| ("Subject" "\\bspam-stat\\b" "mail.emacs") (: spam-stat-split-fancy) "mail.misc")) |
最初に spam の濾過をしたい場合、辞書を作るときに十分に注意しなければなり
ません。
spam-stat-split-fancy
は ‘mail.emacs’ と ‘mail.misc’ の
どちらのメールも spam ではないと解釈しなければならないので、辞書を作ると
きに spam ではない集合に両方とも入っていなければならないことに注意してく
ださい。
(setq nnmail-split-fancy `(| (: spam-stat-split-fancy) ("Subject" "\\bspam-stat\\b" "mail.emacs") "mail.misc")) |
これを伝統的な濾過と組み合わせることもできます。ここではすべての HTML だ
けのメールを ‘mail.spam.filtered’ グループに入れるものとしましょう。
spam-stat-split-fancy
はそれらのメールを見ないので、辞書を作ると
きに、‘mail.spam.filtered’ のメールが spam の集合または spam ではな
い集合のどちらにも入るべきではないことに注意してください!
(setq nnmail-split-fancy `(| ("Content-Type" "text/html" "mail.spam.filtered") (: spam-stat-split-fancy) ("Subject" "\\bspam-stat\\b" "mail.emacs") "mail.misc")) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
spam-stat
を使うための主なインターフェースは以下の関数群です:
Spam であると考えられる新着メールがあるバッファーで呼ばれます。まだ処理 されていない新着メールに対して使ってください。
Spam ではないと考えられる新着メールがあるバッファーで呼ばれます。まだ処 理されていない新着メールに対して使ってください。
それが spam ではなくて通常のものだとはもはや考えられないメールがあるバッ ファーで呼ばれます。すでに spam ではないものとして処理されてしまったメー ルの地位の変更に使ってください。
それが通常のものではなくて spam だとはもはや考えられないメールがあるバッ ファーで呼ばれます。すでに spam であるものとして処理されてしまったメール の地位の変更に使ってください。
ハッシュテーブルをファイルにセーブします。変数 spam-stat-file
で
設定されたファイル名が使われます。
ハッシュテーブルをファイルから読み込みます。変
数 spam-stat-file
で設定されたファイル名が使われます。
単語の spam スコアを返します。
バッファーの spam スコアを返します。
特級メール分割のためにこの関数を使ってください。
nnmail-split-fancy
に規則 ‘(: spam-stat-split-fancy)’ を追加
しましょう。
それを使う前に、必ず辞書が読み込まれているようにしてください。これに は ‘~/.gnus.el’ ファイルに以下が必要です:
(require 'spam-stat) (spam-stat-load) |
以下は一般的なテストのための関数呼び出しです:
リセット: (setq spam-stat (make-hash-table :test 'equal)) Spam の学習: (spam-stat-process-spam-directory "~/Mail/mail/spam") 非-spam の学習: (spam-stat-process-non-spam-directory "~/Mail/mail/misc") 辞書をセーブ: (spam-stat-save) 辞書ファイルのサイズを確認: (nth 7 (file-attributes spam-stat-file)) 単語数を確認: (hash-table-count spam-stat) Spam の検査: (spam-stat-test-directory "~/Mail/mail/spam") 非-spam の検査: (spam-stat-test-directory "~/Mail/mail/misc") 辞書のサイズを小さくする: (spam-stat-reduce-size) 辞書をセーブ: (spam-stat-save) 辞書ファイルのサイズを確認: (nth 7 (file-attributes spam-stat-file)) 単語数を確認: (hash-table-count spam-stat) Spam の検査: (spam-stat-test-directory "~/Mail/mail/spam") 非-spam の検査: (spam-stat-test-directory "~/Mail/mail/misc") |
以下は辞書を生成する方法です:
リセット: (setq spam-stat (make-hash-table :test 'equal)) Spam の学習: (spam-stat-process-spam-directory "~/Mail/mail/spam") 非-spam の学習: (spam-stat-process-non-spam-directory "~/Mail/mail/misc") 別の必要な非-spam グループに対して繰り返し... 辞書のサイズを小さくする: (spam-stat-reduce-size) 辞書をセーブ: (spam-stat-save) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Gnus レジストリーは記事の Message-ID を元にすべてのバックエンドを横断的 に追跡するためのパッケージです。これが提供するいくつもある素敵な事をすれ ば、Gnus ユーザーは近所の人たちから羨ましがられ、床屋がただで散髪してく れるようになり、世界で起きる様々な問題の専門家になることができるでしょう。 かなり素晴らしい機能が満載です。うーむ、全部がそうではないかもしれません けれどね。
じきに詳しく説明しますが、まずはそれらの機能の早見表を掲げておきましょう。 あなたの注意力が持続しないかもしれないので… いや、何でもないです。
議論を同じグループで続けられるようにする機能です。Message-ID に加えて表 題と送信者を使うことができます。これにはいくつかのやり方があります。
gnus-summary-refer-parent-article
のようなコマンドは、照会する記
事に行くするために、そのメッセージがあるグループにかかわらず、レジストリー
を利用することができます。
レジストリーは記事のための独自のフラグとキーワードを記録することができま す。これで例えば記事に “To-Do” の印を付けることができ、記事が nnimap、 nnml、nnmaildir などのどのバックエンドにあっても、そのフラグは立ち続けま す。
レジストリーは記事のためのどんなデータでも記憶しておくことができます。簡 単な Elisp インターフェースですが。組み込まれている逆引き機能を有効にし ておくと、特定の条件に合うすべての記事をすばやく見つけることができます。
9.19.1 設定 | ||
9.19.3 親への特級分割 | ||
9.19.2 Message-ID に基づいてレジストリーで記事を取得する | ||
9.19.4 独自のフラグとキーワードの記録 | ||
9.19.5 任意のデータの記録 |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
良くしたことに Gnus レジストリーの設定はとても簡単です:
(setq gnus-registry-max-entries 2500) (gnus-registry-initialize) |
これは Gnus が newsrc をセーブするときの処理にレジストリーをセーブする処
理を加えます (それは Gnus を終了するときと *Group*
バッファー
で s を押したときに発動します。さらにこれは Gnus の記事に関する動
作 (コピー、移動など) にレジストリーを操作する機能を加えるので、この初期
化による結果を元に戻すのは簡単ではありません。その、あまり愉快ではない詳
細については gnus-registry-initialize
を見てください。
以下はレジストリーの持ち主が使うための他の設定です (それらを無頓着にコピー する前に、それらが何をするかを理解してください)。
(setq gnus-registry-split-strategy 'majority gnus-registry-ignored-groups '(("nntp" t) ("nnrss" t) ("spam" t) ("train" t)) gnus-registry-max-entries 500000 ;; これがディフォルト gnus-registry-track-extra '(sender subject)) |
これらが意味するのは、あちこちにあるたくさんの記事を保持し、送信者と表題 で (単なる親の Message-ID でではなく) 記事を追跡し、入ってきた記事をレジ ストリーが分割するときに記事の行き先として一つ以上の候補があったら多数決 で決める、ということです。加えて “nntp”、“nnrss”、“spam” また は “train” に合致するグループの記事をレジストリーに無視させます。
あなたがこのすべてに感銘を受けることは疑いありませんが、こう要求しもする でしょう。「私は Gnus ユーザーでカスタマイズすることが生きがいです。もっ と下さい」。では諸設定の一般的な説明に参りましょう。
gnus-registry-split-fancy-with-parent
が追跡しないグループです。
それらは、でもレジストリーに記録されます。これは正規表現のリストです。ディ
フォルトでは、名前が “delayed”、“drafts”、“queue” また
は “INBOX” で終わっている、nnmairix
バックエンドに属している、
あるいは “archive” という語を含んでいるどんなグループも追跡しません。
レジストリーが保持する項目の数 (整数または無制限を意味す
る nil
) です。
除去した後でレジストリーが保持する最大のエントリーの数 (整数または無制限
を意味する nil
) です。
Gnus の操作を通じてレジストリーが記録されるファイルです。ディフォルトで ファイル名は ‘.newsrc.eld’ と同じディレクトリーに置かれ る ‘.gnus.registry.eioio’ です。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Message-ID
に基づいてレジストリーで記事を取得するレジストリーは、それぞれの Message-ID
の記事が存在するグループを
知っています。これは「記事を参照する方法」すなわち「ある Message-ID の記
事を参照する方法を Gnus に指示するもの」を増強するためにてこ入れすること
ができます。See section 親記事を探す.
nnregistry
参照方法はまさにそれをします。それには、記事がそれがあ
るグループにかかわらず見つかるかもしれないという特長があります—もしそ
の Message-ID
をレジストリーが知っていれば。それは、以下の方針に
沿って、あるもので起動ファイルを増大することにより可能になるはずです:
;; レジストリーを使って記事を参照する場合に良好なヒット率を得るため ;; には、十分なエントリーを維持するようにしてください。記事がどこに ;; あるかを Gnus に知らせるために、長いグループ名を使用してください。 (setq gnus-registry-max-entries 2500) (gnus-registry-initialize) (setq gnus-refer-article-method '(current (nnregistry) (nnweb "gmane" (nnweb-type gmane)))) |
上記の例は、最初は現在のグループの中で、あるいはレジストリーを使って、そ してそれらすべてが失敗したら Gmane を使って記事を探すことを Gnus に指示 します。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
簡単に言うと、これでフォローアップの電子メールを、それがあるべき場所に置 くことができます。
すべての記事は固有の Message-ID を持っていて、レジストリーはそれを記憶し ます。記事を移動またはコピーするとき、レジストリーはそのことに気付いて、 分割方法のひとつの選択肢として新しいグループを提案します。
フォローアップするとき、言及する対象となる元の記事の Message-ID は通常ヘッ ダーにあります。レジストリーはそれを知り、その記載内容を使って元の記事が どこにあるかを探します。あなたが特級分割の設定に置いておく必要があるのは、 このような規則だけです:
(setq nnimap-my-split-fancy '(| ;; split to parent: you need this (: gnus-registry-split-fancy-with-parent) ;; other rules, as an example (: spam-split) ;; default mailbox "mail") |
さらに、以下の変数をカスタマイズする必要があるでしょう。
これはシンボルのリストです。カスタマイズのインターフェースから変更するの
には、それがベストです。ディフォルトは (subject sender)
で、それ
でおそらく動作するでしょう。メールの流通量が大きくて人々が同じグループに
とどまっていないと、煩わしくなる場合があります。
これはシンボルです。カスタマイズのインターフェースから変更するのには、そ
れがベストです。ディフォルトは nil
ですが、合致の多数決または最初
に見つかったものに基づいて送信者 (sender) または表題 (subject) で分割す
るには majority
または first
に設定する必要があるでしょう。
私は majority
が最も良いことを見つけました。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
レジストリーを使って、独自のフラグとキーワードをメッセージごとに設定する
ことができます。Gnus->Registry Marks メニューか M M x ショートカッ
ト・キーを使ってください。ここで x
は印の名前の最初の文字です。
レジストリーが扱うことができる独自の印のリストです。もしそうしたいなら、 ディフォルトのリストを変更することができます。それを行なうのならば、それ らが効果を及ぼす前に Emacs を終了させる必要があります (レジストリーを抜 き取って (unload して) から再読み込み (reload) するか、または必要であろ う特別なマクロを実行することもできますが、たぶんそんな面倒なことは望まな いでしょう)。カスタマイズのインターフェースを使って、そのリストを変更し てください。
ディフォルトでこのリストには Important
、Work
、
Personal
、To-Do
それに Later
の印があります。それら
すべてに、Important
のための M M i のように、最初の文字を使
うショートカット・キーが用意されています。
独自のレジストリーの印を記事に付加するために使う関数です。補完のために、 利用できる印を提示します。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
レジストリーには任意のデータを記録するために、Message-ID をキーとして使 う簡単なインターフェースがあります (データは保存するためにできる限り一つ のリストに変換されます)。
id
を持つメッセージのために key
について value
を格
納します。
id
を持つメッセージのために key
についてのデータを取得しま
す。
特別なエントリーが貴重であるなら、たとえその Message-ID の記事のグループ
が無くても、またレジストリーのサイズの制限に達しても、それらが存在してい
るとレジストリーはすべてのエントリーを永久に保持します。ディフォルトでは
これはまさに (marks)
なので、独自のレジストリーの印は貴重であると
見なされます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
gnus-dired-minor-mode
は dired バッファーで使えるいくつかの便利な
機能を提供します。これは次の式で有効になります:
(add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode) |
Dired で印を付けたものを添付ファイルとして送信しま
す (gnus-dired-attach
)。どの message バッファーに添付するかを尋ね
られます。
適切な mailcap 項目に従ってファイルを開きま
す (gnus-dired-find-file-mailcap
)。接頭引数を付けると、ファイルを
新しいバッファーで (単に) 開きます。
mailcap 項目に従ってファイルを印刷します (gnus-dired-print
)。印刷
コマンドが無い場合は PostScript 画像として印刷します。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
gnus-home-directory
すべての Gnus のファイル名とディレクトリー名の変数は、これを基点にして初 期値が決定されます。ディフォルトは ‘~/’ です。
gnus-directory
Gnus がデータを格納するほとんどのファイルとディレクトリーの名前の変数は、
これを基点にして初期値が決定されます。ディフォルトは SAVEDIR
環境
変数の値か、その変数が設定されていない場合は ‘~/News/’ です。
‘~/.gnus.el’ ファイルが読まれたときは Gnus のほとんどはすでに読み込 まれているということに注意してください。これはつまり、この変数 を ‘~/.gnus.el’ の中で設定しても、この変数によって初期化される他の ディレクトリー変数は正しく設定されないだろうということです。この変数は代 わりに ‘.emacs’ で設定してください。
gnus-default-directory
上記の変数にはまったく関係ありません—この変数はすべての Gnus バッファー
のディフォルトディレクトリーをどうすべきかを設定します。も
し C-x C-f のような命令を実行すると、現在のバッファーのディフォル
トディレクトリーを起点にしたプロンプトが出てくるでしょう。この変数
が nil
(これがディフォルト) であれば、Gnus を起動したときにあなた
がいたバッファーのディフォルトディレクトリーがディフォルトディレクトリー
になるでしょう。
gnus-verbose
この変数は 0 から 10 までの間の整数です。数値が大きいほどたくさんのメッ セージが表示されます。この変数が 0 であれば Gnus は何のメッセージも見せ ません。これが 7 (ディフォルト) であれば特に重要なメッセージが表示され、 10 であれば Gnus は決してお喋りを止めず、たくさんのメッセージであなたに めまいを起こさせるでしょう。
gnus-verbose-backends
この変数は gnus-verbose
と同様の効果をもたらしますが、Gnus 本体で
はなく Gnus のバックエンドに対して適用されます。
gnus-add-timestamp-to-message
この変数は gnus-verbose
と gnus-verbose-backends
で制御さ
れて出力されるメッセージに、時刻 (タイムスタンプ) を付加するかどうかを制
御します。ディフォルト値は時刻を付加しないことを意味する nil
です。
log
だったら ‘*Messages*’ バッファー (XEmacs で
は ‘ *Message-Log*’ バッファー) に入るメッセージだけに時刻を付加し
ます。もし nil
でも log
でもなければ、ログに入るメッセージ
だけでなく、エコーエリアに表示されるものにも時刻を付加します。
nnheader-max-head-length
バックエンドが記事の連続したヘッダー部を読んでいるときは、できる限り少な
い量だけを読もうとします。この変数 (ディフォルト 8192) は、バックエンド
がヘッダーと本文の間の区切り行の捜索を諦める前に読み込む絶対最大長を指定
します。この変数が nil
であれば、読み込み上限はありません。も
し t
であれば、バックエンドは記事を部分部分で読み込もうとはせず、
記事全体を読み込みます。これは ange-ftp
や efs
のあるバー
ジョンで意味を持ちます。
nnheader-head-chop-length
この変数 (ディフォルト 2048) は、前記の操作を行なっているときに、どれく らいの大きさの単位で各記事を読み込むかを設定します。
nnheader-file-name-translation-alist
これはファイル名の文字をどのように変換するかを指定する連想リストです。例 えば、もし ‘:’ があなたのシステムではファイル名の文字としては使えな い場合 (あなたは OS/2 利用者ですね)、以下のようにすることができます。
(setq nnheader-file-name-translation-alist '((?: . ?_))) |
実際には、これは OS/2 と MS Windows (ちぇっ!) システム上でのこの変数のディ フォルト値です。
gnus-hidden-properties
これは「不可視」テキストを隠すために使われる属性のリストです。ほとんどの
システムではディフォルトは (invisible t intangible t)
で、これは
不可視テキストを見えなくして触れないようにします。
gnus-parse-headers-hook
ヘッダーを解釈する前に呼び出されるフック。これは例えば、取得したヘッダー の統計情報を取るとか、あるいはある種のヘッダーを取り除くことに使うことが できます。まあ、私は何でこんなものが欲しいかよくわかんないんだけどね。
gnus-shell-command-separator
二つのシェル命令を区切るのに使用される文字列。ディフォルトは ‘;’ で す。
gnus-invalid-group-regexp
利用者にグループ名を尋ねるときに使う、「無効な」グループ名に合致する正規 表現です。ディフォルト値は Gnus の内部動作をめちゃめちゃにしてしまうかも しれない、いくつかの 本当に 使えないグループ名を引っかけます。 (通常、選択方法とグループの境界に使っている ‘:’ などを許してしまう とまずい、ということです。)
IMAP の利用者はグループ名に ‘/’ を使いたいかもしれません が。
gnus-safe-html-newsgroups
Html 記事中のリンクがすべて安全であると見なされるグループです。値はそれ
らのグループに合致する正規表現、グループ名のリスト、または nil
で
す。これは mm-w3m-safe-url-regexp
より優先されます。ディフォルト
値は "\\`nnrss[+:]"
です。これは emacs-w3m で記事を描画するときだ
け、つまり mm-text-html-renderer
が w3m
に設定されていると
きだけ効果があります。See (emacs-mime-ja)Display Customization section ‘表示のカスタマイズ’ in The Emacs MIME Manual.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Yasutaka SHINDOH on May 11, 2011 using texi2html 1.82.