The Linux Mail User HOWTO 作者: John [1]esr@thyrsus.com 译者: 苏江文 [2]softsprite@yeah.net v2.2, 07 May 1999 翻译日期: 9 Feb 2000 _________________________________________________________________ 本文介绍Linux下的电子邮件 (email) 世界。主要面向通过ISP联网的家庭和小型 商用机器的用户级应用和典型配置。如果你计划通过电子邮件在本地或远程通讯 的话,你就需要阅读本文。如果你不需要与其它本地或外部世界用户交换电子邮 件的话,那麽你就很可能确实 不 需要阅读本文。要得到关於配置和管理邮件的 信息,请阅读Mail Administrator HOWTO。 _________________________________________________________________ 1. 概述 * 1.1 本文的新版本 * 1.2 电子邮件程序要求的硬件 * 1.3 电子邮件程序的软件来源 2. 邮件用户代理(MUA) * 2.1 设置你的邮件书写器 * 2.2 mutt * 2.3 elm * 2.4 pine * 2.5 Netscape * 2.6 Emacs rmail/smail 和 vm. * 2.7 BSD mail * 2.8 其它用户代理 3. 高级主题 * 3.1 别名 * 3.2 转寄 * 3.3 自动回复 * 3.4 邮件列表 * 3.5 邮件过滤 * 3.6 Coping with spam 4. 其它信息资源 * 4.1 USENET * 4.2 书籍 * 4.3 新闻期刊 * 4.4 Where NOT to look for help 5. 每天重复性的邮件处理工作 * 5.1 回复 * 5.2 版权信息 * 5.3 Standard Disclaimer * 5.4 感谢 _________________________________________________________________ 1. 概述 本文的目的在於解释电子邮件是如何工作的,并且回答一些在Linux下有关电子邮 件软件的经常提出的问题。 现代Linux发行版本都提供一个预配置好、可使用的电子邮件系统,通常是 sendmail-v8 。本文将假设你已经具备这个系统以及可正常工作的Internet连接 。 (要得到关於如何配置 PPP 或 SLIP 到一个 ISP 的有关信息,请查阅 [3]ISP Hookup HOWTO 。) 因此,不象 Vince Skahan's 1.x 版本,本文聚焦在用户实现和构造上。删除了 许多关於 UUCP、IDA 等许多技术细节。 1.1 本文的新版本 本HOWTO将每月一次发表在新闻组 [4]comp.os.linux.answers 你也可以在 [5]http://metalab.unc.edu/LDP/HOWTO/Mail-User-HOWTO.html 查阅本HOWTO的 最新版本。 1.2 电子邮件程序要求的硬件 在Linux下的邮件系统并没有特殊的硬件要求。如果你拥有连接到Internet的必需 硬件,这些已足够支持邮件系统运行。 1.3 电子邮件程序的软件来源 你所需要的电子邮件系统软件很可能已经预安装在你的Linux发行版本中。需要升 级版本的话,可以到 [6]Metalab LinuxArchive ,特别是 [7]mail subdirectory。 2. 邮件用户代理(MUA) 本节包含关於用户代理的信息,也就是用户直接使用的软件。这个软件依赖於 Mail Administrator's HOWTO (该文中还讲述了用户代理配置和故障解决技巧)中 所描述的传送代理 (MTA) 。 2.1 设置你的邮件书写器 邮件用户代理调用一些编辑器来编写邮件。在这里编辑器是一个缺省变量。按照 unix 的早期约定,如果环境变量 VISUAL 存在,则使用其所指定的编辑器为首选 编辑器,否则使用 EDITOR 环境变量所指定的编辑器。 常见的 EDITOR 的值包括 'vi' 和 'emacs'。但如果你象我一样,总是运行 Emacs 工作的话,最有效的方法是 将 EDITOR 设置为 'emacsclient'。将下面的 代码加入你的 .emacs 文件中。 _________________________________________________________________ (autoload 'server-edit "server" nil t) (server-edit) _________________________________________________________________ 当 emacsclient 软件开始运行时,它总是试图建立与你已经运行的 Emacs 实例 之间的通讯联系, 并且响应 Emacs 编辑的邮件临时文件。 这样,当你的邮件系 统调用编辑器时,你的 Emacs 中会弹出一个邮件编写窗口。 当你编写完邮件准备发送时,键入 C-x # 。 邮件缓冲区将从你的显示区消失, 你的邮件系统所调用的 emacsclient 将返回,并将控制权交还给邮件系统。 一次打开多个 emacsclient 实例是可行的,不会弄乱 Emacs。 但是,当启动 emacsclient 实例後再运行另一个 Emacs 将会弄乱 emacsclient 。如果发生了 这种情况,关闭所有的 Emacs 实例,保证只启动一个 Emacs。 2.2 mutt 这是我正在使用并推荐的。mutt 继承 elm 并缺省使用相似的命令,但更强大和 容易配置。 它可以作为 POP3 或 IMAP 的客户端,并且对 MIME 和 PGP 有极好的支持 。Mutt 的主页在 [8]http://www.mutt.org。 Mutt 遵从 EDITOR/VISUAL 约定。 2.3 elm Elm 是第一个现代、屏幕驱动的 Unix 邮件系统,但已经停止开发并已被 Mutt 所取代。 一些版本的 elm 内置对 POP3 的支持。要得到更多的信息,请参考 [9]Metalab mailuser agents directory。 elm 不支持 PGP。有关於 PGP 的补丁,但 Mutt 的 PGP 支持更高级。如果你想 使用 PGP 的话,我推荐 Mutt。 Elm 遵从 EDITOR/VISUAL 约定。 2.4 pine Pine 是为初学者设计的用户代理;它包括新闻阅读能力和内置的 IMAP 支持。许 多人不喜欢它,我觉得 它的命令集太少,可置配置性较差,自带的编辑器很难使 用。但是,它对 IMAP 的支持极好。如果你想得到 它的话,可以到 [10]http://www.washington.edu/pine。 Pine 遵从 EDITOR/VISUAL 约定。 2.5 Netscape Netscape内置对 POP3 和 IMAP 的支持,可以作为一个邮件用户代理使用。 但我 并不推荐它,因为它并不是专门作为 MUA 而设计的,因此不象一个真正的 MUA 可以提供更多的服务(比如别名和 PGP 支持)。 Netscape 提供一个自带的小型编辑器。 2.6 Emacs rmail/smail 和 vm. Emacs 有一个能发送的邮件的模式称为 smail,以及一个能接收阅读邮件的模式 称为 rmail。 当你在完全的 Emacs 环境中书写邮件时, smail 模式是非常有用 的(但请在本文的其它地方 查阅关於 [11]emacsclient 的讨论)。 另一方面,rmail 模式并不值得推荐。每一次运行 rmail 模式,它总是将你的收 件箱转换成 BABYL 格式;通常的邮件工具将因此而无法工作。(一旦出现这种情 况,就在 Emacs 命令行键入 M-x unrmail )。 有一个支持 emacs 的邮件阅读器 'vm',可以读写标准的 V7 收件箱。它并没有 随 GNU Emacs 一起发布,但你可以访问它的主页 [12]http://www.wonderworks.com/vm/。 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 来找到它们... * mush - mail user's shell,在邮件过滤和批处理方面功能强劲 * mh - mail handler 我对 mh 或 mush 都了解不多,无法说得更详细些。它们都有相当复杂的界面, 是为老手设计的。 3. 高级主题 3.1 别名 别名是用来设置一个假地址将邮件转投到另一个邮件地址。有两种别名:MUA 别 名和 MTA 别名。 MUA 别名是在你的 MUA 中设置的个人地址速记。其他用户不能看到和使用这个别 名。举例如下: _________________________________________________________________ alias esr Eric S. Raymond _________________________________________________________________ 在你的 mutt 配置文件中如上书写。 这将告诉 mutt ,当它看到地址行中出现 'esr' 时将其看作 'esr@thyrsus.com'。或者当你键入 '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: ":include:/usr/home/admin/admin-list" _________________________________________________________________ 这种方式带来的优势是 admin-list 文件可以放在没有权限用户的任何地方。其 它一些 MTA 也使用相似的方法。 这种简单的列表通常称作 'mail reflectors'。这种方式有两个问题。一是因错 误引起的返回信息将传给所有的用户。另一个是所有的订阅和退订都必须由邮件 列表管理者来手工完成。 有一类被称为 mailing list manager 的软件可以解决这些问题。它们最重要的 功能就是允许邮件列表用户订阅和退订而不用去维护列表。 邮件列表管理器保持自身的用户列表信息,通过 /etc/aliases 中的程序别名与 MTA 联结在一起。 例如,如果以上管理列表通过 sendmail 系统中一个被称为 SmartList 的邮件列表管理器时,/etc/aliases 文件中的部分内容可能如下所示 : _________________________________________________________________ admin-list: "|/usr/home/smartlist/bin/flist admin-list" admin-list-request: "|/usr/home/smartlist/bin/flist admin-list-request" _________________________________________________________________ 注意这只是别名的一部分。按约定真实的邮件列表都有一个 request address 以 供用户订阅和退订。往邮件列表的主地址发送订阅或退订请求被认为是粗鲁和无 知的行为,千万可别这样做! request address 不仅仅提供订阅/退订功能。它可以响应帮助请求,允许你查询 有谁在列表中,或者让你自动访问列表档案。它还允许列表管理者限制对已知用 户的投递,第一次投递时设置自动订阅的非成员列表,或设置不同的安全选项。 Mailing-list managers differ primarily in the design and range of these secondary features. 很不幸,邮件列表的请示命令没有标准化。有的期待命令在主题行,有的则忽略 主题行而期待命令在邮件内容中。你必须注意第一次订阅时返回的邮件信息;好 的习惯是保存这些邮件到“订阅收件箱”中以供以後参考。 最著名的邮件列表管理器有 majordomo, listserv, listproc 和 smartlist 。majordomo 是最流行的。相关信息可以参考 [13]list 。 关於邮件列表管理器更多的信息,参考 [14]List-Managers Mailing List, 3.5 邮件过滤 mail filter 是一个在你与本地投递代理之间的程序,在你看到邮件之前自动发 送或拒绝邮件。 邮件过滤有许多用法。最重要的是广告过滤,根据主题或发送者投递邮件到多个 收件箱,自动回复邮件。 典型地,你可以通过在你的 .forward 文件中放置一个过滤程序别名并且写一个 过滤规则的文件来设置邮件过滤。过滤规则文件的格式和位置在不同的过滤程序 之间是不同的。 在 Chris Lewis's Email Software Survey 的 [15]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 所淹没,请查阅 [16]Fight Spam on the Internet!。 [17]Death To Spam! 主页有关於阻止 spam 相当有效方法的介绍。 4. 其它信息资源 4.1 USENET 有许多关於电子邮件技术讨论的新闻组: * [18]comp.mail.elm the ELM mail system. * [19]comp.mail.mh The Rand Message Handling system. * [20]comp.mail.mime Multipurpose Internet Mail Extensions. * [21]comp.mail.misc General discussions about computer mail. * [22]comp.mail.multi-media Multimedia Mail. * [23]comp.mail.mush The Mail User's Shell (MUSH). * [24]comp.mail.sendmail the BSD sendmail agent. * [25]comp.mail.smail the smail mail agent. * [26]comp.mail.uucp Mail in the uucp environment. 4.2 书籍 以下是一些有用的书。。。 * ``Sendmail" from O'Reilly and Associates 是关於 sendmail-v8 和 sendmail+IDA 的最权威的参考。它是所有想理解 sendmail 又不想在处理过 程中头破血流的人的必备参考书。 * "The Internet Complete Reference" from Osborne 是一本很好的参考书, 描述了互联网上许多可用资源,并且有许多关於新闻、邮件等方面的信息。 * "The Linux Networking Administrators' Guide" from Olaf Kirch of the LDP 在网络上可以找到并且也由 O'Reilly and SSC 出版。讲述了关 於Unix网络所需要掌握的所有知识。 4.3 新闻期刊 值得提及的是 Chris Lewis的 periodic posting on unix e-mail software,可 以在 [27]ftp://rtfm.mit.edu/pub/usenet/comp.mail.misc 找名字象 ``UNIX_Email_Software_Survey_*''。 有一个 HTML 版本在 [28]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 [29]linux-howto@metalab.unc.edu). 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 linux-howto@metalab.unc.edu. 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 from "The Linux Electronic Mail HOWTO" to avoid a collision with Guylhem Aznar's Mail HOWTO, which will become the Mail Administrator HOWTO. References 1. mailto:esr@thyrsus.com 2. mailto:softsprite@yeah.net 3. http://metalab.unc.edu/LDP/HOWTO/ISP-Hookup-HOWTO.html 4. news:comp.os.linux.answers 5. http://metalab.unc.edu/LDP/HOWTO/Mail-User-HOWTO.html 6. http://metalab.unc.edu/pub/Linux 7. http://metalab.unc.edu/pub/Linux/system/mail 8. http://www.mutt.org/ 9. http://metalab.unc.edu/pub/Linux/system/mail 10. http://www.washington.edu/pine 11. file://localhost/tmp/zh-sgmltools.28364/Mail-User-HOWTO.txt.html#emacsclient 12. http://www.wonderworks.com/vm/ 13. http://www.catalog.com/vivian/mailing-list-software.html 14. http://www.greatcircle.com/list-managers/ 15. http://www.faqs.org/faqs/mail/setup/unix/part3/index.html 16. http://spam.abuse.net/ 17. http://www.mindworkshop.com/alchemy/nospam.html 18. news:comp.mail.elm 19. news:comp.mail.mh 20. news:comp.mail.mime 21. news:comp.mail.misc 22. news:comp.mail.multi-media 23. news:comp.mail.mush 24. news:comp.mail.sendmail 25. news:comp.mail.smail 26. news:comp.mail.uucp 27. ftp://rtfm.mit.edu/pub/usenet/comp.mail.misc 28. http://www.faqs.org/faqs/mail/setup/unix/ 29. mailto:linux-howto@metalab.unc.edu