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)之后,再来谈谈这封信件对方是如何接收的。
| 回书目 上一节 下一节 |
|
· 第六章 你能帮我吗?.. · Linux笔试面试题选摘测.. · 08年5月软考网管上午真.. · 性能测试从零开始 目录 · 08年5月软考网工上午真.. · 上周拒绝服务攻击(DDo.. |
· 08年5月各大网上书店及.. · 2008年5月24日软考试题.. · 软件设计师专家临考模.. · 上周网络管理员专家自.. · 网络工程师自测获奖名.. · 08年4月各大网上书店及.. |
|
||||
| · NAC安全访问控制 · 网络布线测试仪器 · Windows Server 2008专.. · Windows远程桌面应用 · 网络故障排除宝典 · 运营商封堵ADSL共享 中.. · 解析35岁技术人的价值.. · 世纪枭雄比尔盖茨的王.. |
· 主流品牌防火墙配置 · ASP.NET开发教程 · 超级计算机TOP500专题 · Vista SP1对决XP SP3 · SQL Server 2008/2005.. · 程序员如何成长? · C#技术开发指南 · 虚拟化技术还有点“虚” |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Windows远程桌面应用 · C#技术开发指南 · Apache技术专题 |
· Windows集群服务应用 · C#技术开发指南 · 国际文档格式标准开战 · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 |
|||