2006年9月20日星期三

第五章 电子邮件服务

第一节 电子邮件系统
 
1、E-mail 系统组成

 
  作为 Internet 上最具人气的应用之一,电子邮件和传统的书信方式在基本思路上不谋而合。发信人将邮件投递到收信人的信箱里,收信人再从信箱里取出信件阅读。现实生活中投递信件的系统是邮局,在 Internet 上也有一个负责投递电子邮件的类似系统——邮件服务器。

 
  一个完整的 E-mail 系统由 MUA(Mail User Agent)和 MAT(Mail Transport Agent)两个部分组成。

 
  MUA 就是我们经常使用的读信与写信的程序,电子邮件用户通过它进行 E-mail的接收、发送的管理。Outlook、Foxmail、KMail、pine 和 elm 等都是常用的MUA,这些软件界面友好,操作方便,利用它们可以很方便地处理电子邮件。现在许多网站还提供了另外一种形式的 MUA,即电子邮件用户通过网站提供的 Web 页面,直接在浏览器中完成电子邮件的撰写和收发等操作,如 msn.com、mail.263.com 等。

 
  MTA 就是常说的电子邮件服务器,它负责邮件的存储和转发。MTA 在收到 MUA发来的 E-mail 后,将根据目的地将其转发到指定用户的邮箱中。从某种程度上说,MTA 相当于日常生活中的邮局,在 Linux 上使用最广泛的 MAT 是 Sendmail、Smail 和 qmail 等。

 
2、E-mail 协议
 
  E-mail 用户在邮件服务器上都有专门的 E-mail 地址和邮箱。对于 Linux 系统来说,只要是合法的 Linux 用户,就同时拥有一个与用户名相同的邮箱。在使用电子邮件客户端软件(如Foxmail)寄信时,信件将通过网络送到电子邮件服务器,服务器再根据信件地址将其投往目的地。常见的 E-mail 地址格式为kevin@mail.mylinux.org,在 @ 符号前面的字符串“kevin”指邮箱名称,也就是邮件服务器上的帐号,@ 表示英文单词 at(在),后面的字符串“mail.mylinux.org”则指邮件服务器的域名。
 
  邮件服务器相当于现实生活中的邮局,担负着邮件的收发、分检、存贮等任务。而 E-mail 客户端软件则更象邮递员,它知道去哪个邮局取谁的信,也知道该通过哪家邮局将用户的 E-mail 发送出去。就像邮局和邮递员都需要遵循一定的规章制度一样,在 Internet 中负责电子邮件服务的 MUA 的 MTA 也要遵守一定的规则,这些规则就是电子邮件协议。

 
  同 WWW 服务一样,用于电子邮件服务的协议也已经被相应的组织标准化了。这样做的好处是可以用相同的方式使用全世界所有的邮件服务器。目前常用的电子邮件协议有 SMTP、POP 和 IMAP。

 
  简单邮件传输协议(Simple Mail Transport Protocol,SMTP)是在 Internet 上发送电子邮件的标准方式。如果邮件客户程序或者邮件服务器要将一封 E-mail发送出去时,除了使用 SMTP 协议外别无选择。SMTP 协议是一组规则的集合,它定义了在 Internet 上交换 E-mail 的标准,SMTP 服务器通过采用称为“推”(push)的技术,将不属于自己的邮件“推”送出去,使电子邮件离目的地越来越近,最终实现从原地址传送到目的地。正是因为 SMTP 协议在发送 E-mail 的过程中起着举足轻重的作用,因此配置和维护 SMTP 服务器自然也就成了 Linux 管理员的一项重要工作。

 
  邮局通信协议(Post Office Protocol,POP)是在 Internet 上接收电子邮件的协议。在用户需要阅读电子邮件时,早期的邮件服务器都明文规定用户必须先登录,然后才能开始阅读 E-mail。换句话说用户必须以在线的方式处理邮件,但这对拨号上网的用户来说简直无法忍受,因为时间就是金钱。

 
  现在比较理想的做法是先从邮件服务器上将邮件下载下来,丰存放在用户自己的机器上,然后离线进行阅读和处理,POP 就是支持这种邮件处理方式的一种邮局协议。与 SMTP 服务器正好相反,PO P服务器采用称为“拉”(pull)的技术,从邮件服务器上将邮件“拉”回来。
 
  目前 POP 协议有 POP2 和 POP3 两个版本,彼此互不兼容,其中 POP3 更为常用,并有逐步取代 POP2 的趋势。只有在邮件客户程序(MUA)和邮件服务器(MTA)同时支持 POP3 协议时,才能采用“下载→存储→离线→处理”的方式来处理电子邮件。

 
  网际信息存取协议(Internet Message Access Protocol,IMAP)是一个性能比POP 更加优秀的电子邮件接收协议,比 POP 协议更具弹性,并且支持多种邮件处理模式:

 
  第一、离线模式(offline):从邮件服务器下载邮件,存储在用户自己的计算机中,然后进行离线处理。

 
  第二、在线模式(online):可以直接对邮件服务器上的邮件进行操作,只要有新邮件,即使不主动发出接收邮件的命令,邮件客户程序也将立即得到最新的邮件信息。

 
  第三、中断连接模式(disconnected):邮件客户端程序连接到邮件服务器,选择要处理的邮件,并复制一份到本地机器的缓存中,就可以先断开与服务器的连接。此后在需要时可以再次恢复连接,实现缓存与邮件服务器的同步。

 
  虽然 IMAP 比 POP 性能优越,但普及程度还不如 POP 高。目前广泛采用的邮件服务解决方案仍是 SMTP+POP,其中 SMTP 负责发送邮件,而 POP 则负责接收邮件。

 
3、E-mail 工作方式

 用户在发送 E-mail 时有两种方式可供采用:一种是在同一台邮件服务器上发送 E-mail,另一种则是通过网络将邮件发送到其它服务器。假设 MyLinux 公司的内部网络中只有一台邮件服务器,公司中的每个员工在邮件服务器上都有一个帐号。当公司总经理要用 E-mail 通知员工开会时采用的是第一种方式,此时邮件的收发都是在同一台邮件服务器上完成的;而当总经理要发一封 E-mail 给远在美国的客户时,则采用的是第二种方式,因为邮件的发送和接收要在不同的邮件服务器上完成。
 
  第一种邮件发送方式:当同一邮件服务器上的用户 kevin 要发送 E-mail 给maggie 时,邮件服务器判断出该邮件的收信人正是自己的合法用户,因此直接将其放到 mahhie 的邮箱中,maggie 需要登录到邮件服务器来读取发送给自己的邮件。

 
  采用这种方式时,邮件服务器不用将邮件传给网络中的其它邮件服务器,因此kevin 在发 E-mail 给 maggie 时可以随意使用这几种 E-mail 地址:maggie@mail.mylinux.org 、maggie@mail 或 maggie。

 
  第二种邮件发送方式:位于 mail.mylinux.org 上的用户 kevin 通过Internet 向 hotmail.com 上的 maxine 发送 E-mail。发送方的邮件服务器mail.mylinux.org在接收到 kevin 发送的邮件后,根据邮件目的地址在网络中找到hotmail.com 主机,然后将信件转交给 hotmail.com 上的邮件服务器,并由它最终送到 maxine 的邮箱中。maxine 则通过登录到 hotmail.com 邮件服务器是阅读发给自己的 E-mail。

 
  当邮件在网络中的多台邮件服务器之间传送时,一定要指定收件人完整的E-mail 地址,即应包含帐号(user name)、主机名(host name)和域名(domain nme)三个部分。错误或不完整的 E-mail 地址都将导致域名服务器无法正确解析目的地址,也就无法正确投递邮件了。与现实生活中写错收信人地址时的情况相同,邮件服务器会将无法正确投递的 E-mail 退还给你。

 
4、认识 Sendmail
 
  Linux 下最常用的邮件服务器软件是 Sendmail,它最初由加州大学组织开发,目前已经成为使用最广的电子邮件系统,广泛应用于多种操作系统.经过多年的改进,Sendmail 在可移植性、稳定性和安全方面都有了很大的提高,已经完全能够胜任商业级电子邮件服务的要求。

 
  使用 Sendmail 最大的好处是可以消除多个邮件客户程序(MUA)带来的混乱。目前 Linux 下可用的 E-mail 客户程序很多(有mail、procmail、KMail等),当用户使用不同的邮件客户程序向 Sendmail 发送邮件时,Sendmail 首先会自动对邮件地址进行重写,从而判断出邮件的目的地是本机,或者其它支持 TCP/IP 协议的主机,还是 UUCP 主机,然后再根据目的地调用相应的邮件发送程序(LOCAL、TCP/IP、UUCP)。这样系统中所有用户就都可以通过 Sendmail 来发送 E-mail 了,而不管它使用的是哪种邮件客户程序。

 
  Sendmail 是发展历史最悠久的 MTA,总的来说已经是相当成熟的邮件服务器了,但仍存在一些缺陷,比如其功能过于强大而导致配置文件极其复杂。不过现在就没那么可怕了,因为我们可以使用 Webmin 这一强大的工具来管理和维护 Sendmail。

 
  由于 Sendmail 配置复杂,稍有疏忽就很可能成为黑客们的攻击对象,所以最好定期访问计算机紧急反应小组 CERT 的网站(www.cert.org)来了解 Sendmail 的最新安全通知。

没有评论: