天天看點

使用Emacs閱讀郵件和新聞討論區:Gnus 中文FAQ

Gnus 中文FAQ[王春宇 譯]

常見問題 (Frequently Asked Questions)

$Id: gnus-faq-cn.txt,v 1.5 2003/11/25 12:32:16 spr Exp $

Copyright (c) 1995, 1996 Free Software Foundation.

Copyright (c) 1995, 2001 Free Software Foundation, Inc.

----------------------------------------------------------------------

目錄

譯注

摘要

更改

簡介

常見問題及解答

術語表

譯注

來源:http://my.gnus.org/FAQ/

翻譯:王春宇 <dddkk(at)sina(dot)com>

日期:2003-08-23

摘要 (Abstract)

新 Gnus 常見問題清單。用 Web 浏覽器,可以看到正式的超文本版本:

http://my.gnus.org/FAQ/,源檔案 Docbook 可以從這裡得到:

http://sourceforge.net/projects/gnus/。

意見和建議請送至FAQ discussion list

(mailto:[email protected])。 這個清單用qconfirm

(http://smarden.org/qconfirm/index.html)設定了反垃圾郵件的保護。但

作為訂閱者,你的消息可以通過該設定。給

[email protected] 發送一個空郵件來訂閱還可以在這裡:

http://mail1.kens.com/cgi-bin/ezmlm-browse?command=monthbythread%26list=faq-discuss

通路存檔。

更改

This file is Id: gnus-faq.xml,v 1.24 2003/04/13 22:30:34 fschmitt Exp.

* Updated FAQ to reflect release of Gnus 5.10.

簡介(Introduction)

Gnus 常見問題(Frequently Asked Questions)清單。

Gnus 是 Emacs 的一部分,是 Usenet 新聞閱讀器,電子郵件用戶端。 出

現至今已近十年,而且成為 Emacs 标準部分已經很長時間了。Gnus 5 是最

新的(也是最好的)化身。最初的版本稱為 GNUS,由 Masanobu UMEDA 所編

寫。94年入秋的時候,Lars Magne Ingebrigtsen 覺着無聊遍決定重寫

Gnus。

Gnus 的最大的實力在于異乎尋常的可定制的能力。初看上去似乎很具威脅性,

但實際上可以忽略其中多半複雜的東西,直到你準備利用它。是以,無論接

收的郵件數量适中(在幾個郵件清單中),還是去閱讀郵件數目很大的清單

甚至難以跟得上,或者所在的新聞討論區文章很多,使你卻覺着有些累,Gnus都

能滿足你的需求。

這份 FAQ 由 Justin Sheehy 維護直至 2002年3月。他曾對在他之前維護這

份清單的 Steve Baur 和 Per Abrahamsen 表示感謝。我們在這兒同樣如此:

謝謝,Justin!

正式的超文本版本可以在這裡看到:http://my.gnus.org/FAQ/。這一版本要

好于其他的非正式的版本,那些于Utrecht,Oxford,Smart Pages,Ohio

State,或者其他的 FAQ 存檔。 如果你需要有關得到其他格式的資訊,參看

下面有關資源的問題部分。

這裡所包含的内容,來自于 Gnus 開發郵件清單,任何的錯誤或者印刷錯誤

請歸咎于 my.gnus.org 小組,抱歉!(譯注:當然,如果你看的是譯文,或

許更多的是譯者的錯誤)

常見問題及解決方法(Frequently Asked Questions with Answers)

1. Gnus 的安裝

1.1 最新版本的 Gnus 是什麼?

1.2 版本 5.10.0 有什麼新特性?

1.3 如何、在哪裡得到 Gnus?

1.4 得到了 tar 包,又該如何呢?

1.5 我需要的是哪個 Emacs 版本?

1.6 如何使 Gnus 在 Emacs 和 XEmacs 中都能運作?

2. 啟動問題,Gnus 的第一個 Buffer

2.1 每次啟動 Gnus 時,總有一個消息"Gnus auto-save file exists. Do

youwant to read it?",什麼意思?如何去掉?

2.2 Gnus 沒有記住我所訂閱的組,怎麼回事?

2.3 如何改變 Group buffer 中的行的格式?

2.4 我的 group buffer 變得有些擁擠,如何分類?

2.5 如何在 Group buffer 中用手來排序?如何排序某個主題下的組啊?

3. 用 Gnus 讀取郵件和新聞

3.1 剛剛裝好 Gnus,并且通過 `M-x gnus' 開啟了它,卻出現了“nntp

(news) open error”,如何處理?

3.2 我在Windows環境中,~/.gnus是什麼意思。

3.3 我的新聞伺服器需要驗證,如何儲存使用者名和密碼?

3.4 Gnus 好像已經運作起來了,但是我不知道如何訂閱一個組。

3.5 Gnus 不能顯示所有組/Gnus說我不允許在這個組上發文章,為什麼?

3.6 我想讓 Gnus 在多個的伺服器上取新聞,可能嗎?

3.7 本地緩沖中的檔案呢?

3.8 OK,能讀新聞,可是我也想用 Gnus 讀郵件,怎麼做到?

3.9 IMAP 怎麼處理?

3.10 我們的辦公室中,使用的是一個 MS Exchange Server,我能用 Gnus 讀

取上面的郵件嗎?

3.11 通過 POP3 取信時,能不讓 Gnus 删除伺服器上面的郵件嗎?

4. 有效地閱讀消息

4.1 當我進入一個組,所有的已讀消息都沒有了,我如何再看到它們?

4.2 如何在每次我進入一個組的時候,讓 Gnus 總是顯示某個重要的消息,即

使即使是已讀的。

4.3 如何看消息的頭資訊?

4.4 如何檢視沒有格式的原始資訊?

4.5 如何改變 Gnus 在 Article buffer 頂部顯示的頭資訊?

4.6 不想讓 Gnus 顯示 HTML 郵件,但是如果有,則顯示文本部分。如何做到?

4.7 除 w3 之外可以用其他的的浏覽器顯示 HTML 郵件嗎?

4.8 格式糟糕的郵件有辦法更易讀嗎?

4.9 是否有辦法自動的忽略由某個人發的文章或者含有某個詞的文章呢?以及

我怎樣突出我所感興趣的文章?

4.10 如何在一些組(比如郵件組)裡面取消主題顯示,或者如何為指定的組

設定變量?

4.11 我能把自己寫的文章和所跟的文章高亮顯示嗎?

4.12 在一個 Group buffer 中的顯示的消息是按照序号由小到大的順序排列

的,特别是在郵件組裡面,這是不是一個bug?

4.13 不喜歡 Summary buffer 和 Article buffer 的版面,如何改變?或者

三個視窗的顯示?

4.14 不喜歡 Summary buffer 的樣子,如何調整?

4.15 如何把郵件分為幾個組?

5. 寫郵件或 Usenet 文章

5.1 需要掌握的發送郵件和貼文章的基本指令都有哪些?

5.2 寫消息時如何打開自動折行 (word-wrap) ?

5.3 如何設定這些東西:From, Organization, Reply-to, signature...?

5.4 可以根據組名來設定不同的 Form, Signature 等等嗎?

5.5 有沒有拼寫檢查器?甚至自由(on-the-fly)拼寫檢查?

5.6 可以設定所投遞的組相應的字典嗎?

5.7 有沒有類似于位址簿的東西,我就不必記憶太多位址了?

5.8 有時候在 Article buffer 頂部有個小小的圖檔,是什麼?我發的文章如

何加上?

5.9 在新聞討論區中,有時候想按 f 卻按了 r。當我在新聞討論區中的時候通過郵件

回複的時候,Gnus 能否警告一下?。

5.10 如何讓 Gnus 不要産生 sender header?

5.11 如何在本地儲存我發送的郵件和文章的複本?

5.12 有人告訴我說,我的 Message-ID 不正确,為什麼,如何修改?

6. 引入, 存檔, 搜尋, 删除消息

6.1 如何把我的舊郵件引入 Gnus?

6.2 如何存檔有趣的消息?

6.3 如何搜尋特定的消息?

6.4 如何删除不想要的郵件?

6.5 我想所有已讀消息都是過期的(至少一些組裡這樣),如何做?

6.6 我不想删除已過期的郵件,隻想轉移到另一個組。

7. 離線閱讀郵件和新聞

7.1 我這裡不是始終線上的,如何使得我的連接配接時間最小?

7.2 那麼,Gnus Agent 如何呢?

7.3 如果也想把消息儲存在本地呢?

7.4 離線時如何不讓 Gnus 發送郵件/文章?

8. 如果這個 FAQ 不足以解決問題

8.1 如何在 Emacs 中找到資訊和幫助?

8.2 如何在 Gnus 手冊中找到某某内容(例如,附件,PGP,MIME……),沒

有文檔?

8.3 應該知道哪些網站?

8.4 有那些郵件清單和新聞討論區呢?

8.5 向什麼地方報告bug?

8.6 需要一個實時的幫助,如何得到啊?

9. 如何使 Gnus 速度快些

9.1 開始 Gnus,真的很慢,如何快些?

9.2 如何加快進入某個組的速度?

9.3 發送郵件變得越來越慢,怎麼了?

1. Gnus 的安裝

1.1 最新版本的 Gnus 是什麼?

Gnus 5.10.0 已經釋出了,盡管在版本号上面的變化相當的小,

Gnus 5.10 卻有很多很多不容錯過的新特性,當然,如果你謹慎得很,或許

甯願使用 5.8.8 或 5.9(二者基本一樣),直到 bugfix 版出來。

1.2 版本 5.10.0 有什麼新特性?

當然,先去看看 Gnus 的 tarball 裡面的 GNUS-NEWS 檔案吧,主要的改變

都列在裡面了。這裡是一個我認為重要/有趣的簡短清單。

* Gnus agent的重寫,Gnus agent現在預設為啟動。

* 很多處理格式混亂的郵件的方法。

* 垃圾郵件處理特性。

* 包含了message-utils。

* Summary line的新的格式指定符号,比如 %B 為複雜的trn-style線索樹。

1.3 如何、在哪裡得到 Gnus?

最新的發行版尚未包含在 Emacs 21 中,到目前為止也不能通過 XEmacs

21.4 的 package system 中得到,是以你需要從

`http://www.gnus.org/dist/gnus.tar.gz' 或匿名ftp

`ftp://ftp.gnus.org/pub/gnus/gnus.tar.gz' 得到。

1.4 得到了 tar 包,又該如何呢?

通過 `tar vzf gnus.tar.gz' 解開然後如通常一樣 `./configure; make;

make install'。(在MS-Windows中,可以先從http://www.cygwin.com 得到

Cygwin環境,用tar 解開;或者使用其他的打包程式)如果你不想或者不能

在系統裡面安裝 Gnus,你還可以把它裝在你的home目錄裡面,并且在你的~

/.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 我需要的是哪個 Emacs 版本?

Gnus 5.10.0 需要的 Emacs 版本要大于或等于 Emacs 20.3 或者 XEmacs

20.1。

1.6 如何使 Gnus 在 Emacs 和 XEmacs 中都能運作?

你不能在兩者之間共享一個 Gnus 的拷貝,因為兩者的 Lisp 檔案的位元組碼

并不相容。是以請給 Emacs 和 XEmacs 分别做一個拷貝。

2 啟動問題,Group Buffer

2.1 每次啟動 Gnus 時,總有一個消息"Gnus auto-save file exists. Do

youwant to read it?",什麼意思?如何去掉?

這個提示意味着,上次使用 Gnus 的時候沒有恰當的退出,是以沒能把一些

資訊寫入磁盤(例如,哪些消息已讀),詢問你是否從自動存盤檔案中恢複

這些資訊。

為防止出現這個提示,每次退出 Gnus 的時候在 Group Buffer 中用`q' 退

出,不要直接 killing Emacs。

2.2 Gnus 沒有記住我所訂閱的組,怎麼回事?

啟動 Gnus 的時候有一個上一問題的提示,對吧?基本是同一個問題,看看

上一問的回答吧。

2.3 如何改變 Group buffer 中的行的格式?

你需要調整變量 gnus-group-line-format 的值。參考手冊 “Group Line

Specification”節點中相關資訊。例如(某個人的 .gnus 檔案中:-)):

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

2.4 我的 group buffer 變得有些擁擠,如何分類?

Gnus 提供了主題模式 (topic mode),允許你把組分類。例如所有關于

Linux 的組都放入 Linux 主題下,關于音樂的放入音樂的主題下,關于

scottish 音樂的放入音樂主題下的 scottish 音樂子題目下。

進入主題模式,在 Group buffer 中按 t。這時可以用 `T n' 在point 位置

建立一個主題,`T m' 移動一個組到某個主題下。其他指令參考手冊或者菜

單。 可能你的 gnus-group-line-format 變量需要在開始處放一個%P 标記

符來縮進。

2.5 如何在 Group buffer 中用手來排序?如何排序某個主題下的組啊?

把 point 移動到某個組上,按 `C-k',再移動到想放這個組的地方按`C-y'。

3 用 Gnus 讀取郵件和新聞

3.1 剛剛裝好 Gnus,并且通過 `M-x gnus' 開啟了它,卻出現了“nntp (news) open error”,如何處理?

你還沒有告訴 Gnus 到哪裡去取新聞。參考文檔中相應内容。首先需要在~

/.gnus 檔案中放入如下的行:

(setq gnus-select-method '(nntp "news.yourprovider.net"))

(setq user-mail-address "[email protected]")

(setq user-full-name "Your Name")

3.2 我在Windows環境中,~/.gnus是什麼意思。

~/ 意思是 home 目錄,Gnus 和 Emacs 在這裡尋找配置檔案。其實不用知道

這些,Emacs 知道如何去做,按 `C-x C-f ~/.gnus RET'(沒錯,即使在

Windows 上,也可以使用斜線字元),并且 Emacs 會為你打開正确的檔案。

(很有可能是個新檔案,是以是空的。)可是,我并不推薦你這麼做,因為

Emacs 所選擇的目錄很有可能不是你想要的,是以你可以這樣:首先,建立

一個合适的目錄(目錄名中不要有空格),如 C:\myhome;然後設定一個環

境變量HOME 到這個目錄。在 Win9x 或 Me 系統中,在你的 autoexe.bat 文

件中放入如下行後重新啟動:

SET HOME=C:\myhome

在 NT、2000 和 XP 系統中,按 Winkey+Pause/Break 進入系統選項(不好

使就在控制台中找到系統)。這裡可以找到設定環境變量,建立一個名字

為 HOME 值為 C:\myhome 的變量,不需要重新啟動。

現在在 Emacs 中建立~/.gnus,就是 `C-x C-f ~/.gnus RET C-x C-s'。

3.3 我的新聞伺服器需要驗證,如何儲存使用者名和密碼?

建立一個檔案 ~/.authinfo, 檔案中每一個伺服器對應如下的行:

machine news.yourprovider.net login YourUserName password YourPassword

如果你的作業系統允許,請確定這個檔案對于别的使用者來說是不可讀的(比

如Unix 中,執行 shell 指令:

chmod 600 ~/.authinfo

3.4 Gnus 好像已經運作起來了,但是我不知道如何訂閱一個組。

如果你知道那個組的名字,在 Group buffer 區中輸入 `U name.of.group

RET'。否則按字元 ^,轉到 Server buffer。把光标移動到有你想要的組的

伺服器上,回車,再移動光标到你想訂閱的組的名字上,按`u',就訂閱了該

組。

3.5 Gnus 不能顯示所有組/Gnus說我不允許在這個組上發文章,為什麼?

一些服務提供商限制匿名通路的使用者,要在驗證之後才可以有完全的通路權

限。為了使 Gnus 總是發送驗證資訊到這些伺服器,在 ~/.authinfo 檔案中

這個伺服器上那行的行尾加入:

force yes

3.6 我想讓 Gnus 在多個的伺服器上取新聞,可能嗎?

當然。你可以在變量 gnus-secondary-select-methods 中指定多個源。在~

/.gnus 檔案中加入類似的行:

(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 的選擇方法(select method),比如:

(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 OK,能讀新聞,可是我也想用 Gnus 讀郵件,怎麼做到?

這個有一點困難,因為對于郵件來說,會有許多可能的郵件來源,很多儲存

郵件的方法以及不同的發送郵件的方法。最通常的情況是:1、你從一個

pop3 伺服器讀取郵件而且通過一個 SMTP 郵件伺服器發送;2、一些程式比

如Fetchmail 将你的郵件取回,儲存在本地磁盤上,Gnus 再從那裡讀取。

即将發出的郵件是由Sendmail、Postfix 或者其他的 MTA 程式發送的。又使,

你可能需要結合上面的這些情況。

然而,首先需要告訴 Gnus 用哪種方式儲存郵件,用 Gnus 的術語來說,就

是“使用哪種後端(Back End)”。Gnus 支援多種後端,最普遍的是 nnml。

它把每一個郵件儲存在一個檔案中,進而速度很快。如果你的檔案系統處理

多個小檔案有問題,你更喜歡每個組使用一個檔案,那麼後端 nnfolder 或

許是你的更好的選擇。在 ~/.gnus 中加入如下的行,使用 nnml:

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

使用 nnfolder:

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

現在告訴 Gnus 到哪裡取郵件。如果是 POP3 伺服器:

(eval-after-load "mail-source"

'(add-to-list 'mail-sources '(pop :server "pop.YourProvider.net"

:user "yourUserName"

:password "yourPassword")))

不要讓其他使用者讀到你的密碼檔案。如果想讀取本地機器上的傳統郵件:

(eval-after-load "mail-source"

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

如果是一個 Maildir, 像 Postfix Qmail 或者 Fetchmail 等使用的一個文

件一條消息的目錄中,這樣:

(eval-after-load "mail-source"

'(add-to-list 'mail-sources '(maildir :path "/path/to/Maildir/"

:subdirs ("cur" "new"))))

最後,如果你想從一個目錄中讀取幾個檔案,例如由于 Procmail 已經把你

的郵件分割了:

(eval-after-load "mail-source"

'(add-to-list 'mail-sources

'(directory :path "/path/to/procmail-dir/"

:suffix ".prcml")))

這裡的 :suffix ".prcml" 告訴 Gnus 僅僅使用帶有字首 .prcml 的檔案。

現在你隻需要告訴 Gnus 如何發送郵件了。如果你想通過 Sendmail (或者

你的系統中任何的和 Sendmail 同樣作用的 MTA 程式),你不需要做任何事。

但是,如果使用一個 SMTP 伺服器,需要在 ~/.gnus 加入下面的行:

(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。一個是如同 POP3 一樣來使用 IMAP,就是

說Gnus 從 IMAP 伺服器取郵件,儲存在磁盤上,如果你想這樣(不是真想這

樣吧)在 ~/.gnus 中加入:

(add-to-list 'mail-sources '(imap :server "mail.mycorp.com"

:user "username"

:pass "password"

:stream network

:authentication login

:mailbox "INBOX"

:fetchflag "\\Seen"))

或許你不得不改變 stream 和(或)驗證的變量的值,其他可能值,請參考

Gnus 手冊中,節點 "Mail Source Specifiers"。

如果想使用 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 沒能猜測出正确的方法,你不得不指定清楚,

其中細節請參考手冊中 "IMAP" 節點。

3.10 我們的辦公室中,使用的是一個 MS Exchange Server,我能用 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 檔案,可以

達到同樣的目的。也可以讓 Gnus 使用外部程式(如 Fetchmail)取郵件,

參看 info 節點Mail Source Specifiers"。

4 閱讀消息

4.1 當我進入一個組,所有的已讀消息都沒有了,我如何再看到它們?

當你通過 `RET' 進入一個 Summary buffer 時,隻有未讀郵件和标記的郵件

被加載。用 `C-u RET' 來取得所有可用郵件。如果隻想讀最新的300 個,用

`C-u 300 RET'。

如果開啟了主題視圖,隻看未讀郵件是令人讨厭的,在 ~/.gnus 裡面加如這

行:

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

可以保留同主體中已讀郵件,把 'some 改為t可以下載下傳所有文章(注意:當

你進入某個組的時候,這兩個設定,都會增大從伺服器讀取的資料量,進而

使得這個過程變慢)。

如果你用的是 Gnus 5.10.0,可以在 Summary buffer 中通過 `/o N' 來取

得後 N 個消息,版本 5.8.8 的 Gnus 裡面沒有這個功能。

不想要所有的就消息,隻想要正讀的這篇的上一篇,可以用 `^' 來取得;如

果想找回目前主題的全部消息,`A T'。

4.2 如何在每次我進入一個組的時候,讓 Gnus 總是顯示某個重要的消息,即使

即使是已讀的。

重要資訊做上 tick 标記。 Summary buffer 中按 `u' 做 tick 标記。 按

`d' 去掉标記(去掉标記,并且設為已讀),或者按 `M c' (去掉任何标

記)。

4.3 如何看消息的頭資訊?

按 `t' 顯示所有頭資訊,再按一下 `t' 隐藏頭資訊。

4.4 如何檢視沒有格式的原始資訊?

用 `C-u g' 顯示未經處理的原始資訊,`g' 回到正常狀态。

4.5 如何改變 Gnus 在 Article buffer 頂部顯示的頭資訊?

變量 gnus-visible-headers 控制顯示哪些頭資訊,變量值是個正規表達式,

比對的頭資訊被顯示。是以,如果你想要 author,subject,date,以及如

果存在的 Followup-To 和 MUA / NUA,在 ~/.gnus 中加入:

(setq gnus-visible-headers

"^\\(From:\\|Subject:\\|Date:\\|Followup-To:\\|X-Newsreader:\\|User-Agent:\\|X-Mailer:\\)")

4.6 不想讓 Gnus 顯示 HTML 郵件,但是如果有,則顯示文本部分。如何做到?

在 ~/.gnus 中,這樣寫:

(eval-after-load "mm-decode"

'(progn

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

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

即使沒有文本部分,也不想顯示轉換的部分,加入這行

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

4.7 除 w3 之外可以用其他的的浏覽器顯示 HTML 郵件嗎?

除非使用 Gnus 5.10.0。這樣可以在 w3, w3m, links, lynx 和 html2text

幾者之間選擇。通過變量 mm-text-html-renderer 指定:

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

4.8 格式糟糕的郵件有辦法更易讀嗎?

Gnus 提供了幾個函數來“清洗(Wash)”收到的郵件,可以通過菜單找到他們,

Article->Washing。最有趣的幾個可能是“折長行(Wrap long lines)”(`W

w'),“ROT13解碼(Decode ROT13)”(`W r')和“Outlook Deuglify”(`W

k') 這個修複被 Microsoft 産品的很多使用者使用的啞引用,不幸的是這個

隻存在于 Gnus 5.10.0 中。

4.9 是否有辦法自動的忽略由某個人發的文章或者含有某個詞的文章呢?以及我

怎樣設定組參數?

你想要的可能是得分(Scoring)。得分的意思是,定義一些規則,給每一個消

息賦一個整數值。根據這個值,在 Summary buffer 中來突出顯示(如果分

數高,比如+2000)或者自動标記為已讀(如果分數低,比如-800),或者用

其他的方法處理。

給消息賦分值,有三種基本的方法。一個最簡單的方法是,基于目前正讀的

文章設定一個規則。假設你正在讀一個總是寫些無用的内容的人的消息,以

後想忽略他的消息。按 `L',設定一條規則,降低得分。Gnus 會問你降低到

什麼标準。 按兩次 `?',看看所有的可能,我們所要的是作者那個(From

頭)。 Gnus 需要知道想要哪種比對方式。精确比對按 `e',字串比對按

`s',删除出名字以外的所有内容。然後設定這個規則使用多長時間,例如按

`p',會一直有效。如果想提高文章的分數,類似的,按 `I'。

也可以手動設定規則。在 Summary buffer 中按 `V f',會提示輸入得分文

件名,僅對一個組有效的為 name.of.group.SCORE,對所有組有效的檔案名

為all.SCORE。精确的文法規則參照 Gnus 手冊,基本上是一個大的清單

(list),其中元素也是清單,這些清單中的第一個元素是給分的郵件頭,之

後的一個或多個清單給出比對内容和賦予的分數以及時間。例如,如果你對

我很感興趣,可以在你的 all.Score 檔案中加入下面這些行:

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

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

這個會在我寫的消息上加上 999 分,在回應我的消息上加 500 分。當然有

一個健全的大腦的任何人,都不會這麼做的,:-)

第三種方法是适應性的給分。意思是 Gnus 觀察着你并試圖發現你所感興趣

和讨厭的事情,然後設定規則以反映。當你所讀的組的流量很高,适應性給

分可能給你很大幫助。如果想使用這種給分方式:

(setq gnus-use-adaptive-scoring t)

4.10 如何在一些組(比如郵件組)裡面取消主題顯示,或者如何為指定的組設定

變量?

在 Group buffer 中,移動光标到一個組,按 `G c',開啟一個Buffer ,設

置那個組的變量。Buffer 底部,可以找到所有為那個組設定的本地變量。

取消主題顯示,到 gnus-show-threads 的變量裡面,值設為 nil,結束後按

Buffer 底部的done 按紐。

4.11 我能把自己寫的文章和所跟的文章高亮顯示嗎?

不要在問“我能……”的問題了,在 Gnus 的國度裡,回答往往都是 yes,

三步:首先,指定如何顯示(摘要行看起來什麼樣子)那些文章。之後給一

些特别的分數,最後告訴 Gnus 使用新的顯示方式。可以在

[http://my.gnus.org/Members/dzimmerm/HowTo%2C2002-07-25%2C1027619165012198456/view]

找到具體細節。

4.12 在一個 Group buffer 中的顯示的消息是按照序号由小到大的順序排列的,

特别是在郵件組裡面,這是不是一個bug?

不是。這是 Gnus 的設計,如果修改意味着重新實作 Gnus 的後端的主要部

分。Gnus 認為“highest-article-number - lowest-article-number =

total-number-of-articles”。對于新聞討論區來說這樣沒什麼問題,但是如果

在郵件組裡删除和移動了郵件,就不再成立了。為了避免這種情況,使用

`C-u RET' 進入新聞討論區(這樣 Gnus 會取得所有消息),之後敲 `M P b' 來

标記所有消息,再用`B m name.of.group' 把所有消息移動到原來的組裡面,

這樣所有消息得到了新的序号,計數正确(直到再次的删除或移動到其他

組)。

4.13 不喜歡 Summary buffer 和 Article buffer 的版面,如何改變?或者三個

視窗的顯示?

可以通過調用函數 gnus-add-configuration 來控制視窗的配置。文法有點

複雜,不過在手冊 "Windows Layout" 中解釋得很清楚,一些比較流行的例

子:

用 35% 的 Summary 比 65% 的 Article 替換原來的 25% 比 75%(其中的

1.0 意思是“占滿剩餘空間”):

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

三個視窗顯示。左邊是 Group buffer,右上是 Summary buffer,右下是

Article buffer:

(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 不喜歡 Summary buffer 的樣子,如何調整?

那麼你需要和變量 gnus-summary-line-format 玩一玩,它得值是一個符号

串,比如作者,日期,主題等。手冊 "Summary Buffer Lines" 中有可用的

符号清單和常被忘記的節點 "Formatting Variables" 和它的子節點。其中

有很多有用的東西,像指定光标和制表符的位置等。

從 5.10.0 起,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 和功能強大

的Fancy Mail Splitting。這裡隻介紹前者,後者請參考手冊中"Fancy

Mail Splitting"一節。

nnmail-split-methods 的值是一個清單,其中每個元素是表示分割的規則。

每個規則的形如 "比對的郵件的去處", "正規表達式",逐次比對。最後一條

規則一定總是通用規則(正規表達式 .*),指明如果規則都沒有比對,郵件

應該到哪裡。 如果郵件到來是相應目錄不存在,會立即建立。幾個規則同

時比對,預設是放入所有比對的組裡面。如果不想這樣:

(setq nnmail-crosspost nil)

放入 ~/.gnus。

舉個例子勝過千言,這裡是我的 nnmail-split-methods。注意我把複本放入

特殊的組中的,預設的組是垃圾組(spam),因為此前我濾出一些訂閱的清單

或直接發送給我的所有郵件。這些規則去除了大約 80% 垃圾郵件(例子中的

位址已經做了改動,為防止被垃圾郵件愛好者看到):

(setq nnmail-split-methods

'(("duplicates" "^Gnus-Warning:.*duplicate")

("XEmacs-NT" "^\\(To:\\|CC:\\).*[email protected]*")

("Gnus-Tut" "^\\(To:\\|CC:\\).*[email protected]*")

("tcsh" "^\\(To:\\|CC:\\).*[email protected]*")

("BAfH" "^\\(To:\\|CC:\\).*[email protected]*uni-muenchen.bla.*")

("Hamster-src" "^\\(CC:\\|To:\\).*[email protected]\\(de\\|com\\).*")

("Tagesschau" "^From: tagesschau <[email protected]>$")

("Replies" "^\\(CC:\\|To:\\).*[email protected]*")

("EK" "^From:.*\\([email protected]\\|[email protected]\\).*")

("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 [email protected]$")

("Spam" "^Received: from link2buy.com")

("Spam" "^CC: .*[email protected]")

("Spam" "^X-Mailer-Version: 1.50 BETA")

("Uni" "^\\(CC:\\|To:\\).*[email protected]*")

("Inbox" "^\\(CC:\\|To:\\).*\\(my\ name\\|[email protected]\\|[email protected]\\)")

("Spam" "")))

5 寫消息

5.1 需要掌握的發送郵件和貼文章的基本指令都有哪些?

在 Group buffer 或者 Summery buffer 中按 `m' 可以開啟一個新的郵件;

按 `a' 開啟新文章,Group buffer 中按 `a' 需要填寫組名,Summery

buffer 中則不用。回複郵件時,用 `r' 沒有引文回複,用`R' 則引用原文。

跟貼(相應于 `r' 和 `R')為 `f' 和`F'。

寫有 "--text follows this line --" 行之上寫入頭資訊,其下寫内容。

寫完之後按 `C-c C-c' 來發送消息,想過一會兒再寫完,按 `C-c C-d' 保

存到草稿組,之後可以到那裡用 `D e' 繼續編輯。

5.2 寫消息時如何打開自動折行 (word-wrap) ?

~/.gnus 中這樣寫:

(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 "[email protected]")

(organization "Hamme net, kren mer och nimmi")

(signature-file "~/.signature")

("X-SampleHeader" "foobar")

(eval (setq some-variable "Foo bar")))))

其中的 ".*" 意思是這些設定為預設值,其後清單中的第一個元素的有效值

有signature,signature-file,organization,address,name 或者body。

屬性名也可以是字元串,這時,被作為郵件頭的名,其值被寫入貼子的頭中;

如果值為nil,該頭被去掉。也可以是 (eval (foo bar)) 形式,此時,将以

參數 bar 調用函數 foo 并且抛棄其結果。

5.4 可以根據組名來設定不同的 Form, Signature 等等嗎?

正是 posting styles 的能力所在。前面,我們用 ".*" 設定了對所有組的

預設值。你可以通過如 "^gmane" 的正規表達式來和其後的設定來設定投到

gmane 層下的文章,用 ".*binaries" 設定投到包含有 binaries 的組的帖

子。

也可以用一個将被求值的函數代替正規表達式,僅當傳回真時,相應設定有

效。兩個有用的候選函數是 message-news-p 和 message-mail-p,分别在發

文章和郵件時為真。

注意所有比對的項都會被應用,就是說,下面這個例子中,如果我發了一個

到gmane.mail.spam.spamassassin.generate 的文章,".*"中的設定、

"^gmane" 中的以及 message-mail-p 和 "^gmane\\.mail\\...."中的設定都

被應用。正因為如此,把一般性的規則放在上面,特别的放在下面。

(setq gnus-posting-styles

'((".*" ;;default

(name "Frank Schmitt")

(organization "Hamme net, kren mer och nimmi")

(signature-file "~/.signature") )

((message-news-p) ;;Usenet news?

(address "[email protected]")

("Reply-To" "[email protected]"))

((message-mail-p) ;;mail?

(address "[email protected]") )

("^gmane" ;;this is mail, too in fact

(address "[email protected]")

("Reply-To" nil) )

("^gmane.mail.spam.spamassassin.general$"

(eval (setq mail-envelope-from "[email protected]"))

(address "[email protected]")) ))

5.5 有沒有拼寫檢查器?甚至 on-the-fly 拼寫檢查?

你可以使用 Emacs 中的 ispell.el 來進行拼寫檢查。首先确定你已經安裝

了二者之一:ispell

(http://fmg-www.cs.ucla.edu/fmg-members/geoff/ispell.html) 或這

aspell (http://aspell.sourceforge.net/) 。其次需要ispell.el

(http://www.kdstevens.com/~stevens/ispell-page.html) 來進行

on-the-fly 拼寫檢查。 flyspell.el

(http://www-sop.inria.fr/mimosa/personnel/Manuel.Serrano/flyspell/flyspell.html).

Ispell.el 是 Gnus Emacs 的一部分,而且可以從 Emacs 的 package

system 中得到, flyspell.el 也是 Emacs 的一部分,而且是 XEmacs

text-modes package 中的一部分,可以從 package system 中得到。是以,

不需要你自己來手工安裝。

Ispell.el 假設你使用 ispell,如果你用的是 aspell,在你的 Emacs 配置

(~/.emacs) 檔案中這樣寫:

(setq ispell-program-name "aspell")

如果你想檢查你發出的消息,在你的 ~/.gnus 中這麼寫:

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

如果你喜歡 on-the-fly 拼寫檢查:

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

5.6 可以設定所投遞的組相應的字典嗎?

是的,~/.gnus 中差不多這樣:

(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 <[email protected]>"

在 message buffer 中 在 To: 或 Cc: 之後按你(所設定)的别名,接着空

格或标點,gnus 則會給你自動插入完全的位址。細節請參考 Message (不

是Gnus )手冊,"Mail Alliases"一節。

可是,你真正想要的可能是 Insidious Big Brother Database bbdb. 可以

從XEmacs 的 package system 或bbdb's homepage

(http://bbdb.sourceforge.net/) 得到。之後在~/.gnus 為 Gnus 啟動

bbdb:

(require 'bbdb)

(bbdb-initialize 'gnus 'message)

現在,你可能需要一個通用的 bbdb 配置,把這些放入 ~/.emacs 中:

(require 'bbdb)

;;If you don't live in Northern America, you should disable the

;;syntax check for telephone numbers by saying

(setq bbdb-north-american-phone-numbers-p nil)

;;Tell bbdb about your email address:

(setq bbdb-user-mail-names

(regexp-opt '("[email protected]"

"[email protected]")))

;;cycling while completing email addresses

(setq bbdb-complete-name-allow-cycling t)

;;No popup-buffers

(setq bbdb-use-pop-up nil)

你已經準備好了。`M-x bbdb RET RET' 打開一個顯示所有記錄的緩沖。

`c' 建立新記錄,`b' 搜尋,`C-o' 在某條記錄上添加新域。 Summary

buffer 中,如果想把某個發送者加入到 bbdb,按 `:'就可以。寫郵件時,

按 `TAB' 可以在已知的收件人裡循環。

5.8 有時候在 Article buffer 頂部有個小小的圖檔,是什麼?我發的文章如何加上?

那些圖檔稱為 X-Face,是一些 48*48 的黑白圖檔,被編碼為一行郵件頭

(header line),如果你也想加一個,需要把圖檔轉換X-Face。用一個圖檔處

理程式(比如 gimp),打開你想要的圖檔,剪切相應部分,将顔色降低為

1bit,改變大小到 48*48,另存為位圖(bitmap)。從this site

(ftp://ftp.cs.indiana.edu:/pub/faces/) 取來 compface 包,通過如下命

令,建立一個 X-face:

cat file.xbm | xbm2ikon |compface > file.face

cat ./file.face | sed 's/\\/\\\\/g' | sed 's/\"/\\\"/g' > ./file.face.quoted

如果不能使用 compface,還有另一個 X-face 轉換器:

http://www.dairiki.org/xface/. 如果在MS Windows 上,也可以用

WinFace 程式:http://www.xs4all.nl/~walterln/winface/. 然後隻需要

在 ~/.gnus 中告訴Gnus 在你的文章裡面加入 X-face:

(setq message-default-headers

(with-temp-buffer

(insert "X-Face: ")

(insert-file-contents "~/.xemacs/xface")

(buffer-string)))

5.9 在新聞討論區中,有時候想按 f 卻按了 r。當我在新聞討論區中的時候通過郵件回複

的時候,Gnus 能否警告一下?

放到 ~/.gnus:

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

不過,這是在 Gnus 5.10 中。如果你用的還是 5.8.8 或 5.9 試試這個:

(defadvice gnus-summary-reply (around reply-in-news activate)

(interactive)

(when (or (not (gnus-news-group-p gnus-newsgroup-name))

(y-or-n-p "Really reply? "))

ad-do-it))

5.10 如何讓 Gnus 不要産生 sender header?

Gnus 從 5.10.0 起,預設不再産生 sender header。對于舊版本的 Gnus,

在~/.gnus 中這樣:

(eval-after-load "message"

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

5.11 如何在本地儲存我發送的郵件和文章的複本?

通過設定變量 gnus-message-archive-group 來達到目的。可以設為一個保

留複本的組名的字串或如下所示,用一個函數來傳回所用的組名。

(setq gnus-message-archive-group

'((if (message-news-p)

"nnml:Send-News"

"nnml:Send-Mail")))

5.12 有人告訴我說,我的 Message-ID 不正确,為什麼,如何修改?

Message-ID 是你所發送的消息的唯一的标志符。為了使其唯一,Gnus 需要

知道用來放在 "@" 後的你的機器名。如果運作 Gnus 的機器的名字并不恰當,

你可以告訴 Gnus 用什麼名字:

(defun message-make-message-id()

(concat "<"(message-unique-id)"@yourmachine.yourdomain.tld>"))

如果你也不知道 "yourmachine.yourdomain.tld" 這個地方該放什麼。有幾

個辦法,問問你的供應商他是否允許你使用諸如

yourUserName.userfqdn.provider.net 的名字。或者到免費提供 FQDN 的地

方注冊一個,例如:

http://www.stura.tu-freiberg.de/~dlx/addfqdn.html。(可惜這個是德文

的,如果你知道那個類似的英文站點,給我丢個條。)

當然,也可以告訴 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 處理舊消息

6.1 如何把我的舊郵件引入 Gnus?

最簡單的是讓你原來的郵件程式把信件導出為 mbox 格式。多數 Unix 郵件

程式都可以做到,如果你來自 MS Windows 世界,或許能在這裡找到工具:

http://mbx2mbox.sourceforge.net/ 。

現在需要把 mbox 檔案引入 Gnus。是以,需要在 Group buffer 通過`G f

/path/file.mbox RET' 建立一個基于這個 mbox 檔案的 nndoc 組。 此時,你

可以隻讀通路你的郵件。如果想把這些放入通常的 Gnus 郵件組中,用`C-u

RET'進入剛剛建的 nndoc 組(這樣可以看到所有郵件),标記所有郵件`M P b',

`B c name.of.group RET',複制到某個郵件組,或者用`B r'通過

nnmail-split-methods (respool) 分類郵件。

6.2 如何存檔有趣的消息?

例如在 gnu.emacs.gnus 中,你偶然發現一個有趣的消息,想要存檔,有好

幾種方法。第一種,也是最簡單的,另存為檔案`O f'。但是,從 Gnus 通路

這樣的存檔檔案并不友善。把 Frank Haun <[email protected]> 的這個代

碼片斷放入 ~/.gnus:

(defun my-archive-article (&optional n)

"Copies one or more article(s) to a corresponding `nnml:' group, e.g.

`gnus.ding' goes to `nnml:1.gnus.ding'. And `nnml:List-gnus.ding' goes

to `nnml:1.List-gnus-ding'.

Use process marks or mark a region in the summary buffer to archive

more then one article."

(interactive "P")

(let ((archive-name

(format "nnml:1.%s"

(if (featurep 'xemacs)

(replace-in-string gnus-newsgroup-name "^.*:" "")

(replace-regexp-in-string "^.*:" "" gnus-newsgroup-name)))))

(gnus-summary-copy-article n archive-name)))

此時,可以在 summary buffer 中用 `M-x my-archive-article' 把光标處

的文章存檔到一個 nnml 組(當然,可以改為你想要的其他後端)。

當然,也可以使用緩沖:

(setq gnus-use-cache t)

這樣,你隻需設定 tick 或者 dormant 标記來儲存,在緩沖中設定已讀标記

可以删除(文章)。

6.3 如何搜尋特定的消息?

也是有幾種方法。Usenet 上的文章,最簡單的可能是通路

http://groups.google.com,如果在那兒找到了文章,顯示原始内容檢視

message-id,之後在 Summary buffer 中 `M-^ [email protected] RET'。

Gnus 5.10.0 之後Gnus 也有了一個 groups.google.com 的界面,Group

buffer 中 `G W' 來啟動。

另一種方法,對于 mail 和 news 組都有效,進入一個組中,用 Emacs 的标

準搜尋指令 `C-s',也可以檢視相應線索。如果想搜尋文章内容,不妨試試

`M-s'。還有 gnus-summary-limit-to-foo 系列的函數也可能有用。

你可以用 grep 搜尋你的本地郵件,但對于大的存檔可能即慢又不友善,

因為不能在 Gnus 中顯示找到的郵件。使用 nnir。nnir 是一個 swish-e 或

swish++ 之類的搜尋引擎的前端。你可以給你的郵件用那些搜尋引擎之一來

建立索引,借助 nnir 來搜尋郵件,産生一個暫時的存放被搜尋到的郵件的

組。如果挺起來很cool,取 nnir.el 自

ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/或

ftp://ftp.is.informatik.uni-duisburg.de/pub/src/emacs/。 使用方法

在這個檔案的開始處。

6.4 如何删除不想要的郵件?

你當然可以用 `#' 标記上不想要的檔案再 `B DEL' 永久删除。 你也可以

用 `B m nnml:trash-bin' 把它們放到一個可以随時删除的垃圾組。 但是,

這兩種都不是 Gnus 中建議的方法。

Gnus 中,我們讓郵件如同文章在新聞討論區伺服器上一樣過期。這意味着,在

summary buffer中,用 `E',告訴 Gnus 光标處這個消息過期的。當你離開

這個組的時候,Gnus 檢查所有的被标記為過期的消息,如果足夠 old(預設

一星期),則删除。

6.5 我想所有已讀消息都是過期的(至少一些組裡這樣),如何做?

如果你想所有已讀消息為過期的(例如,在有存檔的郵件清單組裡),兩個

選擇:auto-expire和total-expire。Auto-expire意味着,所有的沒有标記

并已經閱讀了的郵件标記為過期的,Gnus 在你每次閱讀一個消息的時候,為

你按一下`E'。Total-expire稍有不同,所有的有已讀标記的消息标記為過期。

使用 auto-expire,在組參數(Group parameter)裡設定上 auto-expire

(summary buffer 中在這個組上按 `G c')。Total-expire 同樣。

選擇哪個,隻是你的喜好。Auto-expire更快些,但不能配合自适應賦分

(adaptive scoring),如果需要,則要用 total-expire。

如果自動或全部過期已經啟用,卻需要取消某個消息過期标記,通過設定一

個tick 标記(`u')或 dorman 标記(`?')。如果用的是auto-expire,也

可以通過設已讀标記(`d')。

6.6 我不想删除已過期的郵件,隻想轉移到另一個組。

在 ~/.gnus 中如下寫:

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

(如果想改變 nnmail-expiry-target 基于組的,參看問題“如何取消一些(例

如郵件的)組,或為這些組設定其他變量?”)

7 撥号時用 Gnus

7.1 我這裡不是始終線上的,如何使得我的連接配接時間最小?

基本上,兩種選擇:或者使用 Gnus Agent(見下文),或者安裝可以取新聞

和郵件到本地磁盤的程式,讓 Gnus 在本地讀取。

如果想用第二種方法,需要一個能夠取的新聞并能夠提供給 Gnus 的程式,

一個類似的郵件程式,而且能夠在你連線的時候發送你的消息。

先來說說 Unix 系統:新聞部分,最簡單的辦法是一個小的 nntp 伺服器,

比如:Leafnode (http://www.leafnode.org/) 或sn

(http://infa.abo.fi/~patrik/sn/),當然,也可以安裝一個功能齊全的新

聞伺服器,比如: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 (或者其他任何郵件和/或新聞用戶端)。它也包括一個

smtp 伺服器,能夠從 Gnus 接收郵件。

7.2 那麼,Gnus Agent 如何呢?

Gnus Agent 是 Gnus 的一部分,可以把新聞和郵件取到本地,以後離線閱讀。

它是像 Fort Agent 一樣的離線新聞討論區用戶端的模仿。如果你用的是 5.8.8

或 5.9,在 ~/.gnus 中加下面這行,如果是 5.10.0,這已經是預設的:

(setq gnus-agent t)

選擇哪些伺服器可以被存儲到本地。在 Group buffer 用 `^' 打開Server

buffer,移動光标選中一個伺服器。最後,用代理管理這個伺服器,按`J

a'。如果弄錯了,或者改變主意了,用 `J r' 來撤銷。按 'q' 回到 Group

buffer。下次進入一個代理管理的伺服器中的組時,消息頭将被存儲到本地

磁盤,再下次再進這個組時,将從這裡讀取。

7.3 如果也想把消息儲存在本地呢?

你可以讓代理自動的取得滿足一定謂詞條件的文章,這些在一個特别的組裡

面完成,可以從 Group buffer 中通過 `J c' 轉到。哪個謂詞合适,如何做

到等内容請參考文檔。

還有,可以手動告訴 Gnus 儲存那個文章。兩種方法:其一,在 Summary

buffer 中,在需要儲存的文章上做 process 标記(`#')後,按`J s'。其

二,還是在 Summary buffer 中設定 downloadable 标記 (%)(用`@')後,

按 `J u'。有什麼不同呢?process 标記在你退出這個組的時候就沒了,而

downloadable 标記是永久的。你實際上可以在幾個組裡面設定

downloadable 标記,然後用取片斷(Group buffer 中'J s' )取得所有那

些郵件。唯一的缺點,取片斷要取得每個被選中的組的所有消息頭。依其組

的大小,第一次或許會很長時間。

7.4 離線時如何不讓 Gnus 發送郵件/文章?

你所需做的隻是要告訴 Gnus 你什麼時候線上(plugged)和不線上

(unplugged),其他的都是自動的。Group buffer 中用 `J j' 轉換

plugged/unplugged 狀态。開始 Gnus 時,用 `M-x gnus-unplugged' 代替

`M-x gnus'。 注意,Gnus agent 需要已啟用。

8 需要幫助

8.1 如何在 Emacs 中找到資訊和幫助?

首先,應該是 Gnus 手冊,從 `C-h i d m Gnus RET' 開始。完全的搜尋,

用 `s'。其次,通用的以 C-h 開始的 Emacs 幫助指令,按`C-h ? ?' 可

以得到一個指令清單及其含義。最後,`M-x apropos-command' 可以從所有

指令中搜尋,`M-x apropos'搜尋綁定的變量。

8.2 如何在 Gnus 手冊中找到某某内容(例如,附件,PGP,MIME……),沒有文檔?

不是隻有 Gnus 手冊,還有 message 手冊,emacs-mime 手冊,sieve 手冊

以及pgg 手冊。這些都作為 Gnus 的一部分一并釋出,因為不是 Gnus 的核

心部分,是以都被放在不同的文檔中,不過,你也應該看看這些文檔。

8.3 應該知道哪些網站?

兩個最重要的是:official Gnus website (http://www.gnus.org)。 以及

其姐妹站:my.gnus.org (MGO) (http://my.gnus.org)。這裡放着lisp 片斷

的存檔,howtos,一個(并未完成)的tutorial,和這個faq。

告訴我其它有趣的站點。

8.4 有那些郵件清單和新聞討論區呢?

新聞討論區 gnu.emacs.gnus 讨論一般問題,ding 郵件清單([email protected]),

讨論 Gnus 的開發。你可以通過 nntp 閱讀這個清單,在 news.gnus.org 上

的gnus.ding 組。

如果你想呆在 big8 中,news.software.newssreaders中也有 Gnus 使用者

(但是,上面的組裡面得到有用幫助的機會更多)。如果你用德語,還有

de.comm.software.gnus。

8.5 向什麼地方報告bug?

`M-x gnus-bug',開啟一個到gnus bug mailing list

(mailto:[email protected].org) 的消息,已經包含有你的環境資訊,使你報告

bug 變得容易些。。

8.6 如果需要一個實時的幫助,如何得到?

把你的 IRC 用戶端設定到 irc.my.gnus.org 上的 #mygnus 頻道。不要擔心

那些說德語的人,當有人從别處來他們都願意并且能夠轉為英語。

9 調整 Gnus

9.1 開始 Gnus,真的很慢,如何快些?

原因可能是 Gnus 讀取它的 active 檔案的方式,參考 Gnus 手冊中 "The

Active File" 一節,你可能能夠加快這一過程。還有個方法,編譯你的~

/.gnus (`M-x byte-compile-file RET ~/.gnus RET')。還有,如果你在

.gnus 中使用了 require 語句,可以用 eval-after-load 來替換,此時這

些并不在啟動時設定,而是在加載相應的檔案時。比如,你的 ~/.gnus 中有:

(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)))

隻在需要的時候加載。

9.2 如何加快進入某個組的速度?

速度的殺手是設定了變量 gnus-fetch-old-headers 為除 nil 以外的任何值。

如果速度是個問題,不要這麼設定。加快 summary 可以通過在 ~/.gnus 文

件底部寫這行:

(gnus-compile)

這使得 gnus 編譯一些東西,比如 gnus-summary-line-format。然後,你還

可以減少 gc-cons-threshold 的值:

(setq gc-cons-threshold 3500000)

如果不介意 CJK 字元的寬度,或者用 Gnus 5.10.0 和新的 GNU Emacs:

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

(感謝Jesper後兩個建議)。如果你是仍然使用 5.8.8 或 5.9 的,并且體驗

到了産生 summary buffer 時速度的問題,還是更新到 5.10 吧,因為在這

個上面卻有一些改進。

9.3 發送郵件變得越來越慢,怎麼了?

可能因為你通過 gnus-message-archive-group 讓 Gnus 存檔消息了。 試

試用一個 nnml 組代替存檔組,這樣就會回到正常速度的。

術語表

~/.gnus

~/.gnus 是你的 Gnus 的配置檔案,你可以稱其為 ~/.gnus.el,或其

他的名字。

後端(Back End)

Gnus 的術語中,一個後端就是一個虛拟伺服器,介于 Gnus 核心和實

際的提供給Gnus 标準的界面函數之,如 "get message" 或 "get

Header" 等的NNTP, POP3, IMAP 或任何伺服器之間的一層。。

Emacs

這份 FAQ 中所提到的 Emacs,都指 GNU Emacs 或 XEmacs.

消息(Message)

這份 FAQ 中的一個消息(message)意味着一個郵件或者發送(張貼)到

Usenet 新聞討論區上或某些後端的文章,無所謂什麼後端。

MUA

MUA 是 Mail User Agent 的縮寫,用來讀寫郵件的程式。

NUA

NUA 是 News User Agent 的縮寫,用來讀寫新聞討論區的程式。