电子邮件协议相对域名解析服务来说,比较复杂,协议规范比较多,例如,POP3和IMAP均提供接收电子邮件的功能。电子邮件系统需要借助DNS服务器提供邮件地址的解析。电子邮件地址的格式是:用户名@域名。例如,作者的电子邮箱地址为hanyg@ nankai.edu.cn,其中,hanyg为用户名,nankai.edu.cn为域名。收发邮件时,经DNS服务器解析,域名nan-kai.edu.cn对应的IP地址为202.113.16.21,该IP地址就是邮件服务器的地址。
1.电子邮件协议
与前面讲述的面向比特的DNS等协议不同,电子邮件协议是面向字符的,客户端与服务器之间通过简单的命令进行交互。常见的电子邮件协议有SMTP、POP3、IMAP、MIME等几种。
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)属于邮件发送协议,它规定一个邮件服务器如何定义一个邮件和发送一封邮件,使用的端口号是25。RFC821给出了SMTP协议规范,指定了在一个简单的TCP连接上,两个邮件服务器之间如何进行通信。RFC822规定了电子邮件的格式。
POP3(Post Office Protocol-Version3,邮局协议第三个版本)主要规定如何连接POP3邮件服务器以及从POP3服务器检索电子邮件,使用的端口号是110,由RFC1939定义。
IMAP(Internet Message Access Protocol,互联网邮件访问协议)也提供从邮件服务器检索邮件的功能。它优于POP3协议,但是POP3是一种脱机模式的电子邮件协议,不能在线操作,而IMAP协议可以对邮件进行在线操作,即用户在本地客户端的操作如同在IMAP邮件服务器上操作一样。
MIME(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展)是对电子邮件协议的扩展,用以支持非ASCII字符。
2.邮件系统框架
图7-8是当前互联网的电子邮件系统框架。邮件系统由MUA、MTA和MDA3部分构成。MTA和MDA两部分构成邮件传输系统。DNS负责电子邮件地址、邮件服务器的域名解析。
图7-8 电子邮件系统框架
MUA(邮件用户代理)是一种客户端软件,可以为用户提供收取邮件、回复邮件、撰写邮件的功能。常见的MUA包括Linux平台上的Mail、MailX、Elm等,Windows平台上的Outlook Express、Foxmail等。
MTA(邮件传输代理)是一种运行在服务器端的软件,也就是邮件服务器。它主要负责在服务器间传输电子邮件。在UNIX系统常用的MTA软件有Sendmail、Postfix等,Win-dows平台下有WinWebMail、MagicMail等。
MDA(邮件交付代理)通常与MTA一起运行,将MTA接收的邮件按照目的位置做出判断,以决定该邮件是否放在本服务器账号下的邮箱,或是再经过MTA将此邮件转发到下一个MTA。MDA一般在后台执行。
3.邮件传递流程
邮件传递分本地网络邮件传递和远程网络邮件传递两种情况,这两种邮件传输过程可以用流程图7-9来表示。
(www.daowen.com)
图7-9 电子邮件传送流程图
如果是本地网络邮件传递,即电子邮件的发送者和接收者都位于同一台邮件服务器中,则传递流程比较简单。首先,MUA利用TCP连接到邮件服务器的端口25,将电子邮件传送到邮件服务器(MTA),然后,邮件会保存在邮件队列中,交由MDA直接传送到收件人邮箱。收件人利用POP3或者IMAP软件,连接到邮件服务器就可以读取邮件。
如果是远程网络邮件传递,即电子邮件的发送者和接收者位于不同的网络,则邮件传送过程较为复杂,传送流程如下。
1)MUA利用TCP连接到邮件服务器的端口25,将电子邮件传送到邮件服务器(MTA),邮件会保存在邮件队列中。
2)经过服务器判断,如果收件人不属于本地邮件服务器,则服务器先向DNS服务器解析远程邮件服务器的IP地址。
3)解析失败,放弃投递,或置于邮件队列中等待下一次重新发送。若多次连接失败,可以放弃投递,给发送者返回失败信息。若解析成功,MTA将利用SMTP将邮件传送到远程邮件服务器。
4)远程邮件服务器的MTA收到邮件之后,将邮件交由MDA处理,并放入收件人的邮箱。之后接收者利用邮件软件,连接到邮件服务器处理邮件,整个邮件传送过程结束。
如果MTA在传输邮件的过程中遇到网络拥塞或中断,邮件将会保留在发送队列中,等待一段时间重新尝试发送。
4.邮件中继
在电子邮件系统中,MTA可以分为两类,一类是本地MTA,一类是中继MTA。中继MTA用于邮件的中继传输,主要是为了防止邮件路程过长。在采用中继MTA时,邮件传输过程如图7-10所示。
图7-10 中继时的邮件交互流程
一般对于用户来说是感觉不到邮件中继服务器的存在,因为这都是一些提供邮箱服务或邮件中继解决方案的公司来解决的。在使用邮件用户代理发送邮件时,邮件首先投递到本地邮件服务器,如163邮箱服务器。然后邮件由163邮箱服务器决定如何发送,如果是本地网络的,即都是163邮箱用户,那么直接转发就行,如果是别的邮箱服务器,那么可能会遇到中继。当两个邮箱服务器之间没有直接连接时,那么就需要通过中继邮件服务器了。这个好比局域网中的路由器,对于一些不知道的报文都直接转发给路由器,由路由器进行转发一样。
实际网络中很少使用中继邮箱服务器,一般都可以直接发送至接收者的邮箱。中继邮箱服务主要用于解决一些比较特殊的问题,如防火墙的分隔、IP地址列入动态IP池、自定义加密、不同网络之间的邮件互通等。
当前互联网中的邮件中继服务由专门的公司运营,是一种收费服务。提供邮箱中继服务的公司会在一些电信、联通的骨干结点设置中继邮箱服务器。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。