您所在的位置:读书频道 > 操作系统 > Linux > 19.2.3 邮件传输所需组件及相关协议

19.2.3 邮件传输所需组件及相关协议

2007-12-06 18:17 鸟哥 机械工业出版社华章公司 字号:T | T
一键收藏,随时查看,分享好友!

《鸟哥的Linux私房菜——服务器架设篇》(第二版)第19章的主要介绍的是以Postfix为主的邮件主机架设。本文主要介绍的是邮件传输所需组件及相关协议。

AD:

19.2.3  邮件传输所需组件及相关协议

在开始介绍邮件的传送过程之前,先来想一想,您是如何寄出电子邮件的。假设您要寄信给一个用户,它的电子邮件是a_user@gmail.com,也就是说,您要寄一封信到gmail.com这个主机上。那您的桌面计算机(例如,Windows系统)是否能够将这封信直接通过网络送给gmail.com那个主机?当然不行。您需要设置帮您转信的邮件主机才行。也就是说,您必须要先向某一台邮件主机注册,以取得一个合法的电子邮件使用权限后,才能够发送邮件出去的。

所以说,您要寄出一封信件是需要很多接口帮忙的,下面列出一个简单的电子邮件传送流程,如图19-1所示。

图19-1 电子邮件传送的流程示意图

先来解释一些专有名词,然后再来说明传送的流程。

1. 专有名词解释

(1)MUA(Mail User Agent)

顾名思义,MUA就是邮件用户代理人的意思,因为除非您可以直接利用类似Telnet之类的软件登录邮件主机来主动发出信件,否则您就需要通过MUA来帮您将信送到邮件主机上。最常见的MUA是Mozilla推出的Thunderbird(雷鸟)自由软件,或者是Linux桌面KDE常见的KMail及Windows内的Outlook Express(OE)等。MUA主要的功能就是收受邮件主机的电子邮件,以及提供用户浏览与编写邮件的功能。

(2) MTA(Mail Transfer Agent)

MUA帮用户传送邮件到邮件主机上,那这台邮件主机如果能帮用户将这封信寄出去,那它就是一台邮件传送主机(MTA)。这个MTA就是邮件传送代理人的意思,顾名思义,既然是传送代理人,那么用户寄出信与用户要收信时,只要找它(MTA)即可。基本上,MTA的功能有以下这些。

· 接收信件:使用简单邮件传送协议(SMTP)。MTA主机最主要的功能就是将来自客户端或者是其他MTA的信接收下来,这个时候MTA使用的是Simple Mail Transfer Protocol(SMTP),它使用的是端口25。

· 转发信件:如果该封信件的目的地并不是本身的用户,且该封信的相关数据符合使用MTA的权限,那么MTA就会将该封信再传送到下一台主机上。这即是所谓的转发(Relay)功能。

· 响应用户的收信要求:POP或IMAP协定。用户可以通过MTA主机提供的邮件服务协议(Post Office Protocol,简称POP)来接收自己的信件,也可以通过IMAP(Internet Messages Access Protocol)协议将自己的信件保留在邮件主机上,并可进行建立邮件文件夹等高级工作。

总之,一般提到的Mail Server就是MTA。严格来说,MTA仅是指SMTP这个协议而已。而实现MTA的SMTP功能的主要软件包括老牌的SendMail、后起之秀的Postfix以及qMail等。

(3)MDA(Mail Delivery Agent)

字面上的意思是邮件递送代理人。事实上,这个MDA是挂在MTA下面的一个小程序,最主要的功能就是:分析由MTA所收到的信件表头或内容等数据,从而决定这封邮件的去向。所以说,上面提到的MTA的信件转发功能,其实是由MDA实现的。例如,如果MTA所收到的这封信的目标是自己,那么MDA会将这封信给它转到用户的信箱(Mailbox)去,如果不是呢?那就准备转发出去。此外,MDA还有分析与过滤邮件的功能。

· 过滤垃圾信件:可以根据该封邮件的表头资料或者是特定的信件内容来加以分析过滤。例如某个广告邮件的主题都是固定的,如AV情色等,就可以通过MDA来过滤并去除该邮件。

· 自动回复:如果您出差了导致某一段时间内无法立即回信时,就可以通过MDA的功能让邮件主机可以自动发出回复信件,如此您的朋友就不会误会您了。

各主要的MTA程序(SendMail、Postfix等)都有自己的MDA功能,不过有些外挂的程序功能更强大,例如procMail就是一个过滤的好帮手,另外Mailscanner+Spamassassion也是可以使用的一些MDA。

(4)Mailbox

Mailbox就是电子邮件信箱。简单的说,就是某个账号专用的信件接收文件。我们的Linux系统默认的信箱都是放在/var/spool/Mail/用户账号中。若MTA所收到的信件是本机的用户,MDA就会将信件送到该Mailbox中去。

2. 传送流程

那么来想一想,如何通过MUA来将信件送到对方的邮件信箱(Mailbox)呢?

(1)Step 0:取得某台MTA的使用权限

如图19-1所示,本地端的MUA想要使用MTA来传出信件时,当然需要取得MTA的使用权限,即需要向MTA注册一组可使用E-mail的账号与密码才行。

(2)Step 1:用户在MUA上编写信件后,传送至MTA上

用户在MUA上编写信件,信件的数据主要有以下部分。

· 信件标头:包括寄件者的E-mail以及收件者的E-mail地址,还有该封信件的标题(subject)等。

· 信件内容:就是要跟对方说明的内容。

编写完毕之后只要单击“传送”按钮,该封信就会送至您的MTA主机上,注意:是您的MTA而不是对方的MTA。如果您确定可以使用该台MTA主机,那么您的这封信就会被放置到MTA的队列(queue)中并等待传送出去。

(3)Step 2.1:如果该封信的目标是本地端MTA自己的账号

您是可以寄信给您自己的,所以如果您的MTA收到该封信件的目标是自己的用户时,就会通过MDA将这封信送到Mailbox去。

(4)Step 2.2:如果该封信的目的为其他MTA,则开始转发(Relay)的流程

如果这封信的目标是其他的主机呢?这个时候我们的MTA就会开始分析该封信是否具有合法的使用权限,若具有使用权限时,则我们的MDA会开始进行邮件转发,即该封信件会通过我们的MTA向下一台MTA的SMTP(端口25)发送出去。如果该封信件顺利的发送出去了,那么该封信件就会从队列中删除。

(5)Step 3:对方MTA主机接收信件

如果一切都没有问题的话,远程的MTA会收到我们MTA所发出的那封信,并将该信件放置到正确的用户信箱中,等待用户登录来读取或下载。

在整个过程中,您会发现信件是由我们的MTA帮忙发送出去的,此时MTA提供的协议是简单邮件传输协议(Simple Mail Transfer Protocol,简称SMTP),并且该封信最终是停留在对方主机的MTA上面,并不是您朋友的MUA上。


为何特别强调这一点?因为以前有个朋友有跟我说:鸟哥,您要寄E-mail给我的时候记得跟我讲,那我下班前将计算机开着,以免您的信寄不到我的信箱。真是晕了。所以这里才要特别强调,您的MUA不必一直开着,要收信时再打开即可。

了解了传送信件时MTA需要启动SMTP(端口25)之后,再来谈谈这封信件对方是如何接收的。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节

分享到:

  1. Linux服务器配置全程实录
  2. 揭秘--优秀PPT这样制作

热点职位

更多>>

热点专题

更多>>

读书

《广域网》
在开始学习WAN资料时,我经常面对资料深度不够或者为电气工程师编写的书。另外,在看了几本书,并且对Internet进行了研究以后,

最新热帖

更多>>

51CTO旗下网站

领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学院