[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9. いろいろ


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.1 プロセス/接頭引数

多くの関数、その中でも記事の移動、デコード、保存をするための関数は、「プ ロセス/接頭引数の習慣」として知られているものを使います。

これは、利用者がどの記事に命令を実行したいかを見つけるための方法です。

それはこのような感じです:

数値接頭引数が N だったら、現在の記事を含めた次の N 個の記事に対して作業 を実行します。もし数値接頭引数が負だったら、現在の記事を含めた前の N 個 の記事に対して作業を実行します。

transient-mark-modenil ではなく、リージョンが設定され ていたら、リージョンにあるすべての記事で作業が行なわれます。

数値接頭引数が無くても、いくつかの記事はプロセス印が付いている場合には、 プロセス印が付いている記事で作業が実行されます。

数値接頭引数やプロセス印の付いている記事が無い場合は、現在の記事でだけ作 業を実行します。

これは実際とても単純なのですが、びっくりされないためにも、はっきりさせて おく必要があります。

プロセス印に反応するコマンドは、現在プロセス印が付いている記事のリストを スタックに積んで、記事のすべてのプロセス印を消去します。前回の設定 を M P y で復旧させることができます (see section プロセス印を付ける)。

多くの人々をぎょっとさせ、恐がらせると思われることの一つは、例え ば 3 d が、本当に d d d と同じことをすることです。 それぞれの d (これは現在の記事に既読の印を付けます) は、ディフォル トでは印を付けた後で次の未読記事に移動するので、3 d は概略バッファー がどうなっていても、次の三つの未読記事を既読にします。動作をもっと分かり やすくするには、gnus-summary-goto-unreadnil に設定して ください。

多くのコマンドはプロセス/接頭引数の習慣を使いません。それをしないすべて のコマンドは、このマニュアルで明記されています。そういうコマンドにプロセ ス/接頭引数の習慣を適用するには、M-& コマンドを使ってください。例 えば、そのグループのすべての記事を期限切れ消去可能として印を付けるに は M P b M-& E とします。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.2 利用者との相互作用

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] [ ? ]

9.3 シンボルの接頭引数

非常に多くの 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] [ ? ]

9.4 書法仕様変数

このマニュアルを通して、おそらく gnus-group-line-format また は gnus-summary-mode-line-format のように呼ばれるたくさんの変数が あることに気付いたでしょう。これらは Gnus が色々なバッファーでどのように 行を出力するかを制御します。非常にたくさんのものがあります。幸運なことに、 それらはすべて同じ構文を使うので、あまり嫌な目には会わないでしょう。

書法仕様 (format) 指定の例です (グループバッファーより):
%M%S%5y: %(%g%)\n’。それは極めて醜く、たくさんのパーセント記号がい たるところにあります。

現在のところ 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] [ ? ]

9.4.1 書法仕様の基本

それぞれの ‘%’ の要素は、当のバッファーが作成されるときに何らかの文 字列や他のもので置き換えられます。‘%5y’ は「‘y’ 指定を挿入して、 5 文字の場所を得るために空白を詰め込みなさい」ということです。

普通の C や Emacs Lisp の書法仕様 (format) 文字列と同じように、 ‘%’ と書法仕様の型の文字の間の数値修飾子は、常に少なくともその長さ になるように、出力に (空白文字などを)「詰め込み」ます。‘%5y’ はその 場所が常に (少なくとも) 5 文字の長さになるように、左に空白を詰め込みます。 もし ‘%-5y’ とすれば、代わりに右側に詰め込みます。

特に広い幅の値に対して保護するために、その場所の長さを制限したいこともあ るでしょう。そのために ‘%4,6y’ などと指定することができます。これは、 その場所は決して 6 文字を超える幅にはならず、かつ 4 文字より少ない幅にも ならないということです。

Gnus は ‘%&user-date;’ のような、いくつかの拡張様式指示もサポートし ます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.4.2 モード行書法仕様

モード行書法仕様変数 (例えば gnus-summary-mode-line-format) は、 以下の二つの違い以外は、バッファー行に適応した書法仕様変 数 (see section 書法仕様の基本) と同じ規則に従います:

  1. 最後に改行 (‘\n’) があってはなりません。
  2. 特別な ‘%%b’ 仕様をバッファー名を表示するために使うことができます。 えーと、実はそれは仕様ではないのです—‘%%’ というものは、 Emacs が ‘%b’ を受け取って、そのモード行表示機能に「バッファー名を 表示しなさい」と解釈させるために、単に書法仕様の処理系を無傷で通り抜ける ことができるように ‘%’ を囲う方法なのです。Emacs が理解するモード行 指定の完全な一覧については、変数 mode-line-format の説明文を見て ください。

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.4.3 上級書法仕様

表示された領域を後で何らかの方法で処理するのは、しばしば役に立ちます。詰 め込み、制限、切り取り、および特定の値の抑制は、「チルダ修飾子」を使うこ とによって実現することができます。よくあるチルダ仕様は、 ‘%~(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] [ ? ]

9.4.4 利用者定義の指定

すべての仕様に、利用者が定義した ‘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] [ ? ]

9.4.5 書法仕様フォント

すべての書法仕様変数によって共有される、ハイライト (強調表示) のための仕 様があります。述語 ‘%(’ と 述語 ‘%)’ で囲まれたテキストには特 別な 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)

;; 記事の数をボールドで緑のフェースにしたいので、
;; my-green-bold という新しいフェースを作ります。
(copy-face 'bold 'my-green-bold)
;; 色を設定します。
(set-face-foreground 'my-green-bold "ForestGreen")
(setq gnus-face-2 'my-green-bold)

;; 新しい特製の書法仕様を設定します。
(setq gnus-group-line-format
      "%M%S%3{%5y%}%2[:%] %(%1{%g%}%)\n")

あなたがこの案を使って、完全に読めなくて非常に下品な表示を作ることができ ることを確信しています。楽しんでください!

%(’ 指定 (やその類のもの) は、モード行変数ではまったく意味をなさな いことに注意してください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.4.6 ポイントの移動

Gnus は通常ほとんどのバッファーで、ポイントを各行のあらかじめ決められた 場所に移動します。ディフォルトでは、ポイントは行の最初のコロンに移動しま す。この振るまいは、三つの違う方法でカスタマイズすることができます。

また、コロンを行のどの場所にでも移動することができます。

コロンの位置にポイントを移動させるための関数を定義し直すことができます。 その関数は gnus-goto-colon と呼ばれています。

でも、行にコロンを含めたくないならば、これを扱うためのおそらく最も手ごろ な方法は ‘%*’ という述語を使うことです。あなたの行の書法仕様の定義 に ‘%*’ を入れておけば、Gnus はそこにポイントを置きます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.4.7 整列

通常は、空白文字を詰め込んだり端を切り落とすことによって、文字列をディス プレイに並べることができます。でも大きさが違う異なる文字列を連結させる場 合は、単に文字列を出力してしまうのがより手ごろであることが多いはずで、し かしそうするとその後に続くテキストを並べるのに悩むことになります。

それを行なうために、Gnus は整列子 (tabulator) の仕様 ‘%=’ を備えて います。これには二つの形式 hard tabulators およ び soft tabulators があります。

%50=’ は文字列が 50桁までの場所を占めるように空白文字を詰め込みま す。もし挿入するテキストの末端が 50桁より後ろになる場合は何も挿入しませ ん。これは穏やか (soft) な整列子です。

%-50=’ もまた、文字列が 50桁までの場所を占めるように空白文字を詰め 込みます。ですが、もし挿入するテキストの末端が 50桁より後ろになる場合は、 50桁より後ろになる過剰なテキストは削除されます。これは厳密 (hard) な整列 子です。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.4.8 Wide Characters

多くの地域において、固定幅フォントは同じ幅の文字を持っています。しかしい くつかの地域、よく知られている東アジアの国々では、ラテン文字と幅の広い文 字が混在して使われています。

整形において、Gnus は文字列が 10個の文字の幅だとしたら、スクリーンで も 10個分のラテン文字の幅になると仮定しますが、それは問題です。かの国々 では、それは正しくありません。

それを救済するために、あなた は gnus-use-correct-string-widthst に設定することがで きます。これはバッファーの生成を遅くしますが、より美しい結果を得ることが できるでしょう。ディフォルト値は XEmacs では t ですが Emacs で は nil です。(訳注: 日本語などを Emacs で表示する場合に、書法仕様 によっては t にしないと概略バッファーの表示が不揃いになることがあ ります。)


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.5 ウィンドウの配置

いえ、X に関することはありませんから、おとなしくしてください。

もし gnus-use-full-windownil でないと、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) でなければなりません。それぞれの分割は完全に再帰的で、任意の数 の verticalhorizontal 分割を含むことができます。

正しい大きさを見つけることは、少し複雑になります。どのウィンドウ も gnus-window-min-height (ディフォルトは 1) の文字の高さよりも小 さくてはならないし、少なくとも gnus-window-min-width (ディフォル トは 1) の文字幅でなくてはなりません。Gnus は分割を適用する前にこれを強 制しようと試みます。もし標準の Emacs のウィンドウの幅/高さ制限を使いたい なら、この二つの変数を nil にするだけで良いです。

Emacs の用語になじんでいないのなら、 horizontalvertical の分割は、期待したものと反対の動作 をするでしょう。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 で使うことができる すべてのキーの一覧は、そのディフォルト値で見つけることができます。

キー messagegnus-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-configurationnil でない値に設 定してください。

木表示 (see section 木表示) を使っていて、木ウィンドウが垂直方向に次の 別のウィンドウで表示されるなら、ウィンドウの大きさが変更されることを避け るために gnus-tree-minimize-window をいじるのが良いでしょう。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.5.1 ウィンドウ配置の名称

以下は現在知られているほとんどのウィンドウ配置とそれらの用途です:

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] [ ? ]

9.5.2 ウィンドウ配置の例


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.6 フェースとフォント

かつてフォントとフェースをいじくるのは非常に難しかったのですが、今日では 非常に簡単です。単に M-x customize-face とやって、変えたいフェース を選び出して、標準のカスタマイズインターフェースを使って変更することがで きます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.7 コンパイル

あの行書法仕様指定変数を覚えています か? gnus-summary-line-format, gnus-group-line-format など などです。さて、Gnus はこれらの変数が何であっても注意を払いますが、残念 ながらそれらを変更すると大変重大な速度低下を引き起こすことになります。 (これらの変数のディフォルト値は、それらに関連付けられたバイトコンパイル された関数を持っていますが、利用者作成のものはもちろんそうではありませ ん。)

これを改善するために、変数をいじくりまわして、(なんとなく) 満足したと感 じた後で、M-x gnus-compile を実行することができます。これは新しい 指定がバイトコンパイルされ、もう一度最高速度に復帰できるということです。 Gnus はこれらのバイトコンパイルされた指定を ‘.newsrc.eld’ ファイル に保存します。(もっとも利用者が定義した関数は、この関数によってコンパイ ルされません—それらを ‘~/.gnus.el’ ファイルに突っ込んでから、自分 でそのファイルをバイトコンパイルしなければなりません。)


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.8 モード行

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] [ ? ]

9.9 ハイライトとメニュー

変数 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-visualt であると、ハイライトとメニューはすべて の Gnus のバッファーで使用されます。

他のすべてのバッファーの外見に影響する総合的な変数は:

gnus-mouse-face

これは Gnus でマウスのハイライトに使われるフェース (すなわちフォント) で す。gnus-visualnil であると、マウスハイライトはなされ ません。

まったく違ったメニューを作成するために、関連するフックがあります:

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] [ ? ]

9.10 デーモン

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] [ ? ]

9.11 やり直し

実行したことのやり直しができると、とても便利です。Emacs の普通のバッファー では十分に簡単です—単に undo ボタンを押すだけです。しか し Gnus のバッファーでは、それは簡単ではありません。

Gnus がバッファー内に表示しているものは、Gnus にとってはまったく何の価値 もありません—これはみんな、利用者に奇麗に見えるようにデザインされてい るただのデータなのです。C-k でグループバッファーからグループを消去 すると、その行は消え去りますが、それは実際の動作—当のグループ を Gnus の内部構造体から削除すること、の単なる副作用でしかありません。こ れらのやり直しは、通常の Emacs の undo 関数では行なうことができま せん。

Gnus は利用者がすることを憶えておいて、利用者がすることの逆を行なうこと によって、これを多少は救済しようとします。利用者が undo キーを押 すと、一段階または数段階前までの操作を元に戻すコードを実行します。しかし、 すべての操作が簡単に逆戻りできるわけではないので、現在 Gnus は、やり直し 可能なキーの機能を僅かしか提供していません。これらはグループの削除、グルー プの貼り付け、およびグループの既読記事のリストの変更です。実際それだけで す。将来はもっと機能が追加されるかもしれませんが、追加されるそれぞれの機 能は保存するべきデータを増やすので、決して Gnus は完全にやり直し可能には ならないでしょう。

やり直し機能は gnus-undo-mode マイナーモードによって提供されます。 これは gnus-use-undonil 以外であれば使用され、これがディ フォルトです。C-M-_ キーが gnus-undo 命令を実行します。これ は通常の Emacs の undo 命令にいくぶん似ているはずです。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.12 述語指示子

いくつかの Gnus の変数は「述語指示子」(predicate specifiers) です。これ は、その多くをすべて記述する必要なしに、述語の仕様に融通を効かせることが できる特別な形式です。

これらの指示子は関数、シンボルおよびリストからなるリストです。

例です:

 
(or gnus-article-unseen-p
    gnus-article-unread-p)

利用できるシンボルは orand および not です。関数 はすべて一つのパラメーターを受け取ります。

呼ぶことができる関数を作るために、Gnus はこれらの指示子について内部的 に gnus-make-predicate を使います。この関数へのこの入力パラメーター は、述語指示子の中のすべての関数に渡されます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.13 司会役

もしあなたが司会者 (モデレーター) ならば、‘gnus-mdrtn.el’ パッケー ジを使うことができます。これは標準の Gnus パッケージには含まれていません。 ‘larsi@gnus.org’ に、どのグループの司会を行なうのかを述べたメール を書いてください。そうすればコピーを手に入れることができます。

司会者用パッケージは概略バッファーのマイナーモードとして実装されています。

 
(add-hook 'gnus-summary-mode-hook 'gnus-moderate)

をあなたの ‘~/.gnus.el’ ファイルに入れてください。

あなたが ‘rec.zoofle’ の司会者だとすると、これは以下のように動作す るようになっています:

  1. 受信したメールを ‘Newsgroups:.*rec.zoofle’ に合致させることによって 分割します。これは投稿されようとしているすべての記事を、あるメールグルー プ—例えば ‘nnml:rec.zoofle’ に入れます。
  2. あなたは時折このグループに入り、e (edit-and-post) あるい は s (just send unedited) 命令を使って記事を投稿します。
  3. rec.zoofle’ ニュースグループを読んでいる途中で、もしあなたが承認し ていない記事をたまたま見つけたとしたら、c 命令で取り消しできます。

二つのグループで司会者モードを使うとすれば、こうなります:

 
(setq gnus-moderated-list
      "^nnml:rec.zoofle$\\|^rec.zoofle$")

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.14 グループを取得する

時々「Gnus が起動しているかどうかを気にしないでこのグループを読みたい。」 ということができれば便利なことがあります。これは、利用者よりもプログラム のコードを書く人に便利な機能ですが、どちらにし ろ gnus-fetch-group コマンドはこの機能を提供します。それはグルー プの名前を引数としてとります。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.15 画像の拡張

XEmacs それに v21 以上の Emacs は絵やその種のものを表示することができ る(2)ので、Gnus はこれを利用することにしました。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.15.1 X-Face

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 プログラムを使います。外部プログラムとして は netpbmlibgr-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-stylesx-face-file の項を加えれば良いでしょ う (see section 投稿様式)。さもなけば、外に出すメッセージに X-Face ヘッ ダーを簡単に挿入できるようにするために Gnus が提供する、いくつかの便利な 関数と変数を利用することができます。これらの機能のためには、前述 の ImageMagick、netpbm または他の画像を変換するパッケージ (何が必要かは、 下記の変数群の値によります) も必要です。

gnus-random-x-facegnus-x-face-directory にあるすべて の ‘pbm’ ファイルをくまなく探してランダムに一つを選び取り、シェルコ マンド gnus-convert-pbm-to-x-face-command を使ってそれ を X-Face の形式に変換します。‘pbm’ ファイルは 48×48 画素の大きさ でなければなりません。それは X-Face ヘッダーのデータを文字列で返します。

gnus-insert-random-x-face-headergnus-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] [ ? ]

9.15.2 Face

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] [ ? ]

9.15.3 スマイリー

スマイリー 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] [ ? ]

9.15.4 Picons

それで…、あなたはこのニュースリーダーをさらにもっと遅くしたいってわけで すね! これはそうするのにぴったりな方法です。さらにこれは、あなたがニュー スを読んでいるんだということを、あなたの肩越しに見つめている人に印象づけ るための素晴らしい方法でもあります。

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] [ ? ]

9.15.5 Gravatars

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] [ ? ]

9.15.6 さまざまな XEmacs 変数

gnus-xmas-glyph-directory

これは Gnus が絵を探す場所です。Gnus は通常このディレクトリーを自動検出 しますが、もし標準的でないディレクトリー構造を持っている場合は、これを手 動で設定することができます。

gnus-xmas-modeline-glyph

すべての Gnus のモード行で表示される画像。これはディフォルトではちいさな ヌー (gnu) の頭です。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.15.6.1 ツールバー

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] [ ? ]

9.16 ファジーな一致

Gnus はスコア付け、スレッドの形成、およびスレッドの比較などを行なうとき に、Subject 行のファジーな合致 fuzzy matching を提供します。

正規表現による合致とは違って、ファジーな合致はとってもファジーです。あま りにもファジーすぎて、何がファジーであるかという定義さえ無いし、実装も何 度も変更されています。

基本的に、これは比較の前に行から邪魔物を取り除こうとします。‘Re: ’、 挿入句の印、および空白文字等々が文字列から除去され、その結果を比較します。 これはほとんどの場合妥当な結果をもたらします—たとえニュースリーダーの 仮面をかぶった文字列切り刻み機で生成された文字列が差し出されても、です。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.17 spam メールの裏をかく

ここ最近の USENET では、宣伝のハゲタカどもが彼らの詐欺や製品を押し付ける ための電子メールアドレスを探そうとして、気違いのようにニュース上をうろつ いて grep しまくっています。これに対する反動として、多くの人々が無意味な アドレスを From 行に入れはじめるようになってしまいました。私はこ れは逆効果を招くと思います—あなたが書いたことに対する返信として人々が 正当なメールを送ることを面倒にさせるだけでなく、誰が書いたものなのかを分 かりづらくします。こんな書き換えは、結局は押し付け宣伝メールそれ自身より も大きな脅威となるかもしれません。

私にとっての spam メールの最大の問題は、嘘の口実で入ってくるからです。私 が g を押すと、Gnus は十通の新着メールがありますと陽気に私に教えて くれます。私は「おおっ、わーい! 僕って幸せ!」と言ってメールグループを選 択します。しかしそこには、二つのネズミ講と、七つの広告 (「最新! 奇跡の育 毛トニック、ふさふさでつやつやの髪をあなたのつま先(※)に!」) と、悔い改 め神を信じよ、という一つのメールがあるだけなのです。

これは迷惑千万です。あなたがそれに関してできることがあります。

訳注※: ホビット族用の育毛トニック。たぶん。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.17.1 Spam の問題

初めに spam の背景から。

あなたが電子メールを使っているならば、spam (専門用語としては Unsolicited Commercial E-mail—望まれない商用電子メール—の頭文 字 UCE) のことはよく知っているでしょう。簡単に言えばそれは紙の メールに比べて電子メールの配送がとても安くつくために存在し、非常に小さな 割合の人々が UCE に応答するだけで広告主に利益をもたらすのです。皮肉なこ とに最も一般的な spam の一つは、さらに spam を助長するための電子メールア ドレスのデータベースを提供します。Spam の送信者はふつ う spammers と呼ばれますが、verminscumsociopaths および 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] [ ? ]

9.17.2 Spam 退治の基礎

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] [ ? ]

9.17.3 SpamAssassin, Vipul’s Razor, DCC, etc

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-bodyt に設定する必要がありま す (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] [ ? ]

9.17.4 Hashcash

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] [ ? ]

9.18 Spam パッケージ

Spam パッケージは spam を検出して濾過するために集結された機構を Gnus に 提供します。それは新着メールを濾過し、spam か ham かに応じてメッセージを 処理します。(Ham は spam ではないメッセージを示すために、このマニュ アルを通して使われる名前です。)


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.18.1 Spam パッケージ序説

Spam パッケージがどのように働くかを理解するために、必ずこの章を読んでく ださい。読み飛ばし、速読、または斜め読みしてはいけません。

spam.el シーケンスのイベントの章をちゃんと読みましょう。 Spam パッケージの拡張 を参照してください。

Spam パッケージを使うには、必ず 最初 に spam-initialize 関数を実行させてください:

 
(spam-initialize)

これは spam.el を自動読み込み (autoload) して、Spam パッケージに その仕事をさせるために必要な諸機能が使えるようにします。Spam パッケージ を利用するために、いくつかのグループパラメーターと変数を設定しなければな りません。それらは以下で説明します。Spam パッケージを制御するすべての変 数は、‘spam’ カスタマイズグループで見つかるでしょう。

Spam パッケージと Gnus には二つの「接点」があります。それは新着メール が spam かどうかを検査するときと、グループを抜け出るときです。

新着メールが spam かどうかの検査は、やって来たメールを分割するときか、グ ループに入るときのどちらかで行なわれます。

最初のやり方、つまりやって来たメールを分割するときに検査をするのは、新着 メールが単一のスプールファイルに入れられ る nnmlnnimap のようなメールバックエンドに適しています。 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 として処理されるようにするために、あなた自身 がそれに印を付けても良いでしょう。

$
M-d
M s x
S x

現在の記事に 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-registryt に設定してくだ さい。See section Spam パッケージの設定例.

普通 spam グループは gnus-spam-process-destinations を無視します。 しかし spam-move-spam-nonspam-groups-onlynil に設定す ると、spam-process-destination パラメーターに従っ て spam は spam グループの外へ移動させられます。

最後に Spam パッケージが行なうことは、spam 記事に期限切れ消去の印を付け ることです。普通それは正しい行ないです。

これらのすべてがわけがわからなくても、心配は要りません (訳注: でも訳文が 正確ではないかもしれないので、変だと思ったら原文を見てね :-p)。すぐにそ れは神経インターフェース上に Lisp で小話を書くように自然なことになりま す… え゛ごめん、それにはまだ 50年早いですね。ただ私たちを信頼して ください。それは捨てたものではありません。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.18.2 やって来るメールの濾過

やって来るメールを濾過するために 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-bogofilterspam-check-ifile およ び spam-check-stat を使う場合は、さらに変 数 nnimap-split-download-bodyt に設定しなければなりま せん。これらの 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-headersspam-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-use-regex-headers で検出された
        ;; spam は ‘regex-spam’ へ。
        (: spam-split "regex-spam" 'spam-use-regex-headers)
        (any "ding" "ding")
        ;; spam-split で検出された他のすべての spam は
        ;; spam-split-group へ。
        (: spam-split)
        ;; ディフォルトのメールボックス。
        "mail")

これは、あなたの特別な必要に応じた特定の spam-split 検査を起動し、 それらの検査の結果で特定の spam グループを指し示します。すべてのメールに 対して、すべての spam 検査を行なう必要はありません。これが良いもう一つの 理由は、分割規則を設定してあるメーリングリスト宛てのメッセージに対して、 資源集約的なブラックホール・チェックを実行する必要がないということです。 さらに、nnmail の分割のために nnimap のものとは異なる spam 検査のやり方 を設定することもできるでしょう。気が狂うー。

使用するどんな spam バックエンドにも spam-use-* 変数を設定するべ きです。そのわけは、‘spam.el’ を読み込むときに、どん な spam-use-xyz 変数を設定したかによって、何らかの条件付きの読み 込みが行なわれるからです。See section Spam バックエンド.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.18.3 グループにおける spam の検出

グループに入ったときに spam を検出するためには、そのグループ の spam-autodetectspam-autodetect-methods グループパラ メーターを設定してください。これらは通常とおり G cG p で 行なうことができます (see section グループパラメーター)。

使用するどんな spam バックエンドにも spam-use-* 変数を設定するべ きです。そのわけは、‘spam.el’ を読み込むときに、どん な spam-use-xyz 変数を設定したかによって、何らかの条件付きの読み 込みが行なわれるからです。

ディフォルトでは、まだ読まれたことがない記事だけが spam かどうかを検査さ れます。spam-autodetect-recheck-messagest に設定するこ とによって、グループにあるすべての記事の再検査を Gnus に強制することがで きます。

Spam の検査に spam-autodetect の手段を使う場合は、異なるグループ で違う spam 検出手段を指定することができます。例えば ‘ding’ グルー プは自動検出の手段として spam-use-BBDB を持つことができる一方で、 ‘suspect’ グループでは spam-use-blacklist およ び spam-use-bogofilter の手段を使うことができます。 spam-split と違って検査の 順序 を制御できませんが、これは たぶん重要ではありません。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.18.4 Spam と Ham プロセッサー

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-contentsgnus-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 グループパラメーターを調 整するべきです。

Variable: ham-marks

このグループまたはトピックパラメーターを ham であると解釈したい印のリス トに設定することができます。ディフォルトでは、消去 (deleted)、既 読 (read)、削除 (killed)、kill ファイルにあるもの (kill-filed) および低 いスコア (low-score、既読だけれども spam ではないと考える) 印のリストで す。Ham 印のリストに可視 (tick) 印を含めることが役立つこともあります。未 読印を ham 印にすることは、通常それが分類されていないことを表すので、勧 められません。しかし、あなたがそれを行なうことはできるし、私たちに不満は ありません。

Variable: spam-marks

このグループまたはトピックパラメーターを 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.elgnus-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] [ ? ]

9.18.5 Spam パッケージの設定例

Ted の設定

From Ted Zlatanov <tzz@lifelogs.com>.

 
;; gnus-registry-split-fancy-with-parent と spam の自動検出のため。
;; 詳細は ‘gnus-registry.el’ を参照。
(gnus-registry-initialize)
(spam-initialize)

(setq
 spam-log-to-registry t ;; Spam の自動検出のため。
 spam-use-BBDB t
 spam-use-regex-headers t ;; X-Spam-Flag (SpamAssassin) を捕まえる。
 ;; 名前に ‘spam’ を含むすべてのグループには spam 記事がある。
 gnus-spam-newsgroup-contents '(("spam"
                                 gnus-group-spam-classification-spam))
 ;; これらの docstring を参照。
 spam-move-spam-nonspam-groups-only nil
 spam-mark-only-unseen-as-spam t
 spam-mark-ham-unread-before-move-from-spam-group t
 ;; あなたの設定に追加する前に、これが何をするか理解せよ!
 ;; nnimap 用にたぶん nnimap-split-methods を設定する必要あり。
 ;; マニュアル参照。
 nnimap-split-fancy '(|
                      ;; References を親まで辿ってそれらのグループ
                      ;; を入れる。
                      (: gnus-registry-split-fancy-with-parent)
                      ;; これはサーバー側の SpamAssassin タグを捕ま
                      ;; える。
                      (: spam-split 'spam-use-regex-headers)
                      (any "ding" "ding")
                      ;; Spam 記事はディフォルトで ‘spam’ に行く
                      ;; ことに注意。
                      (: spam-split)
                      ;; ディフォルトのメールボックス。
                      "mail"))

;; G p で設定した私のパラメーター。

;; すべての nnml グループと、‘nnimap+mail.lifelogs.com:train’ と
;; nnimap+mail.lifelogs.com:spam’ を除いたすべての nnimap グループ
;; のためのパラメーター:
;; それは手動で検出したはずなので、どの spam も nnimap のトレーニン
;; ググループに送り込む。

((spam-process-destination . "nnimap+mail.lifelogs.com:train"))

;; すべての NNTP グループのためのパラメーター:
;; Spam を blacklist で、ham を BBDB で自動検出。
((spam-autodetect-methods spam-use-blacklist spam-use-BBDB)
;; すべての spam をトレーニンググループに送る。
 (spam-process-destination . "nnimap+mail.lifelogs.com:train"))

;; 私が spam を自動検出させたい、ほんのいくつかの NNTP グループ
;; のためのパラメーター:
((spam-autodetect . t))

;; 私の nnimap ‘nnimap+mail.lifelogs.com:spam’ グループ (これは
;; spam グループ) のためのパラメーター:

((spam-contents gnus-group-spam-classification-spam)

 ;; どんな spam も私が ham 印を付けなければ
 ;; nnimap+mail.lifelogs.com:train’ に送り込まれる。(前述の
 ;; gnus-spam-newsgroup-contents の設定により、すべての
 ;; まだ読まれたことが無いメッセージを読むとそうなる。)

 (spam-process-destination "nnimap+mail.lifelogs.com:train")

 ;; どんな ham も私の ‘nnimap+mail.lifelogs.com:mail’ フォルダー
 ;; に送り込まれるが、私の ‘nnimap+mail.lifelogs.com:trainham
 ;; フォルダーにもトレーニングのために送り込む。

 (ham-process-destination "nnimap+mail.lifelogs.com:mail"
                          "nnimap+mail.lifelogs.com:trainham")
 ;; このグループでは ‘!’ 印が付いているものだけが ham。
 (ham-marks
  (gnus-ticked-mark))
 ;; グループを抜けるときに blacklist に送信者を覚えさせる---これは
 ;; 明らかに不要で、単に私の鬱憤を晴らすためにある。
 (spam-process (gnus-group-spam-exit-processor-blacklist)))

;; その後 IMAP サーバー上で、私は SpamAssassin が spam を
;; 認識するトレーニングのために ‘train’ グループを、ham を
;; 認識するトレーニングのために ‘trainham’ グループを使う。
;; でも Gnus はそういうことはやってくれない。

サーバー上の IMAP サーバーで、統計的な濾過器と 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))

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.elX-Report-Spam ヘッダー を検査させなければなりません。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.18.6 Spam バックエンド

Spam パッケージは spam を検出するための様々なバックエンドを提供します。 それぞれのバックエンドでは、spam を検出する手段の組 (see section やって来るメールの濾過, see section グループにおける spam の検出) と spam および ham プ ロセッサーの対が定義されています (see section Spam と Ham プロセッサー)。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.18.6.1 ブラックリストとホワイトリスト

Variable: spam-use-blacklist

入ってくるメールを分割するときにブラックリストを使いたい場合は、この変数 を t に設定してください。送信者がブラックリストに載っているメッセー ジは spam-split-group に送られます。これは、送信者が spammer であ ることが定義されているメールに対してだけ動作する、明示的な濾過器です。

Variable: spam-use-whitelist

入ってくるメールを分割するときにホワイトリストを使いたい場合は、この変数 を t に設定してください。送信者がホワイトリストに載っていないメッ セージは、次の spam-split 規則 (による検査工程) に送られます。これは、ホ ワイトリストに載っていない誰かのメッセージは spam とも ham とも見なされ ないことを意味する、明示的な濾過器です。

Variable: spam-use-whitelist-exclusive

送信者がホワイトリストに載っていないすべてのメッセージが spam だと見なさ れることを意味する暗黙の濾過器としてホワイトリストを使いたい場合は、この 変数を t にしてください。注意して使ってください。

Variable: gnus-group-spam-exit-processor-blacklist

このシンボルを、グループパラメーターのカスタマイズによってグループ の spam-process パラメーターに加えるか、また は gnus-spam-process-newsgroups 変数に加えてください。このシンボ ルがグループの spam-process パラメーターに加えられると、spam 印が 付いた記事の送信者がブラックリストに追加されます。

警告

旧式の gnus-group-spam-exit-processor-blacklist の代わり に (spam spam-use-blacklist) を使うことを推奨します。すべて同等に 動作することは保証されます。

Variable: gnus-group-ham-exit-processor-whitelist

このシンボルを、グループパラメーターのカスタマイズによってグループ の 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-whitelistspam-blacklist 変数でカスタマイズ することができます。ホワイトリストとブラックリストのファイルは、ディフォ ルトでは spam-directory のディレクトリーにあり、それぞ れ ‘whitelist’ と ‘blacklist’ という名前が付けられます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.18.6.2 BBDB ホワイトリスト

Variable: spam-use-BBDB

spam-use-whitelist (see section ブラックリストとホワイトリスト) に似ていま すが、ホワイトリストのアドレスの源として BBDB を使います。正規表現はあり ません。spam-use-BBDB をちゃんと動作させるには BBDB を読み込まな ければ (load しなければ) なりません。その送信者が BBDB に載っていないメッ セージは、次の spam-split 規則 (による検査工程) に送られます。これは、 BBDB に載っていない誰かのメッセージは spam とも ham とも見なされないこと を意味する、明示的な濾過器です。

Variable: spam-use-BBDB-exclusive

送信者が BBDB に載っていないすべてのメッセージが spam だと見なされること を意味する暗黙の濾過器として BBDB を使いたい場合は、この変数 を t にしてください。注意して使ってください。BBDB に載っている送 信者だけが通行を許され、他のすべては spammers として分類されます。

spam.el に関する限りは、spam-use-BBDB の別名とし て spam-use-BBDB-exclusive を使うことができますが、それは別のバッ クエンドではありません。spam-use-BBDB-exclusivet に設 定すれば、BBDB による分割はすべて排他的になります。

Variable: gnus-group-ham-exit-processor-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] [ ? ]

9.18.6.3 Gmane Spam 報告

Variable: gnus-group-spam-exit-processor-report-gmane

グループパラメーターか変数 gnus-spam-process-newsgroups をカスタ マイズして、このシンボルをグループの spam-process パラメーターに 加えてください。これが加えられると、spam 印が付いた記事のグループ が HTTP 経由で Gmane の管理者に報告されます。

Gmane は http://gmane.org で見つけることができます。

警告

旧式の gnus-group-spam-exit-processor-report-gmane の代わり に (spam spam-use-gmane) を使うことを推奨します。すべて同等に動作 することは保証されます。

Variable: spam-report-gmane-use-article-number

この変数はディフォルトで t です。例えばあなた自身がニュースサーバー を運営しているなどの理由によって、ローカルな記事番号が Gmane の記事番号 と合わない場合は、nil に設定してください。 spam-report-gmane-use-article-numbernil であると、 spam-report.el はその番号を記事のヘッダーから取得します。

Variable: spam-report-user-mail-address

Gmane への spam の報告に付加される User-Agent に現れるメールアドレスです。 これは、誤った報告が行なわれたときに、Gmane の管理者があなたに連絡できる ようにするためのものです。ディフォルトは user-mail-address です。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.18.6.4 非-spam Hashcash 印

Variable: spam-use-hashcash

spam-use-whitelist (see section ブラックリストとホワイトリスト) に似ていま すが、送信者のアドレスの代わりに、潔白なメッセージの証しとし て hashcash の印 (tokens) を使います。Hashcash 印が無いメッセージは次 の spam-分割 (spam-split) 規則 (による検査工程) に送られます。これ は hashcash 印が見当たらないメッセージは spam とも ham とも見なされない ことを意味する、明示的な濾過器です。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.18.6.5 ブラックホール

Variable: spam-use-blackholes

このオプションはディフォルトで無効になっています。このオプションをセット すると、Gnus にブラックホール型の分散 spam 処理システム (例えば DCC) を 調べさせることができます。変数 spam-blackhole-servers は、Gnus が 意見を求めるブラックホール・サーバーのリストを持ちます。現在のリストはか なり広範囲に渡っていますが、もし時代遅れなサーバーを含んでいたら必ず私た ちに知らせるようにしてください。

ブラックホール・チェックは ‘dig.el’ パッケージを使います。しか し spam-use-dignil に設定すれば、より良い性能のため に ‘dns.el’ を代わりに使うことを spam.el に指示することがで きます。現状では spam-use-dignil に設定することは、い く人かの利用者が使えないかもしれないので、それが可能な性能改善であるにも かかわらず推奨されません。しかし、それが動くかどうかを確かめることはでき ます。

Variable: spam-blackhole-servers

ブラックホール・チェックのために意見を求めるサーバーのリストです。

Variable: spam-blackhole-good-server-regex

ブラックホール・サーバーのリストと照合されてはならない IP の正規表現です。 nil に設定されると無効になります。

Variable: spam-use-dig

dns.el’ パッケージの代わりに ‘dig.el’ パッケージを使います。 ディフォルトの設定である t が推奨されます。

ブラックホール・チェックは入って来るメールに対してだけ行なわれます。ブラッ クホールに spam または ham プロセッサーはありません。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.18.6.6 正規表現によるヘッダーの合致検査

Variable: spam-use-regex-headers

このオプションはディフォルトで無効になっています。このオプションをセット すると、Gnus に正規表現のリストとメッセージヘッダーを照合させることがで きます。変数 spam-regex-headers-spam およ び spam-regex-headers-ham が正規表現のリストを持ちます。メッセー ジが spam か ham かどうかをそれぞれの変数を使って決めるために、Gnus はメッ セージヘッダーを検査します。

Variable: spam-regex-headers-spam

メッセージヘッダーの中で一致した時に、それが spam であることを断定するた めの正規表現のリストです。

Variable: spam-regex-headers-ham

メッセージヘッダーの中で一致した時に、それが ham であることを断定するた めの正規表現のリストです。

正規表現によるヘッダーの検査は、入ってきたメールに対してだけ行なわれます。 正規表現のために特有な spam または ham プロセッサーはありません。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.18.6.7 Bogofilter

Variable: spam-use-bogofilter

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 を使う場合は、これを有効にしてはいけ ません。

M s t
S t

Bogofilter の spam 度スコアを得ます (spam-bogofilter-score)。

Variable: spam-use-bogofilter-headers

メッセージヘッダーだけを調べるために Eric Raymond の迅速 な Bogofilter を spam-split に使用したい場合は、この変数をセット してください。これは spam-use-bogofilter と同じように動作しますが、 あらかじめ X-Bogosity ヘッダーがメッセージに存在しなければなりま せん。通常これは procmail の技法か、何かそれに似たもので行なうことになる でしょう。Bogofilter のインストールに関する文書を調べてください。

spam-use-bogofilter を使う場合は、これを有効にしてはいけません。

Variable: gnus-group-spam-exit-processor-bogofilter

このシンボルを、グループパラメーターのカスタマイズによってグループ の spam-process パラメーターに加えるか、また は gnus-spam-process-newsgroups 変数に加えてください。このシンボ ルがグループの spam-process パラメーターに加えられると、spam 印が 付いた記事が bogofilter の spam データベースに加えらます。

警告

旧式の gnus-group-spam-exit-processor-bogofilter の代わり に (spam spam-use-bogofilter) を使うことを推奨します。すべて同等 に動作することは保証されます。

Variable: gnus-group-ham-exit-processor-bogofilter

このシンボルを、グループパラメーターのカスタマイズによってグループ の spam-process パラメーターに加えるか、また は gnus-spam-process-newsgroups 変数に加えてください。このシンボ ルがグループの spam-process パラメーターに加えられると、ham 印が 付いた ham グループの記事が非-spam 記事用の Bogofilter データベー スに追加されます。

警告

旧式の gnus-group-ham-exit-processor-bogofilter の代わり に (ham spam-use-bogofilter) を使うことを推奨します。すべて同等に 動作することは保証されます。

Variable: spam-bogofilter-database-directory

これは 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] [ ? ]

9.18.6.8 SpamAssassin back end

Variable: spam-use-spamassassin

spam-split に SpamAssassin を使いたい場合は、この変数をセットして ください。

SpamAssassin は、規則と分析のセット (ベイジアンフィルタを含む) に基づい て、それぞれの記事のスコアを裁定します。ベイジアンフィルタは、spam 記事 に ‘$’ 印を関連させることによって訓練することができます。Spam のス コアは、概略モードで S t コマンドを使うことによって見ることができ ます。

この変数をセットすると、それぞれの記事は spam-split が呼ばれると きに SpamAssassin によって処理されます。メールが SpamAssassin で処理され るようになっていて、SpamAssassin ヘッダーだけを使いたいのならば、代わり に spam-use-spamassassin-headers をセットしてください。

spam-use-spamassassin-headers を使う場合、これを有効にしてはいけ ません。

Variable: spam-use-spamassassin-headers

メールが SpamAssassin で処理されるようになっている場合に、 SpamAssassin ヘッダーに基づいて spam-split に分割を行なわせたいの ならば、この変数をセットしてください。

spam-use-spamassassin を使う場合、これを有効にしてはいけません。

Variable: spam-spamassassin-program

この変数は 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] [ ? ]

9.18.6.9 ifile による spam の濾過

Variable: spam-use-ifile

Bogofilter に似た統計分析器であ る ifilespam-split に使いたい場合は、この変数を有効 にしてください。

Variable: spam-ifile-all-categories

spam-use-ifile に、単なる spam/非-spam ではなくて ifile のすべて の区分 (カテゴリー) を与えてもらいたいならば、この変数を有効にしてくださ い。これを使う場合は、その文献に書かれているように ifile をトレーニング しておかなければなりません。

Variable: spam-ifile-spam-category

ifile に関する限り、これは spam メッセージのカテゴリーです。実際に使われ る文字列は無関係ですが、たぶんあなたは ‘spam’ のディフォルト値を残 しておきたいでしょう。

Variable: spam-ifile-database

これは ifile データベースのファイル名です。ディフォルトでは定義されてい ないので、ifile はそれ自身のディフォルトのデータベース名を使います。

ifile のメール分類器は、意図と目的の点で Bogofilter に似ています。 Spam と ham のプロセッサーが提供され、ifile が使われるべきであること を spam-split に示すための spam-use-ifile 変数があります。この機 能を検査するために ifile のバージョン 1.2.1 が使われました。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.18.6.10 Spam 統計濾過

このバックエンドは、統計に基づいた濾過を行なう Spam 統計 Emacs Lisp パッ ケージを使います (see section Spam 統計パッケージ)。これを使う前に、あな たの Spam 統計辞書を初期化するための、いくつかの追加の処理を行なう必要が あるでしょう。See section spam-統計 (spam-stat) 辞書を作る.

Variable: spam-use-stat
Variable: gnus-group-spam-exit-processor-stat

このシンボルを、グループパラメーターのカスタマイズによってグループ の spam-process パラメーターに加えるか、また は gnus-spam-process-newsgroups 変数に加えてください。このシンボ ルがグループの spam-process パラメーターに加えられると、spam 印が 付いた記事が spam 記事用の spam-stat データベースに追加されます。

警告

旧式の gnus-group-spam-exit-processor-stat の代わり に (spam spam-use-stat) を使うことを推奨します。すべて同等に動作 することは保証されます。

Variable: gnus-group-ham-exit-processor-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] [ ? ]

9.18.6.11 Gnus で SpamOracle を使うには

気軽に 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-spamoraclet にして、 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"))
Variable: spam-use-spamoracle

Gnus に SpamOracle を使って spam の濾過をさせたい場合に t にして ください。

Variable: spam-spamoracle-binary

Gnus は利用者の PATH で見つかった ‘spamoracle’ という SpamOracle の バイナリーを使います。これにはカスタマイズ可能な変 数 spam-spamoracle-binary を使います。

Variable: spam-spamoracle-database

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 パッケージ.

Variable: gnus-group-spam-exit-processor-spamoracle

このシンボルを、グループパラメーターのカスタマイズによってグループ の spam-process パラメーターに加えるか、また は gnus-spam-process-newsgroups 変数に加えてください。このシンボ ルがグループの spam-process パラメーターに加えられると、spam 印が 付いた記事が spam のサンプルとして SpamOracle に送られます。

警告

旧式の gnus-group-spam-exit-processor-spamoracle の代わり に (spam spam-use-spamoracle) を使うことを推奨します。すべて同等 に動作することは保証されます。

Variable: gnus-group-ham-exit-processor-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] [ ? ]

9.18.7 Spam パッケージの拡張

Blackbox という新しいバックエンドを追加したいとしましょう。入ってくるメー ルを濾過するために以下のものを用意してください:

  1. コード
     
    (defvar spam-use-blackbox nil
      "Blackbox を使うときは t にする。")
    

    Blackbox が入ってくるメールを検査できるのであれば、 spam-check-blackbox を書いてください。

    Blackbox が spam と ham を登録または登録解除できるのであれば、手始め に bogofilter の登録/解除ルーチンを使って、またはもっと Blackbox にふさ わしい他の登録/解除ルーチンを使っ て spam-blackbox-register-routine およ び spam-blackbox-unregister-routine を書いてください。

  2. 関数

    spam-check-blackbox 関数は、他の習慣に倣っ て ‘nil’ か spam-split-group を返さなければなりません。あな たに何ができるかの例として、既存の spam-check-* 関数を参照してく ださい。また、あなたがそうでない理由を完全に理解していないならば、テンプ レートに齧り付いてください。

Spam と ham メッセージを処理するために、以下のものを用意してください:

  1. コード

    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) グループだけに適用される。")
    
  2. Gnus のパラメーター

    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 関数を 使ってください。利用できる関数は次の通りです。

    1. spam-install-backend-alias

      この関数は、オリジナルのバックエンドのようにすべてを行なうバックエンドの ために、別名を使うことができるようにするだけです。今のところ、これ は spam-use-BBDB-exclusivespam-use-BBDB のように働かせ るためだけに使われます。

    2. spam-install-nocheck-backend

      この関数は、検査する機能は無いけれども ham または spam を登録/解除するこ とができるバックエンドになります。spam-use-gmane がそのようなバッ クエンドです。

    3. spam-install-checkonly-backend

      この関数は、入ってくるメールが spam かどうかの検査だけを行なうことができ るバックエンドになります。それはメッセージを登録または登録解除することが できません。spam-use-blackholesspam-use-hashcash がそ のようなバックエンドです。

    4. spam-install-statistical-checkonly-backend

      この関数は、入ってくるメールの検査だけを行なうことができる、統計処理を行 なうバックエンド (検査のためにメッセージの本文全体を必要とします) になり ます。spam-use-regex-body がそのような濾過器です。

    5. spam-install-statistical-backend

      この関数は、入ってくるメールの検査と登録/解除ルーチンを持つ、統計処理を 行なうバックエンドになります。spam-use-bogofilter は、そのように 仕立てられています。

    6. spam-install-backend

      これは最も普通なバックエンドになります。それは検査とメッセージの 登録/解除を行なうことができ、統計処理の能力はありません。 spam-use-BBDB がそのようなバックエンドです。

    7. spam-install-mover-backend

      移動させる (mover) バックエンドは spam.el の内部で、概略バッファー を出るときにある明確なやり方で記事を移動させます。おそらくそのようなバッ クエンドを使うことは無いでしょう。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.18.8 Spam 統計パッケージ

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 ではないメールを集めたものです。そして、それらの二つの集合を 使って辞書を作り、それをセーブしてください。そして特に最後に、あなたの特 級分割の規則でこの辞書を使ってください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.18.8.1 spam-統計 (spam-stat) 辞書を作る

統計に基づいた spam 濾過を始めるには、前もって二つのメールの集合 (一方 は spam を、もう一方は spam ではないメールを集めたもの) に基づいた統計を 作らなければなりません。そしてそれらの統計は、後で利用するために辞書に格 納されます。それらの統計を意味のあるものにするために、両方の集合につき数 百通のメールが必要です。

今のところ Gnus は nnml バックエンドでだけ辞書の自動生成をサポートします。 nnml バックエンドは一通のメールにつき一つのファイルで、すべてのメールを 一つのディレクトリーに格納します。以下を使ってください:

Function: spam-stat-process-spam-directory

このディレクトリーにあるすべてのファイルについて spam の統計を生成します。 すべてのファイルは一つの spam メールとして扱われます。

Function: spam-stat-process-non-spam-directory

このディレクトリーにあるすべてのファイルについて非-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 キャッシュとしてのエージェント.

Variable: spam-stat

この変数はすべての統計のハッシュテーブル—辞書と言っているもの—を保持 します。このハッシュテーブルは、双方の集合のすべての単語について spam お よび spam ではないメールにおける出現頻度を表すベクトルを格納します。

統計を最初から作り直したいときは、辞書をリセットする必要があります。

Function: spam-stat-reset

すべての統計を削除して spam-stat ハッシュテーブルをリセットします。

行なったら辞書をセーブしなければなりません。辞書はかなり大きくなるかもし れません。辞書を追加更新しない場合 (言い換えると、例えば毎月一回作り直す 場合)、頻繁に現れないか、または spam か spam ではないメールのどちらに属 するかがはっきりしないすべての単語を削除することによって、辞書のサイズを 小さくすることができます。

Function: spam-stat-reduce-size

辞書のサイズを小さくします。これは辞書を追加更新したくない場合だけ使って ください。

Function: spam-stat-save

辞書をセーブします。

Variable: spam-stat-file

辞書の格納に使うファイル名です。ディフォルトは ‘~/.spam-stat.el’ で す。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.18.8.2 spam-統計 (spam-stat) を使ってメールを分割する

この章は 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"))
Variable: spam-stat-split-fancy-spam-group

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] [ ? ]

9.18.8.3 spam-統計 (spam-stat) 辞書への低階層インターフェース

spam-stat を使うための主なインターフェースは以下の関数群です:

Function: spam-stat-buffer-is-spam

Spam であると考えられる新着メールがあるバッファーで呼ばれます。まだ処理 されていない新着メールに対して使ってください。

Function: spam-stat-buffer-is-no-spam

Spam ではないと考えられる新着メールがあるバッファーで呼ばれます。まだ処 理されていない新着メールに対して使ってください。

Function: spam-stat-buffer-change-to-spam

それが spam ではなくて通常のものだとはもはや考えられないメールがあるバッ ファーで呼ばれます。すでに spam ではないものとして処理されてしまったメー ルの地位の変更に使ってください。

Function: spam-stat-buffer-change-to-non-spam

それが通常のものではなくて spam だとはもはや考えられないメールがあるバッ ファーで呼ばれます。すでに spam であるものとして処理されてしまったメール の地位の変更に使ってください。

Function: spam-stat-save

ハッシュテーブルをファイルにセーブします。変数 spam-stat-file で 設定されたファイル名が使われます。

Function: spam-stat-load

ハッシュテーブルをファイルから読み込みます。変 数 spam-stat-file で設定されたファイル名が使われます。

Function: spam-stat-score-word

単語の spam スコアを返します。

Function: spam-stat-score-buffer

バッファーの spam スコアを返します。

Function: spam-stat-split-fancy

特級メール分割のためにこの関数を使ってください。 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] [ ? ]

9.19 Gnus レジストリー

Gnus レジストリーは記事の Message-ID を元にすべてのバックエンドを横断的 に追跡するためのパッケージです。これが提供するいくつもある素敵な事をすれ ば、Gnus ユーザーは近所の人たちから羨ましがられ、床屋がただで散髪してく れるようになり、世界で起きる様々な問題の専門家になることができるでしょう。 かなり素晴らしい機能が満載です。うーむ、全部がそうではないかもしれません けれどね。

じきに詳しく説明しますが、まずはそれらの機能の早見表を掲げておきましょう。 あなたの注意力が持続しないかもしれないので… いや、何でもないです。

  1. 記事をそれらの親に分割する

    議論を同じグループで続けられるようにする機能です。Message-ID に加えて表 題と送信者を使うことができます。これにはいくつかのやり方があります。

  2. ID に基づいてメッセージを照会する

    gnus-summary-refer-parent-article のようなコマンドは、照会する記 事に行くするために、そのメッセージがあるグループにかかわらず、レジストリー を利用することができます。

  3. 独自のフラグとキーワードを記録する

    レジストリーは記事のための独自のフラグとキーワードを記録することができま す。これで例えば記事に “To-Do” の印を付けることができ、記事が nnimap、 nnml、nnmaildir などのどのバックエンドにあっても、そのフラグは立ち続けま す。

  4. 任意のデータを記録する

    レジストリーは記事のためのどんなデータでも記憶しておくことができます。簡 単な Elisp インターフェースですが。組み込まれている逆引き機能を有効にし ておくと、特定の条件に合うすべての記事をすばやく見つけることができます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.19.1 設定

良くしたことに 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 ユーザーでカスタマイズすることが生きがいです。もっ と下さい」。では諸設定の一般的な説明に参りましょう。

Variable: gnus-registry-unfollowed-groups

gnus-registry-split-fancy-with-parent が追跡しないグループです。 それらは、でもレジストリーに記録されます。これは正規表現のリストです。ディ フォルトでは、名前が “delayed”、“drafts”、“queue” また は “INBOX” で終わっている、nnmairix バックエンドに属している、 あるいは “archive” という語を含んでいるどんなグループも追跡しません。

Variable: gnus-registry-max-entries

レジストリーが保持する項目の数 (整数または無制限を意味す る nil) です。

Variable: gnus-registry-max-pruned-entries

除去した後でレジストリーが保持する最大のエントリーの数 (整数または無制限 を意味する nil) です。

Variable: gnus-registry-cache-file

Gnus の操作を通じてレジストリーが記録されるファイルです。ディフォルトで ファイル名は ‘.newsrc.eld’ と同じディレクトリーに置かれ る ‘.gnus.registry.eioio’ です。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.19.2 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] [ ? ]

9.19.3 親への特級分割

簡単に言うと、これでフォローアップの電子メールを、それがあるべき場所に置 くことができます。

すべての記事は固有の 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")

さらに、以下の変数をカスタマイズする必要があるでしょう。

Variable: gnus-registry-track-extra

これはシンボルのリストです。カスタマイズのインターフェースから変更するの には、それがベストです。ディフォルトは (subject sender) で、それ でおそらく動作するでしょう。メールの流通量が大きくて人々が同じグループに とどまっていないと、煩わしくなる場合があります。

Variable: gnus-registry-split-strategy

これはシンボルです。カスタマイズのインターフェースから変更するのには、そ れがベストです。ディフォルトは nil ですが、合致の多数決または最初 に見つかったものに基づいて送信者 (sender) または表題 (subject) で分割す るには majority または first に設定する必要があるでしょう。 私は majority が最も良いことを見つけました。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.19.4 独自のフラグとキーワードの記録

レジストリーを使って、独自のフラグとキーワードをメッセージごとに設定する ことができます。Gnus->Registry Marks メニューか M M x ショートカッ ト・キーを使ってください。ここで x は印の名前の最初の文字です。

Variable: gnus-registry-marks

レジストリーが扱うことができる独自の印のリストです。もしそうしたいなら、 ディフォルトのリストを変更することができます。それを行なうのならば、それ らが効果を及ぼす前に Emacs を終了させる必要があります (レジストリーを抜 き取って (unload して) から再読み込み (reload) するか、または必要であろ う特別なマクロを実行することもできますが、たぶんそんな面倒なことは望まな いでしょう)。カスタマイズのインターフェースを使って、そのリストを変更し てください。

ディフォルトでこのリストには ImportantWorkPersonalTo-Do それに Later の印があります。それら すべてに、Important のための M M i のように、最初の文字を使 うショートカット・キーが用意されています。

Function: gnus-registry-mark-article

独自のレジストリーの印を記事に付加するために使う関数です。補完のために、 利用できる印を提示します。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.19.5 任意のデータの記録

レジストリーには任意のデータを記録するために、Message-ID をキーとして使 う簡単なインターフェースがあります (データは保存するためにできる限り一つ のリストに変換されます)。

Function: gnus-registry-set-id-key (id key value)

id を持つメッセージのために key について value を格 納します。

Function: gnus-registry-get-id-key (id key)

id を持つメッセージのために key についてのデータを取得しま す。

Variable: gnus-registry-extra-entries-precious

特別なエントリーが貴重であるなら、たとえその Message-ID の記事のグループ が無くても、またレジストリーのサイズの制限に達しても、それらが存在してい るとレジストリーはすべてのエントリーを永久に保持します。ディフォルトでは これはまさに (marks) なので、独自のレジストリーの印は貴重であると 見なされます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.20 他のモードとの相互作用


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.20.1 Dired

gnus-dired-minor-mode は dired バッファーで使えるいくつかの便利な 機能を提供します。これは次の式で有効になります:

 
(add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode)
C-c C-m C-a

Dired で印を付けたものを添付ファイルとして送信しま す (gnus-dired-attach)。どの message バッファーに添付するかを尋ね られます。

C-c C-m C-l

適切な mailcap 項目に従ってファイルを開きま す (gnus-dired-find-file-mailcap)。接頭引数を付けると、ファイルを 新しいバッファーで (単に) 開きます。

C-c C-m C-p

mailcap 項目に従ってファイルを印刷します (gnus-dired-print)。印刷 コマンドが無い場合は PostScript 画像として印刷します。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.21 いろいろのいろいろ

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-verbosegnus-verbose-backends で制御さ れて出力されるメッセージに、時刻 (タイムスタンプ) を付加するかどうかを制 御します。ディフォルト値は時刻を付加しないことを意味する nil です。 log だったら ‘*Messages*’ バッファー (XEmacs で は ‘ *Message-Log*’ バッファー) に入るメッセージだけに時刻を付加し ます。もし nil でも log でもなければ、ログに入るメッセージ だけでなく、エコーエリアに表示されるものにも時刻を付加します。

nnheader-max-head-length

バックエンドが記事の連続したヘッダー部を読んでいるときは、できる限り少な い量だけを読もうとします。この変数 (ディフォルト 8192) は、バックエンド がヘッダーと本文の間の区切り行の捜索を諦める前に読み込む絶対最大長を指定 します。この変数が nil であれば、読み込み上限はありません。も し t であれば、バックエンドは記事を部分部分で読み込もうとはせず、 記事全体を読み込みます。これは ange-ftpefs のあるバー ジョンで意味を持ちます。

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-rendererw3m に設定されていると きだけ効果があります。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.