分类: LINUX
2011-01-17 10:12:34
下面以sina和sohu这两个电子邮局为例来讲解电子邮件的传输过程和工作原理。假设sina邮箱的账户为lisi@sina.com,sohu邮箱的账户为wangwu@sohu.com,它们之间的邮件收发过程如图1.20所示。
图1.20
图1.20中实线部分表示lisi@sina.com账户向wangwu@sohu.com账户发送邮件的过程,虚线部分表示wangwu@sohu.com账户向 lisi@sina.com账户发送邮件的过程。下面通过分析lisi@sina.com账户向wangwu@sohu.com账户发送邮件的过程,来具体讲解一封邮件从发送到接收所涉及的环节。
lisi@sina.com的邮件客户端程序(这里假设为Outlook Express)与sina的SMTP服务器建立网络连接,并以lisi的用户名和密码进行登录后,使用SMTP协议把邮件发送给sina的SMTP服务器。
sina 的SMTP服务器收到lisi@sina.com提交的电子邮件后,首先根据收件人的地址后缀判断接收者的邮件地址是否属于该SMTP服务器的管辖范围,如果是的话就直接把邮件存储到收件人的邮箱中,否则,sina的SMTP服务器向DNS服务器查询收件人的邮件地址后缀(sohu.com)所表示的域名的MX记录,从而得到sohu的SMTP服务器信息,然后与sohu的SMTP服务器建立连接并采用SMTP协议把邮件发送给sohu的SMTP服务器。
sohu 的SMTP服务器收到sina的SMTP服务器发来的电子邮件后,也将根据收件人的地址判断该邮件是否属于该SMTP服务器的管辖范围,如果是的话就直接把邮件存储到收件人的邮箱中,否则(一般不会出现这种情况),sohu的SMTP服务器可能继续转发这封电子邮件,也可能丢弃这封电子邮件。
拥有wangwu@sohu.com账户的用户通过邮件客户端程序(这里假设也为Outlook Express)与sohu的POP3/IMAP服务器建立网络连接,并以wangwu的用户名和密码进行登录后,就可以通过POP3或IMAP协议查看wangwu@sohu.com邮箱中是否有新邮件,如果有的话,则使用POP3或IMAP协议读取邮箱中的邮件。
图1.20中的虚线部分表示wangwu@sohu.com账户向lisi@sina. com账户发送邮件的过程,此过程与lisi@sina.com账户向wangwu@ sohu.com账户发送邮件的过程类似,这里不再复述。
多想一想 邮件客户端程序和SMTP服务器
分别如何发送邮件
邮件客户端软件与SMTP服务器之间,以及两台SMTP服务器之间都采用SMTP协议进行通信。邮件客户端软件只采用SMTP协议发送邮件,即邮件客户端软件只作为 SMTP协议的发送方。SMTP服务器既要采用SMTP协议向其他SMTP服务器发送邮件,又要采用SMTP协议接收其他SMTP服务器或邮件客户端软件发送来的邮件,即SMTP服务器既作为SMTP协议的发送方,又作为SMTP协议的接收方。邮件客户端软件与SMTP服务器都可以使用SMTP协议发送邮件,仅发送邮件这一功能而言,它们在技术实现上有何差异呢?它们的差异主要体现在以下两个方面:
(1)SMTP 服务器接收到邮件客户端软件发送来的邮件后,需要根据收件人地址的域名将邮件转发给目标域的SMTP服务器,而大量的收件人地址中肯定会出现各种可能的域名,因此,SMTP服务器涉及到要与其他多台不能事先确定的SMTP服务器进行通信,它需要具有根据收件人地址的域名查询出该域的SMTP服务器的功能,即需要具有查询域名的MX记录的功能。邮件客户端软件被设置为与固定的SMTP服务器通信,它可以直接与指定的SMTP服务器建立网络连接,因此它不需要具有根据收件人地址的域名来查询该域的SMTP服务器的功能。
(2)对于来自某个邮件客户端软件的邮件传输请求,SMTP服务器可能需要对发件人的用户账号信息进行验证,因此,邮件客户端软件需要具有向SMTP服务器传送用户账号信息的功能。SMTP服务器能够直接接受来自其他SMTP服务器的邮件传输请求,因此,SMTP服务器在发送邮件时根本不需要传送用户账号信息的功能。