配色: 字号:
LINUX 24时学时教程—011
2012-03-09 | 阅:  转:  |  分享 
  
下载

第11学时配置因特网电子邮件

本学时教程介绍如何设置Linux操作系统处理电子邮件,还将探索许多可以用来阅读和发

送邮件的程序,如pine邮件程序及网景公司的Messenger软件。

首先将要学习的是设置系统使其能够收发邮件,这是建立在使用PPP设置和连接到ISP商

的经验基础上的。

11.1初始化设置和获取电子邮件

设置系统能够收发电子邮件其实并不需要做很多的事,但配置主要的邮件程序包sendmail

的复杂程度却可以被视为一种黑色艺术,只有UNIX系统中的各种向导程序的复杂性可以与之

相提并论。但是不用害怕,因为只要安装好了OpenLinux操作系统之后立刻就可以使用电子邮

件了。

新术语在本学时教程中无法讨论UNIX邮件的所有细节。但是应该对电子邮件的工作原理过

程有一个一般性的了解。电子邮件需要使用到的主要的程序,用技术术语来说有“传输代理”

和“用户代理”两种。一个传输代理是一个程序,通常是一个程序包,它从一台计算机向下

一台自动发送邮件文件。一个用户代理是一个程序,也叫做邮件阅读器,可以使用它来管理

消息。在本学时教程中将学习到如何使用这些程序。

安装好OpenLinux操作系统之后,就可以找到几乎所有你需要用来编写、发送和接收邮件

的程序。OpenLinux操作系统使用的传输代理程序是sendmail,当开机启动OpenLinux操作系

统之后这个程序包就已经自动配置好并开始运行了。至于用户代理程序,最少可以从九个当

中进行选择(这些用户代理程序列在表11-1中)。

表11-1用于OpenLinux操作系统的电子邮件程序

名称说明

biff邮件通知工具程序

coolmail在X11中使用的3D动画邮件通知工具程序

elm交互式邮件程序

fastmail电子邮件程序集

fetchmail基本的POP、IMAP和ETRN邮件检索程序

frm,nfrm方便的邮箱消息列表工具程序

mail基本的邮件程序

message方便的邮箱消息计数工具程序

ml在X11中使用的邮件用户代理

mush电子邮件的shell

muttMutt邮件用户代理

NetscapeMessenger网景公司Communicator软件中的newmail、wnewmail邮件通知工具包的邮

件用户代理

pine用于因特网新闻和电子邮件的程序

printmail对邮件进行排版打印的工具程序

(续)

名称说明

procmail邮件格式处理程序

readmsg方便的邮件信息摘抄工具程序

xbiff在X11中使用的邮件通知工具程序

xfmail在X11中使用的邮件用户代理程序

xmailbox在X11中使用的邮件通知程序

xmh在X11中使用的邮件用户程序

因为很有可能是通过PPP连接上的因特网,所以在本学时教程中介绍的处理邮件的常用方

法主要完成以下几件事情:

1.登录进入系统并建立一个PPP连接。

2.使用检索工具程序或者用户代理程序检索邮件。

3.断开连接(或者为一些快速应答保持连接状态)。

这与其他处理邮件的方法很相似。如果有在其他的操作系统上使用免费的电子邮件拨号

帐户程序(比如Juno)方面的经验,就会知道刚才提到的常用方法就是为了使上网时间最短的方

法,这个方法在脱机状态下编写并回复邮件,然后连接上网、发送并检索邮件,接着退出网

络连接。

如果想了解关于Linux操作系统邮件处理的细节和其他信息来源方面的详细资料,请阅读

子目录/usr/doc/HOWTO中由GuylhemAznar编写的Mail-HOWTO。

使用fetchmail程序检索邮件

现在可能会对怎样从ISP商处拿到邮件有点摸不着头脑。但是如果还能够想起10学时教程

中学习的内容,就会知道现在是需要ISP商邮件服务器的IP地址或名称的时候了。如果想拿到

邮件,就需要使用子目录/usr/bin中的fetchmail程序。fetchmail程序是由EricS.Raymond编写

的,他是一个出色的程序员,知名的开放源代码软件的倡导者,总之是个好伙计(他希望大家

都能够知道他的姓名字头缩写:esr)。

新术语这个程序具备很多的特点,包括一个端口监控程序,即后台定期运行功能,也就是

说可以在你与你的ISP商保持着连接的时候周期性地检查是否有你的邮件。fetchmail程序可以

识别和检索符合任何一种因特网邮件检索协议的各种邮件。这些标准包括:

?POP2(PostOfficeProtocol2,邮局协议第二版)

?POP3(PostOfficeProtocol3,邮局协议第三版)

?RPOP(RevisedPostOfficeProtocol,邮局协议改进版)

?APOP(AdvancedPostOfficeProtocol,邮局协议高级版)

?KPOP(KPostOfficeProtocol,K邮局协议)

?CompuServePOP3withRPA(CompuServe网使用的带RPA的POP3协议)

?SDPS

?IMAP(InternetMailAgentProtocol,因特网邮件代理协议)

?ESMTPETRN

如果想检索电子邮件,还需要知道ISP商使用的是哪一种协议(大多数的ISP商们支持POP3、

第11学时配置因特网电子邮件用用181下载

182使用第三部分与外部世界连接下载

APOP、或者IMAP)还有你在那台邮件服务器上的用户名和口令字。

准备好上面的信息后,连通你的ISP商,然后使用下面介绍的fetchmail命令把所有的待领

邮件抓回来。其中的-p参数说明所使用的协议类型,它后面是ISP商的邮件服务器的名称,最

后以-u参数和你的用户名结尾。如下所示:

按下回车键之后,fetchmail会提示输入口令字(然后才能对ISP的邮件服务器进行存取),

接着检索邮件,并从ISP邮件服务器上冲掉(或者说删除)邮件。如果在进行检索之后仍然想在

ISP的邮件服务器上保留邮件的拷贝(不推荐这样做),可以在命令行上再加上一个-k(保留)参

数。

不幸的是,包括在OpenLinux1.3版本中的fetchmail(4.0.7)版本已经

过时了。在这本书写作的时候,它最新的版本已经是4.7.4了,其中已经

做了无数的改进。如果想下载一个比较新的版本,可以浏览站点:

ftp://metalab.unc.edu/pub/Linux/system/mail/pop;如果你想下载最新的

版本,可以浏览站点:http;//www.tuxedo.org/~esr/fetchmail。在这两个

站点,都可以找到.rpm或者.tgz版本。

为了使检索电子邮件的工作容易进行,fetchmail程序使用了一个名为.fetchmailrc的资源

文件,你可以在用户子目录建立这个文件。事实上,如果使用-fetchmailrc参数然后再加上一

个不同的文件名,就可以很容易地从不同的帐户或者ISP商处检索邮件;或者把检索过的邮件

放到系统中的某个子目录中去。这个.fetchmailrc文件的内容在fetchmailrc命令的使用手册页中

有逐字的详细讲解,但是一般说来它是由下面几个部分组成的:

pollmailserverprotocolPOP3usernameyourusernamepasswordyourpassword

使用喜欢的文本编辑器程序编辑或者建立自己的.fetchmailrc的文件,把其中的mailserver

替换成ISP商的邮件服务器的名称(比如说pop.erols.com)、把POP3替换成ISP商的邮件服务器

使用的协议、把yourusername替换成用户名、把yourpassword替换成你的口令字。保存这个文

件,退出编辑器程序,就可以用下面的方法来检索邮件了:

#fetchmail

如果想让fetchmail定期检查是否有待领的邮件(比如说每五分钟检查一次),可以使用它的

后台运行状态,再加上一个数字表示它进行检查的时间间隔。当使用它的后台状态和-d命令

行参数,fetchmail程序就可以作为一个后台进程运行。可以使用下面的命令:

#fetchmail-d300

fetchmail程序还有一个灵活的-c参数,这个参数只用来查看是否有你的待领邮件并向报告

这些邮件的个数,以及全部邮件的总长度。如下所示:

#fetchmail-c

2messagesforbballatpop.erols.com(3435octets).

在缺省状态下,所有的邮件会被放入到子目录/var/spool/mail中的以用户名作为文件名的

一个文件中去。

请记住,fetchmail程序只设计在一种方式下工作:从ISP的邮件服务器上检索邮件,在邮

件送出之后通知ISP的邮件服务器删除(或者保留)邮件。到目前为止已经能够检索邮件了,那

么怎样才能发送、阅读以及回复消息呢?这就到了用户代理程序—也就是邮件阅读程序上

场的时候了。

如果在检索邮件的时候屏幕提示出错,请检查确实已经启动运行了

sendmail程序包。这个服务功能在lisa命令的“Configuredaemon/server

autostart”(配置软件包/服务器自动启动)菜单中显示为“MailTransfer

Agent”(邮件传输代理)项目,它保证了邮件(在向外邮寄功能以外)可以被

正确地接收与分发。

11.2使用Mail程序集发送邮件

本小节介绍三个可以在Linux操作系统中使用的基本邮件程序。我们的介绍从最“古老”

的mail程序开始,接下来是两个面向屏幕的程序,elm程序和pine程序。

11.2.1使用mail程序

mail程序存放在子目录/bin中,它是可以使用的最简单的邮件程序。它不具备面向屏幕的

图形化显示功能,它的操作需要一行接着一行地输入文本命令来执行,而且它所使用的全部

命令都是单个的字符。但是不管怎么说,这个程序可以很容易地用来生成和发送邮件消息。

举例来说,如果想快速生成一条消息,在命令行上调用mail程序和一个电子邮件地址就可以

了。如下所示:

#mailtball@mcp.com

Subject:Howzitgoing?

HopeeverythingisOKwithyou.

Justwantedtodropaquickline!

.

EOT

输入命令并按下回车键之后,mail程序响应并要求输入一个“Subject:”(标题)行。输入

消息的标题然后按下回车键。接下来,逐行输入信件的内容。完成之后,在单独的一行上放

上一个句号(.),再按下回车键。mail程序就会送出这封信件。

检索信件的操作也很简单。当已经连接到ISP商并使用fetchmail程序检索过邮件之后,在

命令行上输入mail,如下所示:

第11学时配置因特网电子邮件用用183下载

mail程序会在子目录/var/spool/mail中检索你的邮件,它先显示程序自己的版本信息,再

列出这个子目录中的全部信件文件的信息,然后显示连接符(&)做为提示符。注意在当前信件

消息的前面有一个大于号(>)标记。mail程序的基本命令有:

?t—显示或者列出当前信件消息

?n—移到下一个信件消息并显示它

?+—移动下一个信件消息并显示它

?-—移动上一个信件消息并显示它

?h—重新显示信件消息清单(列出一个信件消息之后)

?d—删除当前信件消息

?R—回复寄信人

?r—回复寄信人及所有收信人

?q—退出,把信件消息存入缺省的mbox邮箱中

?x—退出,不把信件消息存入缺省的mbox邮箱中

快速发送比较长的信件消息的一种简便方法是使用shell命令行重定向操作符。比如,如

果已经通过喜欢使用的文本编辑器程序编辑了一个长的信件消息,就可以使用下面的命令发

送出去:

#mail-s"Howisitgoing?"myfriend@somewhere.com
在上面所示的方法中,mail程序会生成一个包括了使用-s参数指定了标题的信件消息(注

意标题的内容文本要使用引号括起来),并把文件mymessage.txt放入信体的消息块内。使用这

个方法要小心,因为这条消息会被立刻送出,不再向你确认是否真的想发送这条消息。

还有许多使用mail程序的方法,可能会发现它确实是非常实用。请阅读mail程序使用手册

页以获得更多的信息。虽然使用mail可能会相当快捷方便,但下面介绍的两个程序具备更多

的交互性,而且提供了大多数人在他们收发邮件时已经形成习惯的那些特色。

11.2.2配置并使用elm邮件程序

elm程序已经有十多年的历史了,它最初是由DaveTaylor开发编写的,而现在它已经处于

由我们称之为Elm开发组的超过四十多名程序员组成的一个团队的合作开发之下。这个程序提

供了一个交互式的操作画面,可以在控制台或者某个X11的终端窗口的命令行上使用它。

这个程序与pine程序不同的地方是elm程序必须在一个至少有十四行

的窗口中启动,否则它将报警并退出运行。

当第一次启动elm程序运行的时候,它会要求回答是否想建立elm程序的缺省邮件文件夹

“Mail”:

#elm

Notice:

ThisversionofELMrequuirestheuseofa.elmdirectoryinyour

homedirectorytostoreyourelmrcandaliasfiles.ShallIcreatethe

directory.elmforyouandsetitup(y/n/q)?

按下Y键,再按下回车键。elm程序具有与mail程序和pine程序(我们将在下一节介绍)相似

184使用第三部分与外部世界连接下载

的特点。举例来说,可以像在使用mail程序的时候那样从命令行发送消息,我们还使用前面

介绍mail程序时的例子,如下所示:

#elm-s"Howisitgoing?"bball@staffnet.com
Sendingmail...

Mailtobball@staffnet.com

mailsent!

当检索过邮件之后,elm程序就象如图11-1中所示的那样阅读并显示信件消息。

可以使用elm程序删除、发送、保存和编写信件中的消息。在elm的主显示画面中敲入一

个字母“o”使你能够对它的某些功能进行个性化设置(如图11-2所示)。先按下画面左边一栏

右括号前面的字母,然后输入这个项目的新设置值,比如缺省的编辑器程序(画面中的E(ditor

(primary)项目),再按下回车键。当按下“<”(小于号)键之后,这些个性化设置的功能将保存

在用户子目录中的.elm文件夹的elmrc文件中。

在开始使用elm程序之前一定要先阅读它的使用手册页。也可以在子目录/usr/dos/elm中找

到更多的文档。如果想了解更多关于elm程序的资料,可以查看下面的站点:

http://www.myxa.com/elm.html。

11.2.3配置并使用pine邮件程序

pine邮件程序(pine是PineIsNolongerElm这些单词的首字母缩写,这句话的意思是pine

第11学时配置因特网电子邮件用用185下载

图11-1elm邮件程序在一

个列表中显示信件

消息

图11-2elm程序用来设置

各种参数的设置对

话框画面

不再是Elm)保存在子目录/usr/bin中,它是由华盛顿大学开发的一个交互式邮件和新闻阅读器

程序。这就意味着使用pine程序不仅可以收发邮件,还可以使用它来阅读Usenet新闻组。关于

Usenet和其他不同的新闻阅读器程序的内容我们将在12学时教程“配置因特网新闻”中进行

介绍。本学时教程的重点是介绍如何配置并使用pine邮件程序收发电子邮件。

pine程序还带有一个非常容易使用的叫做pico的文本编辑器程序,它极有可能成为你最喜

欢的Linux文本编辑器程序,因为pico可以和任何其他的程序一起使用,而不仅限于pine程序。

请阅读第14学时教程“文字处理程序”中对pico编辑器程序的介绍。

pine程序的初始化设置和使用操作都很容易。当第一次启动这个程序的时候,就已经自动

完成了大部分的工作。当第一次使用这个程序的时候,它会显示如下所示的内容:

#pine

Creatingsubdirectory“/home/bball/mail“wherePinewillstoreitsmailfolders.

Pine程序启动运行并在用户子目录中建立一个名为mail的子目录和一个名为.pinerc的配置

文件。会看到一个如图11-3所示的初始欢迎画面。

在开始编写或者发送邮件之前,需要配置pine程序识别用户名、ISP商的邮件服务器以及

将在后面学习到的ISP商的新闻服务器。虽然可以编写消息并使用pine命令的postpone(延迟发

送)功能保存这些已经编写好的消息,但是在告诉pine程序你是谁和你的ISP商的邮件服务器的

名称之前是无法发送出任何邮件的。

如果想配置pine程序,先要启动这个程序,然后敲入一个字母“s”,再敲入一个字母“c”,

你就可以进入到如图11-4所示的pine程序的配置画面。

186使用第三部分与外部世界连接下载

图11-3pine邮件程序能够

与控制台或者通过

某个X11终端窗口

工作

图11-4在pine邮件程序的

配置画面中指定用

户个人的姓名、用

户的域名、smtp服

务器和nntp服务器

第11学时配置因特网电子邮件用用187下载

输入个人的名字、ISP商的域名、ISP商的邮件服务器的名称和(如果你知道的话)ISP商的

新闻服务器的名称。然后敲入一个字母“e”,pine程序会询问是否要保存这些设置。配置将会

被保存在用户子目录中的.pinerc文件中。虽然也可以使用喜欢的文本编辑器程序来编辑这个

文件,但使用pine程序更加容易一些。

当想编写一条消息的时候,按下字母“c‘键,就进入到如图11-5所示的pine程序的信件

消息写作状态。

如果想把信件发送给多个收件人,可以在不同的收件人姓名之间敲入逗号。如果想在发

送信件的时候附带上其他的文件,可以在“Attchmnt:”数据域中输入这些文件的文件名(如果

这个附带的文件保存在用户子目录中的话)、或者输入文件的完整的路径名(如果这个附带的文

件保存在文件系统上的其他位置的话)。

当编写消息的时候,可以使用光标方向键在文本中移动。有许多编辑功能键可以用来修

改文字内容。也可以对文本行进行删除或者恢复删除、剪切或者粘贴等操作。这些编辑功能

键列出在表11-2中,对应于pico编辑器程序。

表11-2pine程序编写消息用到的编辑命令

动作组合键

光标向后退一个字符Ctrl+B

删除光标前面的一个字符Ctrl+H

取消消息Ctrl+C

删除光标后面的一个字符Ctrl+D

删除光标所在行Ctrl+K

光标向下移动一行Ctrl+N

光标向前移动一个字符Ctrl+F

编辑帮助Ctrl+H

在光标位置插入其他文件中的内容Ctrl+R

段落对齐Ctrl+J

光标移动到行首Ctrl+A

光标移动到行尾Ctrl+E

光标移动到下一个单词Ctrl+@

向后翻页Ctrl+V

向前翻页Ctrl+Y

延迟发送(保存)消息Ctrl+O

拼写检查Ctrl+T

光标向上移动一行Ctrl+P

搜索单词Ctrl+W

图11-5pine程序中可以编

写一条邮件消息并

使用文件附带(file

attachment)功能把

它发送给多个收件

人的消息写作画面

当完成编写消息之后,可以使用Ctrl+X组合键立刻就把这个消息发送出去,或者也可以

使用Ctrl+O组合键延迟发送这个消息。使用这个方法,可以在没有连通ISP商的时候编写消息

或者回复收到的消息,然后再上网发送它们。

当检索邮件时,pine程序会到子目录/var/spool/mail中去查找,然后从邮件文件中取出消

息并存入到用户子目录中名为mail的文件夹中的缺省文件夹INBOX中去。也可以建立其他的

文件夹,在不同的文件夹中保存或者删除消息,对邮件进行管理。当然,还可以使用在本学

时教程的“配置procmail程序与写作模板对付垃圾邮件”小节中介绍的procmail方法来自动进

行某些上述的工作。

消息的文件夹索引显示在一个清单之中,可以使用光标方向键在其中上下查找选择消息

(如图11-6所示)。从消息的主清单中,可以删除、恢复删除、保存、阅读或者输出消息到子目

录。如果想要阅读某条消息,只需要敲一下回车键就行了。

pine程序有许多的命令行参数和其他的功能,比如内建的帮助信息功能等等,可以从pine

程序的主菜单中使用问号(?)进入这个帮助功能。

11.2.4配置和使用网景公司的Messenger软件收发电子邮件

网景公司的Messenger软件是网景公司的因特网客户程序套装软件Communicator的一个

组成部分,是一个用于X窗口系统的图形化电子邮件客户程序。可以从网景公司的网络浏览

器NetscapeNavigator软件主窗口中的Communicator菜单中单击Netscape组件条上的

Messenger按钮启动这个程序运行。也可以使用netscape命令和它的-mail参数启动这个程序,

如下所示:

#netscape-mail&

当启动运行这个客户程序出现在屏幕的时候(如图11-7所示),选择“Edit”(编辑)菜单,

单击其中的“Preferences”(个人偏好)菜单项。当“Preferences”(个人偏好)对话框出现的时

候,单击“Mail&Groups”(邮件和用户组)项目,然后再单击“Identity”(身份)菜单项。输

入姓名和电子邮件email地址,如图11-8所示。

188使用第三部分与外部世界连接下载

图11-6你可以从某个pine

程序的邮件文件夹

中的消息清单中选

择某条消息

第11学时配置因特网电子邮件用用189下载

在缺省的状态下,NetscapeMessenger把电子邮件消息的文本内容按

照HTML格式发送出去。这在向另外一个Netscape用户发送电子邮件的情

况下不会出现什么问题;但是如果是在与使用mail、elm、或者pine程序

的用户进行联系的话,这就是一个容易引起混乱的方法。可以使用下面

的方法关闭对消息文本进行HTML格式化的功能:单击“Mail&Groups”

(邮件和用户组)项目下的“Message”(消息)列表项目,然后取消在

“Message”(消息)对话框中的“MessageProperties”(消息属性)部分中对

单选按钮“HTMLmessage”的选择。

接下来,单击“MailServer”(邮件服务器)菜单项。在这个对话框(如图11-9所示)中需要

设置几个关键的数据项目,比如邮件服务器名称及ISP商的邮件检索协议等等。输入用户名

(通常就是用来登录到ISP商的系统所用的名字),然后再在“Incomingmailserver”(收信服务

图11-7NetscapeMessenger

是一个在X11中收发电

子邮件的易于使用的

接口程序

图11-8在Messenger的

“Identity”(身份)对

话框中输入姓名、

email地址和任何其

他要求的数据项目

(比如你所在的机构

名称)

器)数据项目中输入ISP商的邮件服务器的名称(把“Outgoingmailserver”(发信服务器)那一栏

保持localhost不变)。然后单击选择ISP商使用的邮件服务器协议的类型。

单击“MoreOption”(其他选项)按钮可以改变其他的设置值,如缺省

的邮件文件夹或者想设置Messenger每隔多长的时间就检查一次待领邮件

完成之后,单击“OK”(完成)按钮保存所做的设置。在Messenger的主窗口中,单击

“GetMsg”(取邮件)按钮(如图11-7所示)。Messenger会询问口令字。输入口令字之后单击

“OK”(完成)按钮就可以检索邮件消息了。新的消息会列在Messenger窗口中。如果想阅读某

条消息,在消息清单中单击这条消息,它的内容就会出现在Messenger窗口的下半部分。

在这个时候,可以使用各种的Messenger按钮来回复、转发、保存、打印或者删除这条消

息。如果你想编写一条新的消息,在Messenger的菜单条上单击“NewMsg”按钮,屏幕上会

出现Messenger的“Compose”(编写)窗口,如图11-10所示。

190使用第三部分与外部世界连接下载

图11-9可以使用Messenger

的“MailServer”(邮

件服务器)对话框来设

置用来接收和发送邮

件的关键的信息

图11-10通过Messenger的

“Compose”(编写)

窗口编写新的消息、

填写多个收件人地址

以及附加Web网页或

者文件

单击“To:”数据域输入一个收件人地址。如果想输入多个收件人地址,在输入一个

email地址之后按下回车键即可。然后,单击“Subject:”数据域,在其中输入一个标题。如

果想在这个消息上发送附加的文件,可以在“Compose”(编写)窗口的菜单条上单击“Attach”

(附加)按钮;或者选择“File”(文件)菜单中的“Attach”(附加)菜单项。在“Compose”(编

写)窗口(它在消息内容格式条的下方)的空白区域内单击鼠标按键,然后输入消息内容。完成

的时候,可以把这条消息保存为一个草稿,对消息内容进行拼写检查、或者单击“SendNow”

(立刻发送)按钮发出这条消息。

11.2.5订阅邮件表

当自信邮件系统工作正常的时候,可能会希望订阅某个邮件表。邮件表是由自动化的邮

件服务器进行处理并采用把为邮件表中所有的成员生成的消息不断转发的方法运作的。订阅

邮件表的一个聪明的方法是订阅一份文摘版,这样一天当中所有拥挤不堪的消息就被压缩成

为每天只有一到两次的邮件传送。

可以浏览下列的站点获取更多关于邮件表的资料:

http://www.lsoft.com/lists/listref.html

肯定会找到那些吸引邮件表(在我撰写这本书的时刻,上面的这个站点可以让你查询总数

多达十三万五千以上的邮件表中的二万一千多个)。

如果想通过电子邮件加入关于OpenLinux操作系统的讨论,或者与其

他OpenLinux用户交流信息,请向地址majordomo@rim.caldera.com发一

封电子邮件,在邮件正文部分包括如下内容:

subscribecaldera-usersyouremailaddress@yourisp.com

你将会收到一个要求确认订阅的电子邮件,按照其中的说明回复这

封邮件。如果想了解关于这项服务更多的资料,请向地址

majordomo@rim.caldera.com发一封正文中包括单词help(帮助)的电子邮

件,你将会收到一个包含了大量使用Caldera公司的邮件表服务细节的回

复。如果想收到Caldera公司的OpenLinux邮件表的文摘版,请向地址

majordomo@rim.caldera.com发一封电子邮件,在邮件正文部分包括如下

内容:

subscribecaldera-users-digestyourmailaddress@yourisp.com

11.3配置procmail程序与写作模板对付垃圾邮件

新术语我们都已经习惯了收到成堆的垃圾邮件或者推销电话。日复一日,我们会收到大量

的广告,有提供信用卡、房屋贷款、新的长途电话服务的还有本地食品超市搞各式各样折扣

推销的。对这些并不需要的邮寄广告、传真垃圾和推销电话,总还是可以按自己的想法进行

一些处理,但是对那些泛滥成灾的电子邮件(我们叫它“垃圾邮件”),目前还确实没有什么全

国性的法规来管理。

第11学时配置因特网电子邮件用用191下载

192使用第三部分与外部世界连接下载

幸运的是,美国各地许多州的法律团体已经注意到了这一点并呼吁

制止那些垃圾客,也就是那些制造垃圾邮件的家伙。有些州,比如加利

福尼亚州,已经开始推行惩治那些令人头疼的垃圾客的民事惩罚条例。

这类行动早就该有了!

新术语可以使用子目录/usr/bin中的procmail程序来过滤收到的邮件。需要建立一个子目录、

建立几个文件、编写一个短小的命令脚本程序、通过编写简单的过滤器即procmail程序的写作

模板来控制如何处理收到的邮件。设置系统对收到的邮件进行组织管理并剔除那些垃圾邮件

只需要花费一两分钟的时间。

第一步是在用户子目录中建立一个名称为.procmailrc的文本文件。然后,在这个文件中输

入下面内容:邮件子目录的目录名(如果使用的是pine程序,这个目录就是子目录mail)、子目

录.procmail的位置(稍后会建立)以及procmail过滤器文件的文件名:

MAILDIR=$HOME/mail

PMDIR=$HOME/.procmail

INCLUDERC=$HOME/.procmail/rc.mailfilter

保存这个文件。接下来,在用户子目录再建立一个名为.forward的文本文件。这个文件中

需要有下面的内容:

"||IFS="&&exec/usr/bin/procmail-f-||||exit75#username"

上面的命令行控制着procmail程序,应该使用的用户名把其中的username替换掉。现在,

使用chmod命令把.forward文件的属性转换为全系统内可读的,把用户子目录设置为全系统可

搜索的。请参考下面的例子(这个操作一定要在你自己的用户子目录中进行):

#chmod644.forward

#chmoda+x.

你已经差不多完成了。现在,使用mkdir命令建立一个名为.procmail的子目录,进入到这

个子目录中去,然后建立一个叫做rc.mailfilter的文本文件。

这个文件用来存放procmail过滤器,也就是写作模板。这些过滤模板可能相当复杂(事实

上有些模板极为复杂,甚至值得为你自己编写邮件发送服务程序),但是本小节中只能够示范

几个简单的例子,给你开个头。

首先,我们来检查一下示例邮件消息的标题部分(即那些包含着From:、To:、或者Subject:

的行)。《BritishMG》赛车文摘杂志在它的每条消息中都有下面这样的一个标题行:

Subject:mgs@autox.team.netdigest#905MonNov1710:09:07MST1997

每个文摘消息可能包含有将近十万个字符,而且每天会发送两次,所以最好把这些文摘

消息都放到它们自己的邮件文件夹中去,可以把这个文件夹叫做mgdigest。如果想这样做,

需要在rc.mailfilter文件中输入下面的内容:

:0:

^Subject:.digest

mgdigest

如果收到任何一个消息的标题行中包含有单词digest,那么这个小小的过滤模板会把这条

消息保存到一个名为mgdigest的邮件文件中去,而这个文件是存放在由你的邮件程序设置的

邮件子目录中的。如果订阅了其他文摘,比如说Caldera公司的文摘,就需要建立另外的有着

更多标题行检索条件的过滤模板。需要注意的是并不需要亲自建立这个mydigest邮件文件。

这个文件会在检索邮件并且procmail程序第一次找到与这个过滤模板匹配的内容的时候自动建

立起来。也可以使用其他的过滤模板把所有你从朋友那儿收到的邮件文件保存到一个特定的

文件夹中,如下所示:

:0:

^From:.aol.com

AOL

看到这里,你也许要问“那么,那些垃圾邮件怎么办?”你应该知道对这些没用的电子邮

件文件怎么办—扔到垃圾箱里去!对Linux操作系统的用户来说,可以把那些垃圾邮件送到

一个特殊的地方去,这个地方就是无底洞/dev/null。所以如果从某个诸如hotlips4u.com之类的

地方收到了不想要的消息,可以把这类垃圾文件使用下面的命令送到“垃圾堆”里去:

:0:

^From:.hotlips4u.com

/dev/null

垃圾邮件通常都很容易辨认,因为这些邮件通常都包含有一些特别

用来吸引你的标题行格式。其他的线索还有那些从来都不会在邮件消息

中要求查询的信息、发信人、或者收信人以及那些没有回复地址(这是不

道德和带有欺诈性的行为)的消息。千万不要回复垃圾邮件,就是在那些

邮件中包含有“如果你不想继续订阅,请在信件的内容中注明

UNSUBSCRIBE(不订阅)字样并发送到bonehead@spammers.com站点处。”

这样的句子也不要回复。这是一个验证电子邮件地址的陷阱,而结局可

能会是收到更多的垃圾邮件!

这样,那些不想要的邮件消息就不会存储到你的硬盘驱动器上了,而你也不会再看到从

这些地址发来的邮件了。这个方法使用起来太简单了,但是如果还是收到许多垃圾邮件,可

能需要设法建立更复杂的过滤模板,这样除了那些真正想与他们交换邮件的人之外,可以把

其他的任何东西都过滤掉。

如果想给你的procmail程序提供的服务再加上一些其他的功能,请阅读procmail程序的使

用手册页。如果想进一步了解更多关于选择使用procmail过滤模板的资料,请查阅procmailex

程序的使用手册页,它详细提供了从简单到复杂的无数的例子。

想了解更多的关于procmail程序、编写procmail程序的过滤模板和过滤邮件的资料吗?请

查阅由NancyMcGough编写的FilteringMail(过滤邮件)常见问题答疑FAQ,它定期发表在

comp.mail.misc、comp.mail.elm、comp.mail.pine以及其他的新闻组中。而阅读来自Usernet的

新闻也恰好是我们下一学时教程要学习的内容。

11.4课时小结

本学时教程只介绍了OpenLinux操作系统所使用的几个电子邮件程序。可以在本书所附的

CD-ROM光盘上找到这些以及更多其他的程序。

11.5专家答疑

问:当我试图从我的ISP商那里检索邮件的时候,fetchmail程序报告出现一个错误!发生

第11学时配置因特网电子邮件用用193下载

了什么事情?

答:请检查是否使用fetchmail程序正确设置了与ISP商的邮件服务器协议匹配的协议。请

检查sendmail程序包是否已经运行。另外,请检查是否使用的是最新版本的fetchmail程序。如

果想了解更多的关于查错纠错的资料,请阅读子目录/usr/doc/fetchmail中的fetchmail程序的常

见问题答疑FAQ文件。

问:我想从一个MicrosoftExchange服务器上或者通过我的CompuServe账户接收邮件,我

该怎样操作?

答:请阅读子目录/usr/doc/fetchmail中的fetchmail程序的常见问题答疑FAQ文件。那里面

有关于可以用来获得邮件的技巧与窍门以及在OpenLinux操作系统下进行PPP连接需要避免的

陷阱的资料。

问:我已经设置了fetchmail程序定期从我的ISP商那里检索邮件。但是我怎样才能知道邮

件已经收到了呢?

答:OpenLinux操作系统包括了许多不同的邮件通知程序。有一些工作在控制台中,其他

的只能够用在某个X11任务操作中。请阅读newmail程序或者biff程序的使用手册页开始学习。

其他有关的程序开列在本学时教程的开头部分。

问:当我使用fetchmail程序的时候,它总是报告“connectionfailed(连接失败)”和

“failed:temporarynameservererror.(失败:临时域名服务器出错)”发生了什么事情?

答:你首先必须建立一个到ISP商的PPP连接。另外一定要检查是否在你的.fetchmailrc文

件中正确地输入了ISP商的邮件服务器的名称。

11.6练习题

1.使用其他不同的邮件程序,如xmh程序、mutt程序或者xfmail程序。这些程序都有些什

么样的不同之处?喜欢或者不喜欢这些程序的哪些方面?

2.建立其他不同的procmail过滤模板来组织待领邮件。把所有的垃圾邮件保存到一个名为

spam的文件夹中去,然后给有关州的法律部门发一份投诉,并把这些垃圾邮件整理后作为附

件也发过去。

194使用第三部分与外部世界连接下载

献花(0)
+1
(本文系利顿收藏馆首藏)