HOWTO:The Linux Mail User

作者: John [MAILTO] [email protected]

最新版本:22 February

轉為 Wiki: Ping (ping 'at' pingyeh 'dot' net), 2003 年 11 月 27 日


本文介紹Linux下的電子郵件 (email) 世界。主要面向通過ISP聯網的家庭和小型商用機器的用戶級應用和典型配置。如果你計劃通過電子郵件在本地或遠程通訊的話,你就需要閱讀本文。如果你不需要與其它本地或外部世界用戶交換電子郵件的話,那麼你就很可能確實



  1. 概述
    1. 本文的新版本
    2. 電子郵件程序要求的硬件
    3. 電子郵件程序的軟件來源
  2. 郵件用戶代理(MUA)
    1. 設置你的郵件書寫器
    2. mutt
    3. elm
    4. pine
    5. Netscape
    6. Emacs rmail/smail 和 vm.
    7. BSD mail
    8. 其它用戶代理
  3. 高級主題
    1. 別名
    2. 轉寄
    3. 自動回復
    4. 郵件列表
    5. 郵件過濾
    6. Coping with spam
  4. 其它信息資源
    1. USENET
    2. 書籍
    3. 新聞期刊
    4. Where NOT to look for help
  5. 每天重復性的郵件處理工作
    1. 回復
    2. 版權信息
    3. Standard Disclaimer
    4. 感謝

1. 概述

本文的目的在於解釋電子郵件是如何工作的,並且回答一些在Linux下有關電子郵件軟件的經常提出的問題。

現代Linux發行版本都提供一個預配置好、可使用的電子郵件系統,通常是 sendmail-v8 。本文將假設你已經具備這個系統以及可正常工作的Internet連接。

(要得到關於如何配置 PPP 或 SLIP 到一個 ISP 的有關信息,請查閱 [WWW] ISP Hookup HOWTO 。)

因此,不象 Vince Skahan's 1.x 版本,本文聚焦在用戶實現和構造上。刪除了許多關於 UUCP、IDA 等許多技術細節。

1.1. 本文的新版本

本HOWTO將每月一次發表在新聞組 [WWW] comp.os.linux.answers 你也可以在 [WWW] http://metalab.unc.edu/LDP/HOWTO/Mail-User-HOWTO.html 查閱本HOWTO的最新版本。

1.2. 電子郵件程序要求的硬件

在Linux下的郵件系統並沒有特殊的硬件要求。如果你擁有連接到Internet的必需硬件,這些已足夠支持郵件系統運行。

1.3. 電子郵件程序的軟件來源

你所需要的電子郵件系統軟件很可能已經預安裝在你的Linux發行版本中。需要升級版本的話,可以到 [WWW] Metalab LinuxArchive ,特別是 [WWW] mail subdirectory

2. 郵件用戶代理(MUA)

本節包含關於用戶代理的信息,也就是用戶直接使用的軟件。這個軟件依賴於 Mail Administrator's HOWTO (該文中還講述了用戶代理配置和故障解決技巧)中所描述的傳送代理 (MTA) 。

2.1. 設置你的郵件書寫器

郵件用戶代理調用一些編輯器來編寫郵件。在這裡編輯器是一個缺省變量。按照 unix 的早期約定,如果環境變量 VISUAL 存在,則使用其所指定的編輯器為首選編輯器,否則使用 EDITOR 環境變量所指定的編輯器。

常見的 EDITOR 的值包括 'vi' 和 'emacs'。但如果你象我一樣,總是運行 Emacs 工作的話,最有效的方法是 將 EDITOR 設置為 'emacsclient'。將下面的代碼加入你的 .emacs 文件中。

當 emacsclient 軟件開始運行時,它總是試圖建立與你已經運行的 Emacs 實例之間的通訊聯系, 並且響應 Emacs 編輯的郵件臨時文件。 這樣,當你的郵件系統調用編輯器時,你的 Emacs 中會彈出一個郵件編寫窗口。

當你編寫完郵件準備發送時,鍵入 C-x # 。 郵件緩沖區將從你的顯示區消失,你的郵件系統所調用的 emacsclient 將返回,並將控制權交還給郵件系統。

一次打開多個 emacsclient 實例是可行的,不會弄亂 Emacs。 但是,當啟動 emacsclient 實例後再運行另一個 Emacs 將會弄亂 emacsclient 。如果發生了這種情況,關閉所有的 Emacs 實例,保証隻啟動一個 Emacs。

2.2. mutt

這是我正在使用並推薦的。[WWW] mutt 繼承 elm 並缺省使用相似的命令,但更強大和容易配置。

它可以作為 POP3 或 IMAP 的客戶端,並且對 MIME 和 PGP 有極好的支持。

Mutt 遵從 EDITOR/VISUAL 約定。

2.3. elm

Elm 是第一個現代、屏幕驅動的 Unix 郵件系統,但已經停止開發並已被 Mutt 所取代。 一些版本的 elm 內置對 POP3 的支持。要得到更多的信息,請參考 [WWW] Metalab mailuser agents directory

elm 不支持 PGP。有關於 PGP 的補丁,但 Mutt 的 PGP 支持更高級。如果你想使用 PGP 的話,我推薦 Mutt。

Elm 遵從 EDITOR/VISUAL 約定。

2.4. pine

[WWW] Pine 是為初學者設計的用戶代理;它包括新聞閱讀能力和內置的 IMAP 支持。許多人不喜歡它,我覺得 它的命令集太少,可置配置性較差,自帶的編輯器很難使用。但是,它對 IMAP 的支持極好。

Pine 遵從 EDITOR/VISUAL 約定。

2.5. Netscape

Netscape內置對 POP3 和 IMAP 的支持,可以作為一個郵件用戶代理使用。 但我並不推薦它,因為它並不是專門作為 MUA 而設計的,因此不象一個真正的 MUA 可以提供更多的服務(比如別名和 PGP 支持)。

Netscape 提供一個自帶的小型編輯器。

2.6. Emacs rmail/smail 和 vm.

Emacs 有一個能發送的郵件的模式稱為 smail,以及一個能接收閱讀郵件的模式稱為 rmail。 當你在完全的 Emacs 環境中書寫郵件時, smail 模式是非常有用的(但請在本文的其它地方 查閱關於 emacsclient 的討論)。

另一方面,rmail 模式並不值得推薦。每一次運行 rmail 模式,它總是將你的收件箱轉換成 BABYL 格式;通常的郵件工具將因此而無法工作。(一旦出現這種情況,就在 Emacs 命令行鍵入 M-x unrmail )。

有一個支持 emacs 的郵件閱讀器 '[WWW] vm',可以讀寫標準的 V7 收件箱。它並沒有隨 GNU Emacs 一起發布 。

Emacs smail/rmail/vm 並不遵從 EDITOR/VISUAL 約定。作為替代,你可以使用內嵌的 Emacs。

2.7. BSD mail

如果你在 Linux 或其它標準 Unix 的 shell 中簡單鍵入 'mail',你就調用了 BSD Mail 程序的某個版本。它最初是為終端方式設計的命令行驅動界面。現在它僅因為歷史的原因而存在。

BSD Mail 遵從 EDITOR/VISUAL 約定。

2.8. 其它用戶代理

以下是一些已知的可以在 Linux 下運行的郵件用戶代理程序。你可以使用 archie 來找到它們...

我對 mh 或 mush 都了解不多,無法說得更詳細些。它們都有相當復雜的界面,是為老手設計的。

3. 高級主題

3.1. 別名

別名是用來設置一個假地址將郵件轉投到另一個郵件地址。有兩種別名:MUA 別名和 MTA 別名。

MUA 別名是在你的 MUA 中設置的個人地址速記。其他用戶不能看到和使用這個別名。舉例如下:

在你的 mutt 配置文件中如上書寫。 這將告訴 mutt ,當它看到地址行中出現 'esr' 時將其看作 '[MAILTO] [email protected]'。或者當你鍵入 'mutt esr' 時,地址自動展開填寫在 'to' 行。

MTA 別名是你的 MTA 擴展,可以被本地或遠程的所有人使用。 要創建 MTA 別名你必須修改你的系統文件,通常(但不總)是 /etc/aliases (具體位置與你的 MTA 有關)。 你可以查閱一下你系統上的 /etc/aliases ,這將對你理解大有幫助;這個文件可以包含許多標準別名比如 'postmaster'。

你的 MTA 可能也允許別名的目標是一個文件名,這將被視為一個郵件將附加在其中的收件箱(這種方式對存檔郵件非常有用)。也可能允許別名的目標是一個程序,在這種方式下送往別名的郵件將作為該程序實例的標準輸入。

3.2. 轉寄

MTA 別名的設置通常要求具備管理員權限。對普通郵件用戶而言值得欣喜的是可以使用轉寄個人郵件而不需要管理員權限。

為實現這一功能,許多 MTA 按照 sendmail 標準在你的主目錄下查找 .forward 文件。 這個文件的內容被解釋成別名的目標,可以接收你的所有郵件。最常用的是轉寄你的郵件到另一台機器。

3.3. 自動回復

.forward 的另一個常用功能是轉送你的郵件到一個 'vacation' 程序。這個程序讀入郵件並自動生成已錄制好的回復;如果你正在渡假,在預定的日期內無法返回,可以使用該功能自動回復郵件。

沒有一個標準的自動回復程序。有兩個原因:一是這樣一個程序很容易用帶過濾規則的 shellscript 編寫(見下例);二是自動回復程序在郵件列表中有壞的相互作用。

在設置自動回復前,你需要暫時退訂所有的郵件列表;否則你所訂閱的郵件列表將被你的自動回復郵件所淹沒。這是一種非常粗魯的行為,在你渡假回來時有你好受的。

3.4. 郵件列表

郵件列表是一種發送郵件給不止一個人的假地址。

在最簡單的格式中,郵件地址隻是一個有多個接收地址的 MTA 別名。 一些 smail 郵件列表就是用這種方式維護的。Sendmail 則使用 /etc/aliases,在別名的目標地址中放置郵件列表地址文件。就象以下所示:

這種方式帶來的優勢是 admin-list 文件可以放在沒有權限用戶的任何地方。其它一些 MTA 也使用相似的方法。

這種簡單的列表通常稱作 'mail reflectors'。這種方式有兩個問題。一是因錯誤引起的返回信息將傳給所有的用戶。另一個是所有的訂閱和退訂都必須由郵件列表管理者來手工完成。

有一類被稱為 mailing list manager 的軟件可以解決這些問題。它們最重要的功能就是允許郵件列表用戶訂閱和退訂而不用去維護列表。

郵件列表管理器保持自身的用戶列表信息,通過 /etc/aliases 中的程序別名與 MTA 聯結在一起。 例如,如果以上管理列表通過 sendmail 系統中一個被稱為 SmartList 的郵件列表管理器時,/etc/aliases 文件中的部分內容可能如下所示:

注意這隻是別名的一部分。按約定真實的郵件列表都有一個 request address 以供用戶訂閱和退訂。往郵件列表的主地址發送訂閱或退訂請求被認為是粗魯和無知的行為,千萬可別這樣做!

request address 不僅僅提供訂閱/退訂功能。它可以響應幫助請求,允許你查詢有誰在列表中,或者讓你自動訪問列表檔案。它還允許列表管理者限制對已知用戶的投遞,第一次投遞時設置自動訂閱的非成員列表,或設置不同的安全選項。

Mailing-list managers differ primarily in the design and range of these secondary features.

很不幸,郵件列表的請示命令沒有標準化。有的期待命令在主題行,有的則忽略主題行而期待命令在郵件內容中。你必須注意第一次訂閱時返回的郵件信息;好的習慣是保存這些郵件到“訂閱收件箱”中以供以後參考。

最著名的郵件列表管理器有 majordomo, listserv, listproc 和 smartlist。majordomo 是最流行的。相關信息可以參考 [WWW] list

關於郵件列表管理器更多的信息,參考 [WWW] List-Managers Mailing List

3.5. 郵件過濾

mail filter 是一個在你與本地投遞代理之間的程序,在你看到郵件之前自動發送或拒絕郵件。

郵件過濾有許多用法。最重要的是廣告過濾,根據主題或發送者投遞郵件到多個收件箱,自動回復郵件。

典型地,你可以通過在你的 .forward 文件中放置一個過濾程序別名並且寫一個過濾規則的文件來設置郵件過濾。過濾規則文件的格式和位置在不同的過濾程序之間是不同的。

在 Chris Lewis's Email Software Survey 的 [WWW] part 3 有關於三個最主要的郵件過濾程序(procmail, mailagent 和 deliver)的特點要描述。其中最流行的是 procmail,盡管它的規則句法非常難用。procmail 在 Linux 中普遍都有提供,並且作為系統本地投遞代理使用。

3.6. Coping with spam

Spam 有時被稱為 'UCE' (Unsolicited Commercial Email) 或 'UBE' (Unsolicited Bulk Email)。根據名字的暗示,你應該能明白指的是討厭的廣告郵件。(術語 'spam' 來自於一個 Monty Python 的飛行馬戲團笑話,一群海盜不停地唱著 Spam spam spam ...)

許多 spam 由金字塔型的誘惑、色情描寫或者是惱人的推銷組成。少數 spam (比如快速賺錢等)已經相當穩固。Spam 趨向於冗長和無知。這是時間的浪費和網絡帶寬的巨大消費。

spam 在1997年中期相當流行,其後有所減弱,但仍然是一個相當討厭的事情。 如果你正被 spam 所淹沒,請查閱 [WWW] Fight Spam on the Internet![WWW] Death To Spam! 主頁有關於阻止 spam 相當有效方法的介紹。

4. 其它信息資源

4.1. USENET

有許多關於電子郵件技術討論的新聞組:

4.2. 書籍

4.3. 新聞期刊

值得提及的是 Chris Lewis的 periodic posting on unix e-mail software,可以在 [WWW] ftp://rtfm.mit.edu/pub/usenet/comp.mail.misc 找名字象 。 有一個 HTML 版本在 [WWW] http://www.faqs.org/faqs/mail/setup/unix/

4.4. Where NOT to look for help

相對於其它的 Unix 而言,Linux下關於配置和運行郵件系統沒有什麼特殊的地方。因此,你的確沒有必要在 comp.os.linux.* 新聞組發布關於普通郵件相關的問題。

除非你發布的是真正 Linux 相關問題 (例如, 'please tell me what routers are already compiled into the SLS1.03 version of smail3.1.28'),你可以在以上提到的新聞組之一發布你的問題。

讓我重復一遍。

沒有理由在 comp.os.linux 層次上的新聞組發布任何郵件相關的問題。在 comp.mail.* 層次上的新聞組有關於你所有問題的答案。

如果你在 comp.os.linux.* 上發布非 Linux 相關的問題,你將在錯誤的地方等待幫助。電子郵件專家都在以上提到的新聞組中,而通常不在 Linux 新聞組中。

在 Linux 層次中發布非 Linux 相關問題浪費你和所有人的時間...並且通常都會耽誤你解決你的問題。

5. 每天重復性的郵件處理工作

5.1. 回復

(本節由 Vince 編寫,但我的觀點與他一致)

我喜歡關於本文的任何肯定的或否定的回復。如果你發現錯誤或覺得本文冗長請直接聯系我。

我會看所有收到的郵件,但不保証一定回復,這取決於空閒的時間、請求的價值以及每天的血壓 :-)

過多的打擾將被送往 /dev/null 。

In particular, the Linux filesystem standard for pathnames is an evolving thing. What's in this document is there for illustration only based on the current standard at the time that part of the document was written and in the paths used in the distributions or `kits' I've personally seen. Please consult your particular Linux distribution(s) for the paths they use.

Feedback concerning the actual format of the document should go to the HOWTO coordinator - mail to [WWW] [email protected]).

5.2. 版權信息

The Mail-HOWTO is copyrighted (c)1999 Eric S. Raymond. Copyright is retained for the purpose of enforcing the Linux Documentation Project license terms.

A verbatim copy may be reproduced or distributed in any medium physical or electronic without permission of the author. Translations are similarly permitted without express permission if it includes a notice on who translated it.

Short quotes may be used without prior consent by the author. Derivative work and partial distributions of the Mail-HOWTO must be accompanied with either a verbatim copy of this file or a pointer to the verbatim copy.

Commercial redistribution is allowed and encouraged; however, the maintainer would appreciate being notified of any such distributions (as a courtesy).

In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents.

We further want that all information provided in the HOWTOS is disseminated. If you have questions, please contact the Linux HOWTO coordinator, at [MAILTO] [email protected].

5.3. Standard Disclaimer

Of course, we disavow any potential liability for the contents of this document. Use of the concepts, examples, and/or other content of this document is entirely at your own risk.

5.4. 感謝

This was originally authored by Vince Skahan. I have rewritten it for the modern ISP-centric world in which UUCP is little more than a memory.

In May 1999, the name was changed fromThe Linux Electronic Mail HOWT to avoid a collision with Guylhem Aznar's Mail HOWTO, which will become the Mail Administrator HOWTO.

last edited 2004-12-25 08:45:56 by PingYeh