よく尋ねられる質問
=========

要約
--

これは新しい Gnus のよく尋ねられる質問のリストです。Web ブラウザーがあれば http://my.gnus.org/FAQ/ にある公式なハイパーテキスト版を読むことができます。Docbook のソースは http://sourceforge.net (http://sourceforge.net/projects/gnus/) から手に入れることができます。

機能に関することや提案は FAQ discussion メーリングリスト に送ってください。このメーリングリストは qconfirm (http://smarden.org/qconfirm/index.html) によって、ごみメールから守られています。参加者からの投稿は自動的に通過するでしょう。さらに空のメールを faq-discuss-subscribe@my.gnus.org に送るか、ここ (http://mail1.kens.com/cgi-bin/ezmlm-browse?command=monthbythread%26list=faq-discuss) を閲覧することによっても、このメーリングリストを講読することができます (残念ながら現在は壊れています)。

変更履歴
----

  * Gnus 5.10 のリリースと No Gnus の開発の開始を反映して FAQ を更新しました。

序
-

これは Gnus のよく尋ねられる質問のリストです。

Gnus は Emacs の要素として実装された Usenet ニュースリーダーおよび電子メールのユーザーエージェントです。それはほぼこの十年間何らかの形で存在しており、その期間の多くにおいて Emacs の標準要素として配布されてきました。 Gnus 5 は最新の (そして最も偉大な) 作品です。オリジナルの版は GNUS と言い、梅田政信さんが書きました。1994年の秋が忍び寄る頃、退屈していたラルス・マッグヌ・イングブリグットスン (Lars Magne Ingebrigtsen) は Gnus を書き直そうと決心しました。

その最大の強みは、極めてカスタマイズに適しているという事実にあります。このことを始めて目にすると引いてしまうかもしれませんが、それを利用する準備ができるまでは、複雑なもののほとんどは無視することができます。そこそこの量の (いろんなメーリングリストに配信される) 電子メールがやって来るのならば、流通量が多いメーリングリストを読みたいけれども遅れずについていくことができないのならば、流通量が多いニュースグループを読んでいるのならば、あるいは単に退屈しているのならば、Gnus はあなたが望むものです。

この FAQ は 2002年3月まで Justin Sheehy によって維持されていました。彼は、それ以前にすばらしい仕事をしてくれた Steve Baur と Per Abrahamsen に感謝を表明しています。私たちも同じことをしましょう - ありがとう Justin!

Web ブラウザーがあれば http://my.gnus.org/FAQ/ にある公式なハイパーテキスト版を読むことができます。この版は、ユトレヒト大学、オックスフォード、Smart Pages、オハイオ州立大学に保存されている非公式なハイパーテキスト版や他の FAQ のアーカイブに比べて、はるかに良いものです。別のフォーマットでそれを手に入れるための情報が欲しいなら、以下にある質問集を見てください。

ここにある情報は、Gnus 開発メーリングリストの援助でコンパイルされました。どんなエラーあるいはミスプリントも my.gnus.org チームが犯した誤りです。すみません。

訳注: そしてどんな誤訳の責任も gnus-doc-ja チームにあります。

インストールに関する FAQ
--------------

質問 1.1
......

Gnus の最新版は何ですか?

回答
..

ジャーン: Gnus 5.10 がリリースされました。熱いうちに召し上がれ!

バージョン番号の歩みがいささか小さいのに反して、Gnus 5.10 には見逃せない何トンもの新しい機能があります。現在のリリース (5.13) は、少なくとも 5.8 系のリリースの最新版と同じくらい安定なはずです。

質問 1.2
......

5.10 では何が新しいですか?

回答
..

第一に Gnus tarball の先頭のディレクトリーにある GNUS-NEWS ファイルに目を通すべきです。そこでは最も重要な変更が羅列されています。ここでは特に重要/興味深いものの短いリストを挙げるに留めます:

  * Gnus エージェントの大幅な書き直し。ディフォルトで有効になっています。

  * 見苦しく形成された記事を洗濯するための多くの機能。

  * Spam 除け機能。

  * Message-utils が Gnus に含まれました。

     (訳注: Holger Schauer さんが書いた message-utils.el の諸機能が message.el に移入されました。)

  * 概略行のための新しい書法仕様。例えば %B は複雑な trn 様式のスレッド木 (tree) を指定する書法仕様です。

質問 1.3
......

Gnus はどこで、どうやって取得することができますか?

回答
..

Gnus は Emacs や XEmacs のリリースとは別に、独自にリリースされます。そのため Emacs に同梱されている版や XEmacs パッケージにある版は、最新ではないかもしれません (例えば Emacs 20 に同梱されている Gnus 5.9 は、使用期限が切れています)。リリースされた最新版の Gnus は、http://www.gnus.org/dist/gnus.tar.gz から、または匿名 ftp で ftp://ftp.gnus.org/pub/gnus/gnus.tar.gz から手に入れることができます。

質問 1.4
......

tarball で何をすれば良いですか?

回答
..

tar xvzf gnus.tar.gz でアーカイブを展開して、ありふれた

./configure; make; make install の手順を実行してください。

     MS-Windows では http://www.cygwin.com から Cygwin の環境も取得してください。それによって上述のことを行なうこと、またはある梱包器 (packer) (例えば http://www.winace.com にある Winace) で tarball を開梱すること、そして tarball に含まれている Gnus をインストールするためのバッチファイル make.bat を使うことができるようになります。

Gnus をシステム領域にインストールしたくない (またはその権限が与えられていない) ならば、ホームディレクトリーにインストールすることもできます。その場合は ~/.xemacs/init.el ファイルか ~/.emacs ファイルに以下の行を加えてください。

     (add-to-list 'load-path "/path/to/gnus/lisp")
     (if (featurep 'xemacs)
         (add-to-list 'Info-directory-list "/path/to/gnus/texi/")
       (add-to-list 'Info-default-directory-list "/path/to/gnus/texi/"))

この行より前に、どんな Gnus に関係するものも確実に無いようにしてください。 MS Windows では "C:/path/to/lisp" のように書いてください (そう、"/" です)。

質問 1.5
......

ときどき目にする No Gnus と Oort Gnus って何ですか?

回答
..

Oort Gnus は Gnus の開発版の名前で、2003年の秋に Gnus 5.10 になりました。 No Gnus は現行の開発版の名前で、Gnus 5.12 か Gnus 6 になるでしょう。(なぜ 5.11 ではないのかが不思議ですか?  奇数のバージョン番号は通常 Emacs に同梱される Gnus の版に使われるのです。)

質問 1.6
......

Emacs のどの版が必要ですか?

回答
..

Gnus 5.10 は Emacs 20.7 以上、または XEmacs 21.1 以上を必要とします。開発版の Gnus (No Gnus として知られているもの) は Emacs 21 か XEmacs 21.4 を必要とします。

質問 1.7
......

Gnus を Emacs と XEmacs の両方で走らせるには、どうすれば良いですか?

回答
..

バイトコンパイルされた Gnus の同じコピーを両者で使うことはできません。 Emacs では Emacs でコンパイルしたものを、XEmacs では XEmacs でコンパイルしたものを使ってください。

起動 / グループバッファー
--------------

質問 2.1
......

いつも Gnus を起動すると "Gnus auto-save file exists. Do you want to read it?" というメッセージを受け取るのですが、これは何を意味しているのですか?  また、どうやったら回避できますか?

回答
..

このメッセージが意味するのは、最後に Gnus を使ったときに適切に終了させなかったために、ディスクにその情報 (例えばどのメッセージを読んだかの) を書き込むことができなかったので、今、それらの情報を自動保存 (auto-save) ファイルから復活させるかどうかを尋ねられているということです。

このメッセージが発せられるのを回避するには、Gnus を終了させるときに単に Emacs を kill するのではなく、グループバッファーで q を使うようにしてください。

質問 2.2
......

Gnus は私がどのグループを講読するかを覚えてくれません。どうしてですか?

回答
..

Gnus を起動したときに、上記の質問と回答 (see [2.1]) で述べられているメッセージを受け取りませんでしたか?  これは同じ問題の別の症状なので、上記の回答を読んでください。

質問 2.3
......

グループバッファーの各行の形式を変更するには、どうしたら良いですか?

回答
..

変数 gnus-group-line-format の値を調整しなければなりません。そのやり方についてはマニュアル (see グループ行の仕様 (The Gnus Manual)) を見てください。このための例です (質問者の ~/.gnus.el ファイルからの推測です :-):

     (setq gnus-group-line-format "%P%M%S[%5t]%5y : %(%g%)\n")

質問 2.4
......

私のグループバッファーはちょっと混んでいるのですが、それらを楽に巡回できるように、カテゴリーごとにまとまるように並べ変える方法はありますか?

回答
..

Gnus はトピックモードを提供します。それによってグループをその中へ入れて並べ変えることができるようになります。えーとトピックを使うというのは、例えば Linux を扱うすべてのグループは linux というトピックに収め、音楽を扱うすべては music というトピックに収め、スコットランド音楽を扱うすべては scottish という music のサブトピックに収める、といったことです。

トピックモードに入るには、グループバッファーで単に t を叩いてください。すると T n を使って現在位置でトピックを作ったり、あるグループを T m を使って指定したトピックに移すことができます。さらなるコマンドについてはマニュアルかメニューを見てください。グループ行をより良く行下げ (indent) させるためには、gnus-group-line-format 変数の先頭に %P 書法仕様を含ませる必要があるでしょう。

質問 2.5
......

グループバッファーを手で並べ変えるにはどうしたら良いですか? トピック内のグループを並べ変えるにはどうしたら良いですか?

回答
..

移動させたいグループの上にポイントを移動して C-k を叩き、次にそのグループを移動させる目的の場所にポイントを移動して C-y を叩いてください。

メッセージの取得
--------

質問 3.1
......

今まさに Gnus をインストールして M-x gnus で起動したのですが、 "nntp (news) open error" としか言ってくれません。どうしたら良いですか?

回答
..

どこからニュースを取得すべきかを Gnus に教えてあげなければなりません。やり方については文献を読んでください。初めて起動するのであれば、次のようなものを ~/.gnus.el ファイルに書き込んでみてください:

     (setq gnus-select-method '(nntp "news.yourprovider.net"))
     (setq user-mail-address "you@yourprovider.net")
     (setq user-full-name "Your Name")

質問 3.2
......

Windows を使っているのですが ~/.gnus.el の意味がわかりません。

回答
..

~/ とは Gnus と Emacs が設定ファイルを探す場所であるホームディレクトリーのことです。でも、実はその意味を知らなくても構わないのです。 Emacs がわかっていれば十分ですから。:-)  C-x C-f ~/.gnus.el RET とタイプすれば (そう、Windows でもスラッシュでいいのです) Emacs は正しいファイルを開いてくれるでしょう (それが新規ファイルであるために中身が空っぽであることは、おおいにあり得るでしょう)。しかしちょっと待ってください。 Emacs が選ぶディレクトリーは、きっとあなたの希望通りにはならないので、正しいやり方でそれを行ないましょう。第一に、例えば c:\myhome のような適当なディレクトリーを (ディレクトリー名に空白を含めないで) 作ってください。そして、このディレクトリーを環境変数 HOME に設定しましょう。これを Win9x か Me で行なうには、autoexec.bat ファイルに以下の行を追加して、再起動してください。

     SET HOME=C:\myhome

NT, 2000 および XP では、システム・オプションを入力するために Winkey + Pause/Break を叩いて (もしそれが使えなかったら「コントロールパネル -> システム -> 詳細」を辿って) ください。そこで環境変数を設定できるでしょう。HOME という名前で値が C:\myhome のものを作ってください。再起動は不要です。

では、Emacs に C-x C-f ~/.gnus.el RET C-x C-s を指示して、~/.gnus.el ファイルを作りましょう。

質問 3.3
......

ニュースサーバーが認証を要求します。ディスクにユーザー名とパスワードを保存しておくには、どうすれば良いですか?

回答
..

次のように、それぞれのサーバーに関する行を含んだ ~/.authinfo ファイルを作ってください。

     machine news.yourprovider.net login YourUserName password YourPassword

OS が対応しているならば、そのファイルを他人が読めないようにしておきましょう。Unix ではシェル上で次のコマンドを実行してください。

     chmod 600 ~/.authinfo

質問 3.4
......

Gnus はうまく起動したようなのですが、グループを講読する方法が見つけられません。

回答
..

そのグループの名前がわかっているのなら、グループバッファーで U name.of.group RET を使ってください (タブ補完を使え、ルーク (訳注: オビ=ワン・ケノービの声で))。あるいはグループバッファーで ^ を使いましょう。これはあなたをサーバーバッファーへ連れて行きます。その場合は、目的のグループがあるサーバーの上にポイント (カーソル) を置いて RET を叩き、読みたいグループにポイントを移動してから u でそのグループを講読しましょう。

質問 3.5
......

Gnus がすべてのグループを表示してくれません / このサーバーへの投稿が許可されません。どうしてですか?

回答
..

プロバイダーのいくつかは匿名での接続を制限していて、認証してからでないと完全なアクセスを許しません。Gnus に認証のための情報 (authinfo) を送出させるには、~/.authinfo ファイルの該当するサーバーの行の最後に

     force yes

を追加してください。

質問 3.6
......

複数のサーバーからニュースを取り込みたいのですが、それは可能ですか?

回答
..

もちろん。変数 gnus-secondary-select-methods に、もっと多くの記事の供給元を設定することができます。以下のようなものを ~/.gnus.el ファイルに追加してください:

     (add-to-list 'gnus-secondary-select-methods
                  '(nntp "news.yourSecondProvider.net"))
     (add-to-list 'gnus-secondary-select-methods
                  '(nntp "news.yourThirdProvider.net"))

質問 3.7
......

それから、ローカル・スプール・ファイルからニュースを取り込むことは可能ですか?

回答
..

問題ありません。それは nnspool というもう一つの選択方法です。こんなふうに設定してください:

     (add-to-list 'gnus-secondary-select-methods '(nnspool ""))

あるいは NNTP を第一ニュースソースとして使う必要が無いのであれば、こうしてください:

     (setq gnus-select-method '(nnspool ""))

これで Gnus は /usr/spool/news にあるスプール・ファイルを探します。何か違うことをやりたいのならば、上記の行を次のようなものに変更してください:

     (add-to-list 'gnus-secondary-select-methods
                  '(nnspool ""
                            (nnspool-directory "/usr/local/myspoolddir")))

これは、このサーバーだけのために、スプールが存在するディレクトリーを設定します。さらに記事を投稿するために使うプログラムなどを設定する必要があるかもしれません。そういう場合にどうしたら良いかについては、Gnus のマニュアルを参照してください。

質問 3.8
......

ニュースを読むのうまくいきましたが、Gnus でメールも読めるようにしたいのです。どうすれば良いですか?

回答
..

それは少しばかり難しいです。使うことができるメールソースはいっぱいあるし、メールを格納する方法はたくさんあるし、送信するための方法も様々なので。最もありふれているのは、次の二つの事例のようなものでしょう:

 1. POP3 サーバーからメールを読み、SMTP サーバーに直接メールを送信します。

 2. fetchmail のようなプログラムでメールを取り込んで、Gnus が読むことになっているディレクトリーに格納します。外に行くメールは Sendmail, Postfix または他の MTA によって送出されます。

ときには、これらを併用する必要さえあります。

しかし最初に行なうことは、どの方法でメールを格納するか、Gnus の用語で言うと、どのバックエンドを使うかを Gnus に指示することです。Gnus は多くの異なるバックエンドをサポートしますが、最も一般的に使われているのは nnml です。それは一通のメールを一つのファイルに格納し、そのため極めて高速です。でも、あなたが使っているファイルシステムがたくさんの小さなファイルを扱う上で問題があるのならば、一つのグループのすべてのメールを一つのファイルに収める方法を使う必要があるかもしれません。おそらくそういう場合の選択肢が nnfolder バックエンドです。

nnml を使うには、以下を ~/.gnus.el ファイルに加えてください:

     (add-to-list 'gnus-secondary-select-methods '(nnml ""))

nnfolder を使いたいのならば、あなたの想像した通り、こうすれば良いでしょう:

     (add-to-list 'gnus-secondary-select-methods '(nnfolder ""))

次に、メールをどこから取得するかを Gnus に伝えなければなりません。それが POP3 サーバーであるのなら、このように設定してください:

     (add-to-list 'mail-sources '(pop :server "pop.YourProvider.net"
                                      :user "yourUserName"
                                      :password "yourPassword"))

もしそこにパスワードを書いておくのなら、他人が ~/.gnus.el ファイルを読めないようにしておいてください。メールをローカルマシンの伝統的なスプールファイルから読みたい場合は、以下のように設定してください:

     (add-to-list 'mail-sources '(file :path "/path/to/spool/file"))

もしそれが Postfix, Qmail または (そういうふうに設定されている) fetchmail によって使われる、一通/一ファイル形式の Maildir であるのならば、こんなふうにしましょう:

     (add-to-list 'mail-sources '(maildir :path "/path/to/Maildir/"
                                          :subdirs ("cur" "new")))

そして最後に、メールを一つのディレクトリーにある複数のファイルから読むようにしたいのであれば (例えば procmail がすでに分割してあるという理由で)、設定は以下のようになります:

     (add-to-list 'mail-sources
                  '(directory :path "/path/to/procmail-dir/"
                              :suffix ".prcml"))

ここで :suffix に指定した ".prcml" は、Gnus に拡張子が .prcml のファイルだけを使うことを指示するためのものです。

さあ、後はどうやってメールを送信するかを Gnus に教えるだけです。メールの送信に sendmail を使いたければ (または、あなたのシステムの MTA が何であれ sendmail の役を演じるのならば)、何もしなくても良いのです。でも、もし SMTP サーバーにメールを送りたいのだったら、以下のようなものが ~/.gnus.el ファイルに書かれている必要があります:

     (setq send-mail-function 'smtpmail-send-it)
     (setq message-send-mail-function 'smtpmail-send-it)
     (setq smtpmail-default-smtp-server "smtp.yourProvider.net")

質問 3.9
......

それから、IMAP でメールを読めるようにするには、どうすれば良いですか?

回答
..

Gnus で IMAP を使うには二つの方法があります。最初のは IMAP を POP3 のように使うもので、 Gnus は IMAP サーバーからメールを取得してディスクに格納します。これをやりたいのなら (本当にそんなことをしたい人はいないでしょうけれど)、以下の設定を ~/.gnus.el ファイルに加えてください:

     (add-to-list 'mail-sources '(imap :server "mail.mycorp.com"
                                       :user "username"
                                       :pass "password"
                                       :stream network
                                       :authentication login
                                       :mailbox "INBOX"
                                       :fetchflag "\\Seen"))

:stream および/または :authentication の項はいじる必要があるかもしれません。使うことができる値については Gnus マニュアル (see メールソース指示子 (The Gnus Manual)) を参照してください。

IMAP をそれが意図された方法で使いたい場合は、違うやり方に従う必要があります。そうするには選択方法に nnimap を加え、そこでサーバーに関する情報を与えてください:

     (add-to-list 'gnus-secondary-select-methods
                  '(nnimap "Give the baby a name"
                           (nnimap-address "imap.yourProvider.net")
                           (nnimap-port 143)
                           (nnimap-list-pattern "archive.*")))

さらに Gnus が正しいやり方を推測できない場合には、サーバーに認証してもらう方法を指定しなければならないでしょう。詳しい情報はマニュアル (see IMAP (The Gnus Manual)) を参照してください。

質問 3.10
.......

職場で MS Exchange サーバーの一つを使っているのですが、Gnus を使ってそこからメールを読むことはできますか?

回答
..

サーバーに IMAP という新しい運動靴を一足はかせてくれるように、管理人にお願いしてください。そして上記の説明に従って、必要なことを行なってください。

質問 3.11
.......

POP3 でメールを取得するサーバーで、メールを消さないように Gnus に指示することはできますか?

回答
..

そもそも POP3 はそういうふうに動作することが意図されていません。それが可能なら、メッセージをサーバー上に残すためには IMAP プロトコルを使うべきです。それでもなお、そういう機能を必要とする状況があるかもしれませんが、悲しいかな、Gnus 自体はそうするための既設の機能を持っていないのです。

しかしここは Gnus 村ですから、あなたの希望を達成する見込みが無いわけではありません。最も簡単な方法は、メールのコピーを取り込んで、それらをディスクに格納してくれる外部プログラムを手に入れることです。そうすれば Gnus はそこから読むことができます。例えば Unix システムでは fetchmail がそれです。MS Windows では、優れたニュースとメールのサーバーである Hamster を使うことができます。

別の解は、Gnus が POP3 サーバーからメールを取得する手段を、メールをサーバーに残すことができるもので置き換えることでしょう。XEmacs を使っているのであれば mail-lib パッケージを手に入れてください。それは拡張された pop3.el を含んでいます。ファイルの中身を見てください。それを使うように Gnus に指示するやり方と、取得したメールを削除しない方法の説明が書かれています。GNU Emacs を使っている場合は、同じことを行なうことができる epop3.el を探してください (そのファイルの元の出どころを知っている人は、私 (訳注: Simon Josefsson さんだと思います、たぶん) にメールを送ってください)。さらに Gnus に外部プログラム (例えば fetchmail) を使ってメールを取り寄せるようにさせることもできます。やり方は Gnus マニュアル (see メールソース指示子 (The Gnus Manual)) を参照してください。

     訳注: T-gnus に含まれている pop3.el は、XEmacs のやり方をさらに発展させて、完全に Gnus とともに動作するようになっています (した)。

メッセージを読む
--------

質問 4.1
......

グループに入ると、以前に読んだメッセージが全部なくなってしまっています。もう一度読むには、どうしたら良いですか?

回答
..

グループバッファーにおいて、そのグループの上にポイントが置かれている状態で RET を使うと、未読と可視記事の印 (ticked) が付いたメッセージだけが現れます。存在するすべてのメッセージが表示されるようにするには、代わりに C-u RET を使ってください。もし最新の、例えば 300通だけが所望ならば、C-u 300 RET を使いましょう。

スレッド表示を有効にしていると、未読のメッセージだけを表示するのはじれったいかもしれません。スレッドがちぎれてしまうことを防止するのに十分な量の古い記事を取り込むには、以下の設定を追加すれば良いでしょう:

     (setq gnus-fetch-old-headers 'some)

some を t に替えると、すべての記事を表示するようになります (警告: どちらの設定もグループに入ったときに取り込むデータ量を増加させ、グループに入る処理を遅くしてしまいます)。

すでに Gnus 5.10 を使っているならば、最後の N 通のメッセージを取り込むために、概略バッファーで /o N 命令を使うことができます。この機能は 5.8.8 にはありません。

すべての古いメッセージは要らないけれども、今まさに読んでいるメッセージの親を辿りたいならば ^ 命令を使ってください。今まさに読んでいるメッセージが属しているスレッドのすべての記事を表示したい場合は、 A T 命令があなたの望むものです。

質問 4.2
......

大事なメッセージを、すでに読んだことがあっても、グループに入ったときはいつでも見えるように Gnus に指示するには、どうすれば良いですか?

回答
..

大事なメッセージには可視記事の印 (ticked) を付けることができます。それには、概略バッファーでポイントがその記事を指しているときに u を叩いてください。可視記事の印を消す命令は d (これは可視記事の印を消してから未読の印を付けます) または M c (そのメッセージに付いているすべての印を消します) です。

質問 4.3
......

メッセージのヘッダーを見るにはどうしたら良いですか?

回答
..

t 命令を使うとすべてのヘッダーを表示し、もう一度使うとそれらを隠します。

質問 4.4
......

整形されていない生のメッセージを見るには、どうすれば良いですか?

回答
..

C-u g 命令を使うと生のメッセージを表示し、g で通常の表示に戻ります。

質問 4.5
......

記事バッファーの先頭に Gnus がディフォルトで表示するヘッダーを変更するには、どうしたら良いですか?

回答
..

変数 gnus-visible-headers がどのヘッダーを表示するかを制御します。その値は正規表現で、それに合致するヘッダー行が表示されます。したがって、著者、表題、日付、そしてもし存在する場合は Followup-To と MUA / NUA を表示したい場合には、~/.gnus.el ファイルで以下の設定を行なってください:

     (setq gnus-visible-headers
           '("^From" "^Subject" "^Date" "^Newsgroups" "^Followup-To"
             "^User-Agent" "^X-Newsreader" "^X-Mailer"))

質問 4.6
......

HTML メールを描画するのではなく、テキストのパートがある場合には、そちらの方を Gnus に表示して欲しいです。どうすれば良いですか?

回答
..

~/.gnus.el ファイルで以下の設定を行なってください:

     (add-to-list 'mm-discouraged-alternatives "text/html")
     (add-to-list 'mm-discouraged-alternatives "text/richtext")

HTML のパートと同じ内容のテキストのパートが無い場合でさえも HTML のパートを描画して欲しくないのであれば、以下の設定を追加してください:

     (setq mm-automatic-display (remove "text/html" mm-automatic-display))

質問 4.7
......

HTML メールを w3 以外のブラウザーを使って描画させることはできますか?

回答
..

Gnus 5.10 またはより新しいものを使う場合だけですが、w3, w3m, links, lynx および html2text の中から選ぶことができ、どれを使うかは変数 mm-text-html-renderer で指定することができます。したがって links で HTML メールを描画したいときは、こうしてください:

     (setq mm-text-html-renderer 'links)

質問 4.8
......

見苦しい体裁のメールをもっと読みやすくするための何かがありますか?

回答
..

Gnus は入ってきたメールを「洗濯」するために複数の関数を提供します。それらはメニューの Article->Washing 項目を辿ることによって見つけることができるでしょう。最も興味深いものを挙げてみましょう:

W w (Wrap long lines)
     長い行を折り畳みます。

W r (Decode ROT13)
     ROT13 をデコードします。

W Y f (Outlook Deuglify)
     Outlook を見苦しくなくさせます。これは、マイクロソフトの製品を使っている多くのユーザーが送ってくる間の抜けた引用付き返信 (訳注: 折り畳まれた長い引用行の二行目以降に引用符が前置されないなど) を修繕します。

     他の見苦しくなくさせる機能については W Y C-h を使うかメニューを眺めてください。Outlook Deuglify は Gnus 5.10 以上で使うことができます。

質問 4.9
......

特定の著者が送信したものや、表題に特定の語が含まれているメッセージを、自動的に無視する方法はありますか?  また、より興味深いものを何らかの方法で強調表示させることはできますか?

回答
..

あなたに必要なのはスコア付けです。スコア付けと言うのは、それぞれのメッセージに整数の値を割り付けるための規則を定義することです。値に基づいて概略バッファーでメッセージを強調表示したり (それが +2000 といった高い値だったら)、自動的に既読にしたり (その値が例えば -800 のような低い値だったら)、あるいは他のいくつかの作用を行なったりします。

メッセージにスコアの値を割り付ける規則を設定するための、基本的な三つのやり方があります。

 1. 最初の最も簡単なやり方は、今まさに読んでいる記事に基づいて規則を設定することです。いつもたわごとを書いてよこすやつからのメッセージを読んで、今後はそいつからのメッセージを無視しようと決心したならば、L を叩いてスコアを下げる規則を設定してください。

     すると Gnus は、スコアを下げる基準をどれにすれば良いかを尋ねてくるでしょう。? を二回叩くと、すべての候補を見ることができますが、ここで選択すべきなのは著者 (From ヘッダー) を意味する a です。

     次に Gnus はどの種類の合致を使うべきかを尋ねてくるので、厳密な合致のための e を叩くか、あるいは文字の一部への合致を求める s を叩いてから、後ですべてを削除してください。どんな電子メールアドレスであっても、それを持つすべての著者のスコアを下げるために、その名前が使われます。

     さらに、その規則をいつ適用するべきか、またどれくらいの時間続けるべきかを Gnus に伝える必要があります。例えば p では、その規則を今すぐ適用して、それを永久に持続させます。

     スコアを下げるのではなくて上げたいのであれば、L の代わりに I を使ってください。

 2. 規則を手で設定することもできます。そうするには概略バッファーで V f 命令を使ってください。するとスコアファイルの名前を尋ねられるでしょう。一つのグループだけで有効なのは name.of.group.SCORE で、すべてのグループに対して有効なのが all.SCORE です。厳密な構文については Gnus のマニュアルを参照してください。それは一つの大きなリストで、その要素もまた多くのリストです。その後者の単位リストの第一要素はスコアの対象であるヘッダーで、残りは、何に合致するか、いくらのスコアを割り当てるか、規則を期限切れ消去するのはいつか、そしてどうやって合致させるかを示すもう一つのリストです。私にとても興味を持ったならば、例えば以下のようなものを all.SCORE ファイルに加えてみてください:

          (("references" ("hschmi22.userfqdn.rz-online.de" 500 nil s))
           ("message-id" ("hschmi22.userfqdn.rz-online.de" 999 nil s)))

     これは私が書いたメッセージのスコアに 999 を加えて、それに対する (たぶん間接的な) 回答のメッセージのスコアに 500 を加えるでしょう。もちろん分別のある人は誰も、こんなことはしないでしょうが。:-)

 3. 三番目の選択肢は適応スコア付けです。これは、Gnus があなたを観察して、あなたが何に興味を持って何に幻滅するかを見つけ出し、それらを反映した規則を設定してくれるものです。流通量の多いグループを読むときに、適応スコア付けは大きな助けになるでしょう。適応スコア付けをやってみたいならば、 ~/.gnus.el ファイルで以下の宣言を行なってください:

          (setq gnus-use-adaptive-scoring t)

質問 4.10
.......

いくつかの (例えばメールの) グループで、スレッド表示をさせなくすることはできますか?  あるいは、いくつかのグループに固有の変数を設定することができますか?

回答
..

グループバッファーにいるときに、そのグループにポイントを移動してから G c を叩いてください。すると、そのグループのためのオプションを設定することができるバッファーが開きます。そして、そのバッファーのおしまいの方で、そのグループでローカルに変数を設定するための項目を見つけることができるでしょう。スレッド表示をさせなくするには、変数名として gnus-show-threads を、値として nil を入力してください。作業を終えたら、そのバッファーの最初の方にある [done] ボタンを叩きましょう。

質問 4.11
.......

私が書いたメッセージとフォロー記事を、強調表示させることはできますか?

回答
..

「できますか?」なんて質問はやめてください。Gnus 村では答えはいつも yes なのですから。:-) これは三段階の作業になります。まず、それらの投稿のためのフェース (概略行がどんなふうに見えるかの仕様) を作りましょう。続いて、それらにいくばくかの特別なスコアを与えましょう。最後に、その新しいフェースを使うように Gnus に指示しましょう。それをどう行なうかの詳しい説明が my.gnus.org (http://my.gnus.org/node/view/224) にあります。

質問 4.12
.......

特にメールのグループで、Gnus がグループバッファーに表示するメッセージの合計の数が非常に大きいのです。これはバグですか?

回答
..

いいえ、これは Gnus の設計上の問題で、これを直すには Gnus のバックエンドの主要な部分を実装し直さなければなりません。Gnus は最大の記事番号から最小の記事番号を減算したものが合計の記事数であると解釈します。これは Usenet のグループでは OK なのですが、メールのグループでたくさんのメッセージを消去したり移動すると計算に失敗します。この病を治療するには C-u RET でそのグループに入り (この命令は Gnus にすべてのメッセージを持って来させます)、M P b ですべてのメッセージに印を付けてから、 B m name.of.group でメッセージを全部、それらが元あったグループに移動してください。この処理によってそれらは新しいメッセージ番号を持たせられて、合計の記事数は再び正しくなるでしょう (またもやそれらを消したり別のグループに移動するまでは)。

質問 4.13
.......

概略バッファーと記事バッファーの配置が気に入らないのですが、どうやったら変更できますか?  できるなら三面で表示させたいです。

回答
..

gnus-add-configuration 関数を呼ぶことによって、ウィンドウの配置を制御することができます。構文はいささか複雑ですが、マニュアルで非常に良く説明されています (see ウィンドウの配置 (The Gnus Manual))。いくつかのやさしい例を挙げてみましょう。

概略 25% 記事 75% というディフォルトの割合を、概略 35% 記事 65% の割合に変更します (記事のための 1.0 は、残った空き地を取るという意味です):

     (gnus-add-configuration
      '(article (vertical 1.0 (summary .35 point) (article 1.0))))

グループバッファーが左、概略バッファーが右上、記事バッファーが右下という三面配置です:

     (gnus-add-configuration
      '(article
        (horizontal 1.0
                    (vertical 25
                              (group 1.0))
                    (vertical 1.0
                              (summary 0.25 point)
                              (article 1.0)))))
     (gnus-add-configuration
      '(summary
        (horizontal 1.0
                    (vertical 25
                              (group 1.0))
                    (vertical 1.0
                              (summary 1.0 point)))))

質問 4.14
.......

概略バッファーを見せるやり方が好きではありません。調整するには、どうすれば良いですか?

回答
..

変数 gnus-summary-line-format をいじくり回す必要があります。その値は著者、日付、表題などのようなものを表すシンボルの文字列です。使うことができる仕様のリストは see 概略バッファーの行 (The Gnus Manual) と、しばしば忘れられてしまう see 書法仕様変数 (The Gnus Manual) およびその下位の各章で見つかるはずです。そこでは書法仕様の概略を使うことができるようにしてくれる、カーソルの位置指定やタブ位置の指定のようなものを見つけることができるでしょう。残念ながら 5.8.8 ではタブ位置を固定させる機能が壊れています。

5.10 から、Gnus は非常にみごとな新しい書法仕様変数を提供しています。例えば %B はスレッド木を描き、また %&user-date は、どう表示するかが記事が発信されてからの経過時間に依存している日付を表示します。これらの両方を使っている例です:

     (setq gnus-summary-line-format
           ":%U%R %B %s %-60=|%4L |%-20,20f |%&user-date; \n")

結果はこんなふうになります:

     :O     Re: [Richard Stallman] rfc2047.el          |  13 |Lars Magne Ingebrigt |Sat 23:06
     :O     Re: Revival of the ding-patches list       |  13 |Lars Magne Ingebrigt |Sat 23:12
     :R  >  Re: Find correct list of articles for a gro|  25 |Lars Magne Ingebrigt |Sat 23:16
     :O  \->  ...                                      |  21 |Kai Grossjohann      | 0:01
     :R  >  Re: Cry for help: deuglify.el - moving stuf|  28 |Lars Magne Ingebrigt |Sat 23:34
     :O  \->  ...                                      | 115 |Raymond Scholz       | 1:24
     :O    \->  ...                                    |  19 |Lars Magne Ingebrigt |15:33
     :O     Slow mailing list                          |  13 |Lars Magne Ingebrigt |Sat 23:49
     :O     Re: `@' mark not documented                |  13 |Lars Magne Ingebrigt |Sat 23:50
     :R  >  Re: Gnus still doesn't count messages prope|  23 |Lars Magne Ingebrigt |Sat 23:57
     :O  \->  ...                                      |  18 |Kai Grossjohann      | 0:35
     :O    \->  ...                                    |  13 |Lars Magne Ingebrigt | 0:56

質問 4.15
.......

やってきたメールをいろいろなグループに振り分けるには、どうしたら良いですか?

回答
..

Gnus はメールを分割するための二つの手段として、やさしい nnmail-split-methods と、もっと強力な特級メール分割の機能を提供します。ここでは最初のものだけについて述べますが、後者についてはマニュアル (see 特級メール分割 (The Gnus Manual)) を参照してください。

nnmail-split-methods の値はリストで、それぞれの要素は分割の規則を表すリストです。それぞれの規則は「合致する記事が行くべきグループ」と「合致すべき正規表現」の形式を持っていて、最初に合致した規則が勝ちます。最後の規則は常に汎用の規則 (正規表現 .*) でなければなりません。それは他のどんな規則にも合致しない記事が行くべき場所を示します。もしまだフォルダーが無かったならば、それは記事がそこに着地するとすぐに作られるでしょう。ディフォルトでは、メールは規則に合致するすべてのグループに送られます。それを望まないならば (たぶん望まないでしょう)、以下のものを ~/.gnus.el ファイルに入れてください:

     (setq nnmail-crosspost nil)

たった一つの例は千の言葉を並べるよりも勝ります。そこで、ここでは私の nnmail-split-methods を紹介しましょう。私は、私が講読しているいくつかのメーリングリストから来るか、私を直接に目指して来たすべてのメールを濾過器に通すので、私が特別のグループの複写を送ることと、ディフォルトのグループは spam であることに注意してください。これらの規則は、私宛てに届いた spam のおよそ 80% を殺してくれます (電子メールアドレスは spammers がそれらを使用するのを防ぐために変更されます)。

     (setq
      nnmail-split-methods
      '(("duplicates" "^Gnus-Warning:.*duplicate")
        ("XEmacs-NT" "^\\(To:\\|CC:\\).*localpart@xemacs.invalid.*")
        ("Gnus-Tut" "^\\(To:\\|CC:\\).*localpart@socha.invalid.*")
        ("tcsh" "^\\(To:\\|CC:\\).*localpart@mx.gw.invalid.*")
        ("BAfH" "^\\(To:\\|CC:\\).*localpart@.*uni-muenchen.invalid.*")
        ("Hamster-src" "^\\(CC:\\|To:\\).*hamster-sourcen@yahoogroups.\\(de\\|com\\).*")
        ("Tagesschau" "^From: tagesschau <localpart@www.tagesschau.invalid>$")
        ("Replies" "^\\(CC:\\|To:\\).*localpart@Frank-Schmitt.invalid.*")
        ("EK" "^From:.*\\(localpart@privateprovider.invalid\\|localpart@workplace.invalid\\).*")
        ("Spam" "^Content-Type:.*\\(ks_c_5601-1987\\|EUC-KR\\|big5\\|iso-2022-jp\\).*")
        ("Spam" "^Subject:.*\\(This really work\\|XINGA\\|ADV:\\|XXX\\|adult\\|sex\\).*")
        ("Spam" "^Subject:.*\\(\=\?ks_c_5601-1987\?\\|\=\?euc-kr\?\\|\=\?big5\?\\).*")
        ("Spam" "^X-Mailer:\\(.*BulkMailer.*\\|.*MIME::Lite.*\\|\\)")
        ("Spam" "^X-Mailer:\\(.*CyberCreek Avalanche\\|.*http\:\/\/GetResponse\.com\\)")
        ("Spam" "^From:.*\\(verizon\.net\\|prontomail\.com\\|money\\|ConsumerDirect\\).*")
        ("Spam" "^Delivered-To: GMX delivery to spamtrap@gmx.invalid$")
        ("Spam" "^Received: from link2buy.com")
        ("Spam" "^CC: .*azzrael@t-online.invalid")
        ("Spam" "^X-Mailer-Version: 1.50 BETA")
        ("Uni" "^\\(CC:\\|To:\\).*localpart@uni-koblenz.invalid.*")
        ("Inbox" "^\\(CC:\\|To:\\).*\\(my\ name\\|address@one.invalid\\|adress@two.invalid\\)")
        ("Spam" "")))

メッセージの作成
--------

質問 5.1
......

メールを送信したりニュース記事を投稿するために知っている必要がある基本的なコマンドは何ですか?

回答
..

新しいメールの作成を始めるには、グループバッファーか概略バッファーのどちらかで m を叩いてください。ニュース記事を投稿する場合には、グループバッファーで a を叩いた後に手で Newsgroups ヘッダーに書き込むか、投稿するグループの概略バッファーで a を叩いてください。

メールで返信する場合、元の記事を引用しないか後で手作業で引用するつもりならば r を、引用文を最初から取り込んでしまうのならば R を使ってください。ニュースグループでフォロー記事を投稿する場合であれば f か F (r と R の関係に似ています) を使いましょう。

新たにヘッダーを挿入するならば --text follows this line-- の上に書いて、本文はその下に書いてください。書き上がったメッセージを送信するコマンドは C-c C-c で、後で仕上げるために drafts グループに保存するためのコマンドは C-c C-d です。後者は D e で再び編集することができます。

質問 5.2
......

メールを作成するとき、自動的に行を折り返すにはどうすれば良いですか?

回答
..

No Gnus の場合は自動で行を折り返す機能がディフォルトで ON になります。変数 message-fill-column を参照してください。

他の Gnus の版では、こんなものを ~/.gnus.el ファイルに入れてください:

     (unless (boundp 'message-fill-column)
       (add-hook 'message-mode-hook
                 (lambda ()
                   (setq fill-column 72)
                   (turn-on-auto-fill))))

いつもの通りに M-q を使うことによって、段落を再整形することができます。

質問 5.3
......

From, Organization, Reply-To などのヘッダーを自動生成したり、定型の署名 (signature) を自動的に挿入するには、どうしたら良いですか?

回答
..

他のやり方もありますが、これのためには投稿様式 (posting styles) を使うべきです (理由は後で書きます)。この例ならば、その構文が明確にわかるはずです:

     (setq gnus-posting-styles
           '((".*"
              (name "Frank Schmitt")
              (address "me@there.invalid")
              (organization "Hamme net, kren mer och nimmi")
              (signature-file "~/.signature")
              ("X-SampleHeader" "foobar")
              (eval (setq some-variable "Foo bar")))))

".*" という設定はディフォルトのものです ([5.4] 参照)。それ以降のリストの第一要素に使える値 (属性名) は signature, signature-file, organization, address, name または body です。属性名は文字列でも構いません。その場合、属性名はヘッダー名として使われ、その値は記事のヘッダーに挿入されます。ただし値が nil だったら、その名前のヘッダーは削除されます。

(eval (foo bar)) の形式を使うことも可能で、その場合 bar を引数に与えられて関数 foo が評価され、結果は捨てられます。

質問 5.4
......

投稿するグループによって異なる From ヘッダーや署名を自動挿入するには、どうすれば良いですか?

回答
..

これこそが投稿様式 (posting styles) の強みです。前の回答 (see [5.3]) では、すべてのグループのためのディフォルトを設定するために ".*" を使いました。これに "^gmane" のような正規表現を使うと、それ以降の設定を gmane ニュースグループの階層で投稿する記事だけに適用させることができます。代わりに ".*binaries" を使うと、名前などが binary という文字列を含んでいるグループに投稿する記事だけに、それらの設定が適用されます。

正規表現の代わりに関数を指定することもでき、それが評価されて真を返すときだけ、それに対応する設定が有効になります。これの興味深い二つの候補は、現在のグループがニュースグループだったら t を返す message-news-p と、それと対になる message-mail-p です。

すべての合致する様式が適用されることに注意してください。以下を例にすれば、 gmane.mail.spam.spamassassin.general に投稿すると ".*" で始まる設定が適用され、message-news-p 以下の設定も適用され、 "^gmane" で始まる設定、それに "^gmane\\.mail\\.spam\\.spamassassin\\.general$" 以下の設定のすべてが適用されるということです。このため、一般的な設定は先頭に置き、特定の条件を持つものは下の方に置くのが良いでしょう。

     (setq
      gnus-posting-styles
      '((".*" ;;default
         (name "Frank Schmitt")
         (organization "Hamme net, kren mer och nimmi")
         (signature-file "~/.signature"))
        ((message-news-p) ;;Usenet news?
         (address "mySpamTrap@Frank-Schmitt.invalid")
         (reply-to "hereRealRepliesOnlyPlease@Frank-Schmitt.invalid"))
        ((message-mail-p) ;;mail?
         (address "usedForMails@Frank-Schmitt.invalid"))
        ("^gmane" ;;this is mail, too in fact
         (address "usedForMails@Frank-Schmitt.invalid")
         (reply-to nil))
        ("^gmane\\.mail\\.spam\\.spamassassin\\.general$"
         (eval (set (make-local-variable 'message-sendmail-envelope-from)
                    "Azzrael@rz-online.de")))))

質問 5.5
......

スペルチェッカーはありますか?  できれば、書いたその場でチェックしてくれるものがあれば良いのですが。

回答
..

Emacs では単語の綴りをチェックするために ispell.el を使うことができます。したがって最初に行なうのは、外部プログラム ispell (http://fmg-www.cs.ucla.edu/fmg-members/geoff/ispell.html) または同 aspell (http://aspell.sourceforge.net/) を適当な path にインストールしておくことです。次に ispell.el (http://www.kdstevens.com/~stevens/ispell-page.html) と、書いたその場でスペルチェックをしてくれる flyspell.el (http://www-sop.inria.fr/mimosa/personnel/Manuel.Serrano/flyspell/flyspell.html) を用意してください。ispell.el は Emacs とともに配布されているだけではなく、XEmacs パッケージシステムによっても手に入れることができます。flyspell.el も Emacs に同梱されているのとともに、パッケージシステムを介して入手することができる XEmacs の text-modes パッケージの一部です。したがって、それらを個別にインストールする必要は無いはずです。

ispell.el は外部プログラム ispell を使うことを想定しています。aspell を選ぶなら、Emacs の設定ファイルで以下の宣言を行なってください (訳注: Emacs 22 以上では、ispell.el がそれらを自動判別します):

     (setq ispell-program-name "aspell")

送出するメッセージがスペルチェックされるようにしたいなら以下の行を

     (add-hook 'message-send-hook 'ispell-message)

単語を書いたその場でスペルチェックすることを好むなら次の行を

     (add-hook 'message-mode-hook (lambda () (flyspell-mode 1)))

~/.gnus.el ファイルに追加してください。

質問 5.6
......

投稿するグループに基づいて、辞書 (スペルチェッカーの) を切り替えることはできますか?

回答
..

はい、できます。こんなものを ~/.gnus.el ファイルに入れてください:

     (add-hook 'gnus-select-group-hook
               (lambda ()
                 (cond
                  ((string-match
                    "^de\\." (gnus-group-real-name gnus-newsgroup-name))
                   (ispell-change-dictionary "deutsch8"))
                  (t
                   (ispell-change-dictionary "english")))))

"^de\\." と "deutsch8" は、必要に応じて変更してください。

質問 5.7
......

全員の電子メールアドレスを思い出さなくても済むようにするための、アドレス帳のようなものはありますか?

回答
..

そのための非常に基本的な解は「メールの別名」(mail aliases) です。以下のように単純な別名の構文を使って、~/.mailrc ファイルにメールアドレスを登録しておくことができます:

     alias al	"Al <al@english-heritage.invalid>"

そうしておいて、メッセージバッファーの To: または Cc: 行で、別名に続いてスペースか句読点をタイプすることによって、Gnus に完全なアドレスを挿入してもらうことができます。詳細は Message マニュアル (see メールの別名 (The Message Manual)) を参照してください。

でも、あなたが本当に使いたいのは BBDB (the Insidious Big Brother Database) でしょう。XEmacs のパッケージシステムを使うか、 bbdb のホームページ (http://bbdb.sourceforge.net/) から入手してください。そして Gnus で BBDB を有効にするために、以下のものを ~/.gnus.el ファイルに書き込んでください:

     (require 'bbdb)
     (bbdb-initialize 'gnus 'message)

さて、いくつかの一般的な BBDB の設定が必要かもしれません。それらは ~/.emacs ファイルに置きましょう。例です:

     (require 'bbdb)
     ;; 北アメリカに住んでいるのでなければ、以下によって電話番号の
     ;; チェックをやめさせるべきです。
     (setq bbdb-north-american-phone-numbers-p nil)
     ;; あなたの電子メールアドレスを BBDB に教えましょう。
     (setq bbdb-user-mail-names
           (regexp-opt '("Your.Email@here.invalid"
                         "Your.other@mail.there.invalid")))
     ;; メールアドレスを補完するときに、候補をエンドレスで出します。
     ;; cycling while completing email addresses
     (setq bbdb-complete-name-allow-cycling t)
     ;; BBDB のバッファーをポップアップさせません。
     (setq bbdb-use-pop-up nil)

これで BBDB を使う準備ができたはずです。M-x bbdb RET RET で、すべての登録した項目を表示する BBDB のバッファーを開いてください。新たに登録するには c、検索には b、そして登録してある項目に新しいフィールドを加えるには C-o を使いましょう。送信者を BBDB に登録するには、概略バッファーのその記事の場所で単に : を叩くだけで、あなたの仕事は終りです。一方、新規にメールを作成しているときに TAB を叩くことによって、順繰りに現れる候補の中から受取人を選ぶことができます。

質問 5.8
......

記事バッファーの上の方で、ときどき小さな画像を目にします。あれは何ですか? また、どうしたら私も投稿するときに付けることができますか?

回答
..

あの画像は X-Face というものです。ヘッダー行で 48×48 画素の白黒画像がエンコードされています。それを送信する記事に含めたいなら、何かの画像を X-Face に変換する必要があります。そうするには、何らかの画像を加工するためのプログラム (例えば Gimp) に点火して、記事に含めたい画像のファイルを開き、必要な部分を切り抜いて、色の深度を 1-bit まで減らし、48×48 の大きさに縮小または拡大して、bitmap としてファイルに保存してください。次に compface パッケージを このサイト (ftp://ftp.cs.indiana.edu:/pub/faces/) から入手して、以下を実行することによって実際の X-Face を作りましょう:

     cat file.xbm | xbm2ikon | compface > file.face
     cat file.face | sed 's/\\/\\\\/g;s/\"/\\\"/g;' > file.face.quoted

compface を使うことができなくても、オンラインの X-Face 変換器が http://www.dairiki.org/xface/ にあります。MS Windows を使っているのならば、http://www.xs4all.nl/~walterln/winface/ から WinFace プログラムを取って来て使うこともできます。後は、送信する記事に X-Face を含めてくれるように Gnus に指示するだけです。それには ~/.gnus.el ファイルに以下のようなものを入れてください:

     (setq message-default-headers
           (with-temp-buffer
             (insert "X-Face: ")
             (insert-file-contents "~/.xface")
             (buffer-string)))

ただし Gnus 5.10 を使っているのであれば、単に次の項を

     (x-face-file "~/.xface")

gnus-posting-styles に加えるだけで済みます。

質問 5.9
......

ときどきニュースグループで、f の代わりにうっかり r を打ってしまいます。ニュースグループなのにもかかわらずメールで返信しようとしたときに、Gnus に警告してもらうことはできますか?

回答
..

もう Gnus 5.10 を使っているのであれば、これを ~/.gnus.el ファイルに入れてください:

     (setq gnus-confirm-mail-reply-to-news t)

まだ 5.8.8 や 5.9 を使っているのなら、代わりにこれをどうぞ:

     (eval-after-load "gnus-msg"
       '(unless (boundp 'gnus-confirm-mail-reply-to-news)
          (defadvice gnus-summary-reply (around reply-in-news activate)
            "Request confirmation when replying to news."
            (interactive)
            (when (or (not (gnus-news-group-p gnus-newsgroup-name))
                      (y-or-n-p "Really reply by mail to article author? "))
              ad-do-it))))

質問 5.10
.......

Gnus が sender ヘッダーを生成しないようにするには、どうしたら良いですか?

回答
..

Gnus 5.10 はディフォルトで sender ヘッダーを作らないのですけれどね。まだ古い Gnus を使っているのなら、~/.gnus.el ファイルでこれを試してください:

     (add-to-list 'message-syntax-checks '(sender . disabled))

質問 5.11
.......

送信したメールやニュースの控えをローカルに残しておきたいのですが、どうすれば良いですか?

回答
..

それを行なうためには変数 gnus-message-archive-group を設定しなければなりません。それには、控えを保存しておくグループの名前を与える文字列を設定することができます。あるいは以下の例のように、評価されるとグループ名を返す関数 (訳注: と言うよりは Lisp の式) を設定することもできます。

     (setq gnus-message-archive-group
           '((if (message-news-p)
                 "nnml:Send-News"
               "nnml:Send-Mail")))

質問 5.12
.......

Message-ID が不正だと言われてしまうのですが、それはなぜですか?  また、どうやって直したら良いですか?

回答
..

Message-ID は、送信したメッセージが、それがそれであることを確認するためのものです。それが、あるメッセージにとって固有であるようにするために、 Gnus は @ の後に置くマシン名を知る必要があります。Gnus が走っているマシンの名前が適切ではないならば (ほとんどの個人のマシンが該当するでしょう)、Gnus が使う名前を以下のように ~/.gnus.el ファイルで設定してください:

     (setq message-user-fqdn "yourmachine.yourdomain.tld")

Gnus 5.9 かそれ以前のものを使っている場合は、代わりにこれを使ってください (新しい版でも動作します):

     (let ((fqdn "yourmachine.yourdomain.tld")) ;; <-- 変更してね!
       (if (boundp 'message-user-fqdn)
           (setq message-user-fqdn fqdn)
         (gnus-message 1 "Redefining `message-make-fqdn'.")
         (defun message-make-fqdn ()
           "Return user's fully qualified domain name."
           fqdn)))

"yourmachine.yourdomain.tld" に何を入れるかを決めることができないならば、複数の選択肢があります。あなたが yourUserName.userfqdn.provider.net のようなものを使っても良いかどうかをプロバイダーに尋ねてみても良いし、個人でドメイン yourdomain.tld を保有している場合は somethingUnique.yourdomain.tld のようなものを使うことができます。あるいは、ユーザーに無料で FQDN を提供してくれるサービスに登録するのも良いでしょう。

最後に、Gnus にニュース記事では Message-ID をまったく作らせない (そしてその仕事はサーバーに任せる) ことができます。以下の設定を使ってください:

     (setq message-required-news-headers
           (remove' Message-ID message-required-news-headers))

さらに次の設定によって、メールでも Gnus に Message-ID を作らせないことは可能です:

     (setq message-required-mail-headers
           (remove' Message-ID message-required-mail-headers))

しかしながら、メールサーバーのあるものは適切な Message-ID を作ってくれないので、自分でメールを送信して Message-ID を眺めてみることによって、あなたのメールサーバーが正しく振る舞うかどうかをテストしてください。

古いメッセージ
-------

質問 6.1
......

Gnus を使っていなかったときの古いメールを、Gnus に編入させるにはどうしたら良いですか?

回答
..

最も楽な方法は、古いメールプログラムにメッセージを mbox 形式にまとめてもらうことです。ほとんどの Unix のメイラーはそれをすることができ、あなたが MS Windows の世界の出身であっても http://mbx2mbox.sourceforge.net/ で、そのための道具を見つけることができるでしょう。

では、この mbox ファイルを Gnus に編入させましょう。それにはグループバッファーで G f /path/file.mbox RET を実行して、mbox ファイルを扱うための nndoc グループを作ってください。そうすれば、あなたのメールに読み出し専用でアクセスできるようになります。そのメッセージを通常の Gnus のメールグループの階層に編入させたいならば、たった今作った nndoc グループに C-u RET 命令で入って (つまりすべてのメッセージが読めるようにしておいて)、すべてのメッセージに M P b で印を付けてから、それらをお望みのグループに B c name.of.group RET でコピーするか、または nnmail-split-methods を使ってそれらを分割 (再スプール) するために B r を使ってください。

質問 6.2
......

興味を持った記事を保存するにはどうすれば良いですか?

回答
..

例えば gnu.emacs.gnus で興味深い記事に出くわして、それを保存しようと思ったときには、複数の解があります。第一の最もやさしい方法は、 O f 命令を使ってそれをファイルに保存することです。でもそれは、 Gnus から保存されたメッセージをより直接にアクセスする手段としては、とても便利だとは言えないのではないでしょうか?  それに同意してくれるのならば、 Frank Haun pille3003@fhaun.de が書いてくれたこのコードの切れ端を ~/.gnus.el ファイルに入れてみてください:

     (defun my-archive-article (&optional n)
       "一個以上の記事を、対応する `nnml:' グループにコピーします。
     例えば `gnus.ding' の記事は `nnml:1.gnus.ding' グループに行き、
     `nnml:List-gnus.ding' の記事は `nnml:1.List-gnus-ding' に行きます。

     一個以上の記事を保存するには、概略バッファーでプロセス/接頭引数の
     習慣を使ってください。"
       (interactive "P")
       (let ((archive-name
              (format
               "nnml:1.%s"
               (mm-replace-in-string gnus-newsgroup-name "^.*:" ""))))
         (gnus-summary-copy-article n archive-name)))

訳注: see プロセス/接頭引数 (The Gnus Manual).

これにより、概略バッファーで M-x my-archive-article を実行すれば、指定した記事を nnml グループに保存することができます。

もちろん、以下の設定によってキャッシュを常に有効にすることもできます:

     (setq gnus-use-cache t)

これによって、維持したい記事には可視 (ticked) か保留 (dormant) の印を付けるだけで済むようになります。また、既読 (read) の印を付けることによって、それらの記事はキャッシュから削除されます。

質問 6.3
......

指定したメッセージを探すにはどうしたら良いですか?

回答
..

これにも複数の方法があります。Usenet グループに投稿されたものについては、おそらく groups.google.com (http://groups.google.com) に尋ねるのが最も楽な解決方法です。そこで見つかったならば、Google に生の記事を表示してもらって Message-ID を探し、概略バッファーで M-^ the@message.id RET を実行してください。さらに Gnus 5.10 以降では groups.google.com へのインターフェースがあるので、グループバッファーで G W を使うこともできます。

メールとニュースの両方のグループで動作するもう一つの方法は、探しているメッセージが存在するグループに入って、Emacs の標準の探索コマンドである C-s を使うことです。それは壊れたスレッドにある記事を探すためにも十分に賢いものです。本文の中で探したいのならば、代わりに M-s を試してください。さらに付け加えると、これも役に立つ gnus-summary-limit-to-* コマンド群があります。

もちろんローカルに保存されているメールを grep で探すこともできますが、大きなアーカイブが相手だと遅いし、見つかったメールを Gnus で表示するわけではないので不便でもあります。そこで nnir の出番がやってきました。nnir は swish-e, swish++ および他の検索エンジンへのフロントエンドです。それらの検索エンジンの一つを使ってメールに索引を付けておけば、nnir の助けを借りることによって、索引が付けられたメールを探して、検索の基準に合致するすべてのメールを含む一時的なグループを作ることができます。これがクールに聞こえるなら、 ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/ または ftp://ftp.is.informatik.uni-duisburg.de/pub/src/emacs/ から nnir.el を持って来ましょう。使い方の説明は、そのファイルの始めの方にあります。

質問 6.4
......

要らなくなった古いメールを削除するにはどうすれば良いですか?

回答
..

もはや要らなくなったメールにポイントを置いて # で印を付けてから、それらを B DEL で永久に消してしまうことは、もちろんできます。さらに、それらを実際に消してしまう代わりに B m nnml:trash-bin を使ってジャンク・グループ (それは時々消さなければなりません) に送ることもできるのですが、両方とも Gnus が意図するやり方ではありません。

Gnus では、ニュースサーバーでニュース記事が期限切れ消去されるように、メールも消します。そうするためには、概略バッファーのそのメールの上で E を叩くことによって、そのメールが期限切れ消去可能であることを (「このメールはもう要らないよ」と) Gnus に伝えれば良いのです。すると、そのグループを抜け出たときに、Gnus は以前に印が付けられたすべてのメッセージを検査して、十分に古くなった (ディフォルトでは一週間より古くなった) メールを消去します。

質問 6.5
......

読み終わったすべてのメッセージを期限切れ消去したいのですが (少なくともいくつかのグループで)、どうしたら良いですか?

回答
..

読み終わったすべてのメッセージが期限切れ消去されるようにしたいなら (例えばオンラインのアーカイブが別に存在しているメーリングリストで)、 auto-expire と total-expire という二つの選択肢があります。 auto-expire というのは、印が付いていないけれども読むために選択されたことがあるすべての記事に期限切れ消去可能の印が付けられることで、メッセージを読むたびに Gnus が E を叩いてくれるようなものです。 total-expire は少し異なるやり方に従っていて、既読の印が付けられたすべての記事が期限切れ消去可能になります。

auto-expire を有効にするには、そのグループのグループパラメーターに auto-expire を含めてください (グループバッファーでグループパラメーターを変更するグループの上にポイントを置いて G c を叩きます)。 total-expire の方は、グループパラメーターに total-expire を加えてください。

どちらの手段を選ぶかは、単に好みの問題です。auto-expire は速いのですが、適応スコア付けと共存できないので、この機能を使いたい場合は total-expire を使わなければなりません。

total-expire か auto-expire が設定されているグループで、あるメッセージを期限切れ消去の対象から外したい場合には、u で可視 (ticked) の印を付けるか ? で保留 (dormant) の印を付けてください。 auto-expire を使っている場合は、さらに d で既読の印を付けることができます。

質問 6.6
......

期限が来たメールを削除するのではなくて、他のグループに移動させたいのですが。

回答
..

~/.gnus.el ファイルに、このようなものを書き込んでください:

     (setq nnmail-expiry-target "nnml:expired")

(nnmail-expiry-target にグループによって異なる値を設定したい場合には、質問「いくつかの (例えばメールの) グループで、スレッド表示をさせなくすることはできますか?  あるいは、いくつかのグループに固有の変数を設定することができますか?」(see [4.10]) を参照してください。)

ダイアルアップ環境で Gnus を使う
-------------------

質問 7.1
......

ネットに常時接続していないのですが、どうしたら接続する時間を最小限にできますか?

回答
..

二つのやり方があります。一つは Gnus エージェントを使うこと (see [7.2]) で、もう一方はニュース記事とメールをローカルディスクに取り込むプログラムをインストールして、Gnus にそれらをローカルマシンから読んでもらう方法です。

二つ目のやり方で行きたいのなら、ニュース記事を取り込んでそれらを Gnus に渡すプログラム、同じことをメールに対して行なうプログラム、およびあなたが書いたメールを Gnus から受け取って、オンラインになったらそれらを送信するプログラムが必要です。

最初に Unix システムについて書きましょう。ニュース記事を取り込むための最も安易な解は、Leafnode (http://www.leafnode.org/) や sn (http://infa.abo.fi/~patrik/sn/) のように小規模な NNTP サーバーを使うことです。もちろん inn (http://www.isc.org/products/INN/) のような本格的なニュースサーバーをインストールすることもできます。メールの取り込みに使うもので人気があるのは fetchmail (http://www.catb.org/~esr/fetchmail/) および getmail (http://www.qcc.ca/~charlesc/software/getmail-3.0/) です。それらにメールをディスクに書き込むように指示してください。Gnus はそこから読むことになります。最後ですがおろそかにできないのはメールの送信です。これにはあらゆる MTA、例えば sendmail (http://www.sendmail.org/), postfix (http://www.qmail.org/), exim (http://www.exim.org/) または qmail (http://www.qmail.org/) を使うことができます。

Windows 小屋のためには Hamster (http://www.tglsoft.de/) を推します。それは小さくてフリーなオープンソースのプログラムで、遠隔サーバーからメールとニュースを取り込んで、NNTP および POP3 または IMAP のそれぞれを介して Gnus (あるいは他のメール/ニュースリーダー) に渡します。さらにそれは Gnus が送信するメールを受け取るための SMTP サーバーも含んでいます。

質問 7.2
......

ならば、それのエージェントに関係するものは何ですか?

回答
..

Gnus エージェントは Gnus の一部で、メールとニュースを取り込んでディスクに格納し、後でオフラインのときにそれらを読むことができるようにします。それは、言うならば、例えば Forte Agent のようなオフライン・ニュースリーダーの真似をします。まだ 5.8.8 か 5.9 を使っていてエージェントを使いたければ、以下の行を ~/.gnus.el ファイルに書き込んでください (これは 5.10 からディフォルトになっています):

     (setq gnus-agent t)

そうしたら、数あるグループをローカルに格納することができるサーバーを選ばなければなりません。そのためには、サーバーバッファーを開いて (グループバッファーで ^ を押して) ください。そして、選んだサーバー名の場所にポイントを移動させましょう。最後に J a をタイプして、そのサーバーをエージェント化してください。もし間違ってしまったら、あるいは気が変わったら、J r をタイプすれば元に戻すことができます。終わったら q をタイプして、グループバッファーに戻ってください。次回エージェント化されたサーバーのグループに入るとヘッダーがディスクに格納され、その次の回にグループバッファーに入ると、そこ (ディスク) から読むようになります。

質問 7.3
......

記事の本文もディスクに格納したいのですが、どうすれば良いですか?

回答
..

ある述語を満足させる記事の本文を自動的に取り込むように、エージェントに指示することができます。それは、グループバッファーで J c 命令を使うことによって行くことができる、特別なバッファーで行ないます。どの述語を使うことができるか、およびそれを正しく行なう方法に関する情報については Gnus のマニュアルを参照してください。

さらに、どの記事をディスクに格納するかを、手作業でエージェントに指示することもできます。それには二つのやり方があります:

 1. 概略バッファーで、# 命令を実行してエージェントに格納されるべき記事にプロセス印を付けてから、J s をタイプしてください。

 2. 概略バッファーで、@ 命令を実行して欲しい記事にダウンロード可能印 (%) を付けてから、J u をタイプしてください。

どんな違いがあるのかって?  えーと、ダウンロード可能印が永久的なのに対して、プロセス印は概略バッファーを抜け出たとたんに消される点です。実際、複数のグループでダウンロード可能印を設定して、それらすべての記事を (グループバッファーで J s 命令を使うことによって) まとめて取り込むことができます。唯一の欠点は、エージェント化されているサーバーの、選択されたすべてのグループのヘッダーをも取り込んでしまうことです。ヘッダーの量にもよりますが、最初の取り込みには何時間もかかるかもしれません。

質問 7.4
......

オフラインのときに Gnus にメールやニュース記事を送信させないようにするには、どうしたら良いですか?

回答
..

現在の状態がオンライン (plugged) かオフライン (unplugged) かを、Gnus に言ってあげなければなりません。それ以外のもろもろのことは自動的にやってくれます。plugged と unplugged の切り替えは、グループバッファーで J j 命令を実行することによって行なうことができます。 Gnus を unplugged の状態で起動したいなら、M-x gnus の代わりに M-x gnus-unplugged を使ってください。ただし、これが働くためにはエージェントを有効にしなければならないことに注意してください。

助けを得る
-----

質問 8.1
......

Emacs の中で情報を探したり助けを求めるには、どうすれば良いですか?

回答
..

最初に立ち寄るべき場所は Gnus マニュアルです (C-h i d m Gnus RET で Gnus マニュアルを開いたら、メニューを眺め回すか s でテキスト全体を探してください)。一方 Emacs には標準のヘルプ・コマンドがあって、それには C-h ともう一つのキーを使います (C-h ? ? をタイプすると、利用可能なヘルプ・コマンドとそれらの意味が現れます)。さらに M-x apropos-command で利用可能なすべてのコマンドを、 M-x apropos で存在する変数を探すことができます。

質問 8.2
......

Gnus のマニュアルの中で、あることがら (例えば添付ファイル、PGP、 MIME...) に関する情報を、何も見つけることができません。それらは書かれていないのですか?

回答
..

Gnus マニュアル以外に message, emacs-mime, sieve および pgg のマニュアルがあります。それらのパッケージは Gnus とともに配布され、Gnus によって使われますが、真に Gnus の核心部分ではないので別の info ファイルで文書化されています。あなたはそれらのマニュアルも覗いてみるべきでしょう。

質問 8.3
......

私はどのウェブサイトを知っていなければなりませんか。

回答
..

二つの最も重要なものは 公式 Gnus ウェブサイト (http://www.gnus.org) と、その姉妹サイトである my.gnus.org (MGO) (http://my.gnus.org) です。後者には Lisp の断片、HowTo、チュートリアル (未完成)、およびこの FAQ があります。

他にも興味深いサイトがあったら教えてください。

質問 8.4
......

どんなメーリングリストとニュースグループがありますか。

回答
..

Gnus の一般的な質問を取り扱うニュースグループとして gnu.emacs.gnus があります (gmane.emacs.gnus.user (http://dir.gmane.org/gmane.emacs.gnus.user) でも利用可) 。開発版の Gnus に対する質問があるのなら、ding メーリングリストで尋ねる方が良いはずです。以下を参照してください。

Big8 (訳注: comp, humanities, misc, news, rec, sci, soc, talk の八大ニュースグループ) にとどまっていたいのならば、 news.software.newssreaders もまた、いくらかの Gnus のユーザーによって読まれています (でも、的確な助けを得ることができる見込みという点では、上記のグループの方がはるかに良いでしょう)。ドイツ語を話す人向けには de.comm.software.gnus があります。

ding メーリングリスト (ding@gnus.org) は Gnus の開発を扱います。ding リストは news.gmane.org にある gmane.emacs.gnus.general (http://dir.gmane.org/gmane.emacs.gnus.general) を NNTP 経由で読むこともできます。

質問 8.5
......

バグはどこに報告すれば良いですか?

回答
..

M-x gnus-bug 命令を使うことによって gnus bug メーリングリスト に送るメッセージを書き始めることができます。それにはあなたを助けやすくするための、あなたの環境に関する情報が添付されます。 (訳注: 2005年の暮れの時点では、このメーリングリストはまともに機能していません。)

質問 8.6
......

その場で即座に得られる助け (real-time help) が欲しいのですが、どこで見つかりますか?

回答
..

あなたの IRC を irc.freenode.net の #mygnus チャンネルに接続してください。

Gnus をチューンする
------------

質問 9.1
......

Gnus の起動が本当に遅いのですが、どうしたら速くすることができますか?

回答
..

この原因は、Gnus が active ファイルを読む方法に関係していることがあり得ます。Gnus マニュアルの see アクティブファイル (The Gnus Manual) を参照してください。そこには、その処理を速くするために試してみる価値があることがらがあります。もう一つの案は、~/.gnus.el ファイルをバイトコンパイルすること (M-x byte-compile-file RET ~/.gnus.el RET を実行すること) です。最後に、~/.gnus.el ファイルで require を使っているならば、それらを eval-after-load で置き換えることができるでしょう。それは対象のモジュールを起動時ではなく、必要になったときに読み込むようにします。あなたの ~/.gnus.el ファイルに以下のようなものがある場合には、

     (require 'message)
     (add-to-list 'message-syntax-checks '(sender . disabled))

Gnus を起動したとたんに message.el が読み込まれます。これを次のように置き換えると、

     (eval-after-load "message"
       '(add-to-list 'message-syntax-checks '(sender . disabled)))

それは必要になったときに読み込まれるようになります。

訳注: 原典の例は不適切です。現在の Gnus は多くの主要なモジュールを起動時に load するようになっていて、例えば message.el モジュールは ~/.gnus.el ファイルを読み込む時点ですでに load されています。ですから少なくとも message.el モジュールに対しては require も eval-after-load も使う必要がありません。実害はありませんが何の効果もありません。変数 message-syntax-checks に項目を追加する上記の例は、単に以下のように書けば十分です。

     (add-to-list 'message-syntax-checks '(sender . disabled))

質問 9.2
......

グループに入るときの動作を速くするには、どうすれば良いですか?

回答
..

スピードの殺し屋は、nil 以外の値を設定された gnus-fetch-old-headers 変数です。ですからスピードが問題なのであれば、それをやらないでください。概略バッファーの構築を速くするには、

     (gnus-compile)

を ~/.gnus.el ファイルの最後に書き込んでください。これによって Gnus は gnus-summary-line-format のようなものをバイトコンパイルします。(訳注: それを行なうと ~/.newsrc.eld ファイルにバイナリーコードが書き込まれるので、非-ASCII テキストで表現されたトピック名などと共存できなくなる危険があります。)

それから、~/.emacs に以下のようなものを書き込んで、 gc-cons-threshold の値を増やしてみてください。

     (setq gc-cons-threshold 3500000)

CJK (中国語/日本語/韓国語) の文字の幅を気にしないのならば、または最近の Emacs とともに Gnus 5.10 かそれより新しいものを使っているのならば、次の行を ~/.gnus.el ファイルに入れましょう:

     (setq gnus-use-correct-string-widths nil)

訳注: see Wide Characters (The Gnus Manual), も参照してください。

(これら二つの提言をしてくれた Jesper harder さんに感謝します。)

最後に、まだ 5.8.8 か 5.9 を使っていて、概略バッファーを構築する場合の速度に問題があることを経験するのであれば、絶対に 5.10 に上げるべきです。そこではそれを改善するための、並外れた作業が行なわれました。

質問 9.3
......

メールの送信が遅くなってしまいました。何が起きたのでしょう?

回答
..

その理由は、gnus-message-archive-group 変数の設定によって、送信メッセージの控えを保存する場所や方法を変更したせいかもしれません。アーカイブグループの代わりに nnml グループを使ってみてください。そうすれば正常な速度が戻ってくるはずです。

用語集
---

~/.gnus.el
     ~/.gnus.el という用語が使われるとき、それは Gnus の設定ファイルを指します。それを ~/.gnus と呼ぶか、あるいは別名を指定しても構いません。

Back End
     Gnus の用語大系では、バックエンドは Gnus の核心部分と実際のサーバーの間の層に位置を占める仮想サーバーのことです。実際のサーバーとは、 NNTP サーバー、POP3 サーバー、IMAP サーバー、または、何であれ「メッセージの取得」や「ヘッダーの取得」を行なうサーバーの機能を持つ関数のことです。

Emacs
     この FAQ で使われている Emacs という用語は、GNU Emacs か XEmacs のどちらかを指します。

Message
     この FAQ で「メッセージ」はそれがどんな種類のものでも、メール、または Usenet ニュースグループか他の何らかの特製のバックエンドに送られるニュース記事のどちらかを意味します。

MUA
     MUA は Mail User Agent の頭字語で、電子メールを読んだり書いたりするためのプログラムのことです。

NUA
     NUA は News User Agent の頭字語で、Usenet ニュースを読んだり書いたりするためのプログラムのことです。