电子邮件技术基础

1.1.1 电子邮件服务器

电子邮件技术基础_第1张图片

 功能:

1.接收用户投递的邮件

2.将用户投递进来的邮件转发给目标邮件服务器

3.接收其他邮件服务器发来的邮件,并把邮件存储到其管理的用户邮箱中

4.为前来读取邮件的用户提供读取服务


邮件服务器按功能可以划分为两种类型:SMTP服务器、POP3/IMAP服务器

SMTP服务器:用于替用户发送邮件和接收外面发送给本地用户的邮件,相当于现实生活中的邮件接收部门(可接收普通客户要投出的邮件和其他邮局投递进来的邮件)

POP3/IMAP服务器:用于帮助用户读取SMPT服务器接收进来的该用户的邮件,它相当于专门前来取包裹的用户提供服务的部门


图1.1中编号1、2、3由SMTP服务器完成的,编号4由POP3服务器完成的


1.1.2邮件客户端软件

邮件客户端软件负责与邮件服务器通信,主要用于帮助用户将邮件发送给SMTP服务器和从POP3/IMAP服务器读取用户的电子邮件。

邮件客户端软件通常集邮件撰写、发送、接收功能与=于一体,例如Outlook Express、Foxmail。

在web站点中可以集成邮件客户端软件的功能,例如,sina和sohu等大型门户网站,用户可以通过访问这些web站点来接收电子邮件。

要想让一个web站点能够帮助用户完成电子邮件的收发功能,只要将Outlook Express、Foxmail的邮件收发模块集成到web站点程序中即可,由邮件收发模块完成与邮件服务器的通信,有web网页提供邮件撰写和显示的操作界面。


1.1.3电子邮箱

E-mail地址,用户通过E-mail地址标识自己发送的电子邮件,同时也通过这个地址接受别人发来的电子邮件。

电子邮箱的获得需要在邮件服务器上进行申请,申请到的电子邮箱由邮件服务器进行管理,电子邮箱就是用户在邮件服务器上申请的账户。

邮件服务器把接收到的邮件保存到为该账号所分配的邮箱空间中,由于邮件服务器为用户提供的邮件空间是有限的,所以用户需要经常查收、清理自己的电子邮箱,以便腾出空闲空间接收新的电子邮件。


1.1.4邮件传输协议

电子邮件需要在邮件客户端软件和邮件服务器之间,以及两个邮件服务器之间进行传递,邮件的传递必须遵循一定的规则,即邮件传输协议。

SMTP协议 (Simple Mail Transfer Protocol  简单邮件传输协议)

定义了邮件客户端与SMTP服务器之间,以及两台AMTP服务器之间的通信规则

POP3协议(Post Office Protocol 邮局协议)

定义了邮件客户端软件与POP3服务器的通信规则

IMAP协议(Internet Message Access Protocol Internet 消息访问协议)

它是对POP3协议的一种扩展,也是定义了邮件客户端软件与邮件服务器的通信规则


图1.1中编号1、2、3功能采用SMTP协议,编号4功能采用POP3或IMAP协议


1.2DNS与主机名

1.2.1 面临的问题

Internet上的计算机是采用ip地址来标识其网络位置和访问路径的,计算机之间必须采用ip地址进行通信,显然,当用户访问Internet中的某个服务器上的网页或者其他资源时,必须知道该服务器的ip地址,才能访问到该服务器。由于ip地址是以数字的形式表示的,人们想要记住Internet上在众多服务器ip地址显然是一件十分困难的事情。

另外,与公司的电话号码可能会随着公司搬家而发生变更的情况类似,大多数公司的服务器在Internet上的ip地址通过都是临时租用的,而不是终生不变的。

这些情况会给Internet中直接使用ip地址进行通信带来了一定的困难和不便,于是又提出DNS的概念和应用


1.2.2 DNS

域名解析系统 Domain Name System
作用就是将计算机的ip地址映射成一个人们容易记忆的友好名称,例如将 218.30.99.150 映射成 "www.it315.org"

1.2.3 主机名

计算机的ip地址所映射称的名称即为计算机的主机名

1.2.4 DNS服务器

它是保存主机名和IP地址的映射关系的专用计算机,同时对外提供主机名与IP地址的映射关系的查询服务

1.2.5 正向解析与反向解析

根据某个计算机的主机名查询出其ip地址的过程为DNS正向解析,反之,根据某个计算机的ip地址查询出主机名的过程称为DNS的反向解析


1.2.6 DNS的基本应用

计算机的主机名与ip地址的关系,就像公司名称和公司电话号码一样,

在DNS服务器中注册了某台计算机的主机名与ip地址的映射关系后,其他计算机上的网络应用程序就可以使用该计算机的主机名与之进行通信了,当然,这也要求其他计算机上已经事先指定好了为其提供DNS查询服务的DNS服务器。

例如,在DNS服务器上已经注册好了"218.30.99.150"(IP地址)与''www.it315.org"(主机名)的映射关系,当在其他计算机上使用浏览器访问"http://www.it315.org"时,其他计算机将从DNS服务器中查询出主机名''www.it315.org"所对应的ip地址为 "218.30.99.150",然后使用这个ip地址去连接相应的web服务器。

虽然应用程序可以使用主机名去访问某台计算机,但是,计算机之间的通信最终必须依靠IP地址,首先要通过DNS服务器查询出主机名对应的IP地址后,然后再使用ip地址去访问目标计算机,只是这个过程是由底层网络系统自动完成的。如果没有为目标计算机注册主机名,或者没有为访问者计算机设置DNS查询服务器,那么访问者计算机就无法使用主机名来访问目标计算机,必须使用ip地址访问目标计算机

C:\Users\Administrator>ipconfig /all

Windows IP 配置

   主机名  . . . . . . . . . . . . . : 201605050385-
   主 DNS 后缀 . . . . . . . . . . . : creditease.corp
   节点类型  . . . . . . . . . . . . : 混合
   IP 路由已启用 . . . . . . . . . . : 否
   WINS 代理已启用 . . . . . . . . . : 否
   DNS 后缀搜索列表  . . . . . . . . : creditease.corp
以太网适配器 本地连接:

   连接特定的 DNS 后缀 . . . . . . . :
   描述. . . . . . . . . . . . . . . : Realtek PCIe GBE Family Controller
   物理地址. . . . . . . . . . . . . : 1C-39-47-3D-F4-00
   DHCP 已启用 . . . . . . . . . . . : 是
   自动配置已启用. . . . . . . . . . : 是
   本地链接 IPv6 地址. . . . . . . . : fe80::61dd:97b5:aab9:c19b%12(首选)
   IPv4 地址 . . . . . . . . . . . . : 10.108.21.72(首选)
   子网掩码  . . . . . . . . . . . . : 255.255.252.0
   获得租约的时间  . . . . . . . . . : 2017年2月24日 9:57:38
   租约过期的时间  . . . . . . . . . : 2017年2月25日 13:33:00
   默认网关. . . . . . . . . . . . . : 10.108.20.1
   DHCP 服务器 . . . . . . . . . . . : 10.108.20.1
   DHCPv6 IAID . . . . . . . . . . . : 337393991
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-1D-F6-F8-67-78-0C-B8-14-81-47

   DNS 服务器  . . . . . . . . . . . : 10.108.17.251
                                       10.108.17.252
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用
C:\Users\Administrator>ping gitlab.creditease.corp

正在 Ping gitlab.creditease.corp [10.100.8.78] 具有 32 字节的数据:
来自 10.100.8.78 的回复: 字节=32 时间=6ms TTL=56
来自 10.100.8.78 的回复: 字节=32 时间=5ms TTL=56
来自 10.100.8.78 的回复: 字节=32 时间=6ms TTL=56
来自 10.100.8.78 的回复: 字节=32 时间=6ms TTL=56

10.100.8.78 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 5ms,最长 = 6ms,平均 = 5ms


1.3.1 DNS域

为了方便对Internet上众多的主机名进行管理,在DNS系统中引入了域的概念。

一个域表示一组逻辑相关的计算机的组合,可以按照地区、行业、机构对计算机进行分组,所划分出来的每个组都可形成DNS的一个域。

DNS的域名也是按照层次结构进行设计,每层之间使用(.)进行分隔,且层次关系是从右到左的顺序指定,即层次中的最高级别的域名位于最右边。


计算机的主机名就是在它所属的域名前增加一个不含点(.)的本地名称组成的,本地名称与域名之间也是用点(.)进行分隔的,

例如,主机名"www.hb.wh.cn"表示隶属于"hb.wh.cn"域中的一台本地名称为"www"的计算机。可见,DNS中的域也是一种按计算机的名称进行分组的机制,通过主机名的后缀部分就可以知道计算机所属的域,只要两台计算机的后缀名称相同,他们就属于同一个域,


1.3.2 DNS域的管理

1.每个域都需要有一台DNS服务器进行管理,要想让某台计算机加入到某个域中,必须征得域管理员的同意后,再有域管理员在管理该域的DNS服务器上注册这台计算机的ip地址和主机名。虽然每个域都需要有一台DNS服务器对其进行管理,但为了节省资源,可以让一台DNS服务器监管多个域,但从逻辑上讲,仍然相当于每个域都有一台自己DNS服务器对其进行单独管理


2.一个域的DNS服务器只负责管理直隶属于这个域的每个主机名与其ip地址的映射关系,而不负责管理其子域中的主机名与ip地址的映射关系,

例如,"www.it315.org"、"ftp.it315.org"、"blog.it315.org"等主机名都是管理域"it315.org"的DNS服务器进行管理,而不能由管理域"org"的DNS服务器进行管理


3.每个子域都必须在其直接父域的DNS服务器上注册该子域的名称和该子域的DNS服务器的IP地址,

也就是说,在父域的DNS服务器上除了要注册属于该域的所有主机的信息外,还要注册属于该域的所有直接子域的域名及管理子域的DNS服务器的ip地址。

例如,必须在管理域"org"的DNS服务器注册子域"it315.org"和管理子域"it315.org"的DNS服务器的ip地址后,域名"it315.org"才能真正被外界所认可。


4.为了方便对顶级域名的统一管理,在顶级域名之上其实还有一个根域名,根域名用点(.)表示,

例如,"www.it315.org"也可以写为"www.it315.org.",最后的那个点(.)就表示根域名。

带有根域名部分的主机名或域名才是一个完整的域名,被称为完全限定域名(Fully Qualified Domain Name)

internet中的根域名由interNIC(国际互联网络信息中心)集中管理,顶级域名和其下的域名则有拥有该域名的组织、公司和个人自己管理。


1.3.3 域名的解析原理

当客户机通过一台DNS服务器查询某个主机名所对应的IP地址时,该DNS服务器首先检测客户机所请求的主机名是否属于自己所管理的域或子域,
如果是,则检索自己的数据记录或向子域的DNS管理服务器查询,然后将结果信息返回给客户机。
如果不是,则向管理根域的DNS服务器查询主机名中的顶级域名的DNS管理服务器的IP地址,再有顶级域名的DNS管理服务器查询
二级域名的DNS管理服务器的ip地址,以此类推,直到找到最低级别的域的DNS管理服务器,然后再通过这个最低级别的域的DNS管理服务器查询出主机名所在的ip地址。

电子邮件技术基础_第2张图片

从图1.14可以看出,主机名的解析过程是从根域的DNS管理服务器开始逐一往下查询的,根域的DNS查询服务器的ip地址必须是固定不变和完全对外公开的。
父域的DNS管理服务器必须知道子域的DNS管理服务器。

只要查询InterNIC(国际互联网络信息中心)的网站,就很容易直到根域的DNS管理服务器的ip地址,由于根域的DNS管理服务器的访问量很大,所以,InterNIC维护着多台根域DNS管理服务器,他们被分散在不同的国家和地区,以便全球的计算机可以就近访问。

事实上,在安装任何一种DNS服务器程序时,它都会提供一个初始文件,这个文件就包含了根域的DNS管理服务器的ip地址。

在图1.1.4,当DNS服务器接收到子域中的主机名的查询请求时,它直接将子域的DNS管理服务器的ip地址返回给查询者,然后查询者再向子域的DNS管理服务器进行查询。
除了这种方式之外,也可以将DNS服务器设置为另外一种方式进行工作,当它接收到子域中的主机名的查询请求时,不是直接将子域的DNS管理服务器的ip返回给查询者,而是主动向子域的DNS管理服务器发出查询请求,得到子域的DNS管理服务器返回的结果后,再将结果返回给查询者。如下图1.1.5
电子邮件技术基础_第3张图片

为了提高域名解析的效率,DNS查询服务器将在查询到的记录信息返回给客户机的同时,还会将记录信息保存在自己的缓存中,再有其他客户机向DNS查询服务器查询这条记录信息时,DNS查询服务器直接将缓存的结果返回给客户机。缓存的期限由授权管理这条记录信息的DNS服务器设置,通常为1天,缓存期限值作为记录信息的一部分返回给DNS查询服务器。如果某条记录信息在DNS查询服务器中缓存的时间超过了它的期限值,当再有客户机查询这条记录信息时,DNS查询服务器将重新查询这条记录并更新缓存。DNS服务器可以将它管理的记录信息设置为禁止其他DNS服务器缓存,这样,其他DNS服务器将不缓存从该DNS服务器上检索的结果,这通常用于某个DNS服务器管理的域中的主机名所对应的ip地址需要频繁更改的场合,例如 动态DNS系统。

1.3.4 动态DNS系统

将一个固定的主机名实时的映射到经常动态改变的ip地址上,以便Internet上的其他计算机始终可以使用一个固定的主机名来访问ip地址经常改变的计算机。

动态DNS系统由两部分组成:动态DNS服务器程序和客户端程序。在拨号上网的计算机上仅需要安装和设置动态DNS系统服务商所提供的的客户端程序,当一台计算机每次拨号上网分配了新的ip地址后,客户端程序将向动态DNS服务器报告新的ip地址,动态DNS服务器将立即更新其记录的这台计算机的主机名所对应的ip地址。由于动态DNS服务器禁止其他的DNS服务器缓存它的记录信息,所以,只要其他计算机访问属于某个动态DNS服务器管理的主机名名时,它们以及DNS查询服务器都不会有以前获得过的与这个主机名相对应的ip地址的缓存信息,而是必须重新向授权管理这个主机名的动态DNS服务器查询其当前的ip地址,这样,其他计算机获得的这台计算机的主机名所对应的ip地址就是实时的和准确的。

1.4MX记录

在DNS服务器上除了可以建立主机名和ip地址的映射外,还可以建立某个主机名与其别名的映射,建立某个域名与其SMTP服务器的映射。
在DNS服务器上创建的各项映射关系成为记录,一项映射关系就是一条记录,在DNS服务器上创建的主机名与IPD地址的映射关系成为A记录,主机名与别名的映射关系称为CNAME记录,域名与其SMTP服务器的映射关系称为MX记录。


DNS服务器上为什么要建立域名与其SMTP服务器的映射关系?
邮件地址后缀部分表示的通常都是一个域名,而不是接收邮件的服务器的主机名。例如"[email protected]"中的"it315.org"对应的就是一个域名。域只是一个逻辑组合概念,它并不代表真正的计算机,对于使用某个域名作为后缀的邮件地址,外界发送给它的电子邮件必须由一台专门的SMTP服务器进行接收和处理,接收和处理某个域的电子邮件的SMTP服务器即为该域的SMTP服务器,外界发送给某个域的电子邮件实际上都是发送给该域的SMTP服务器。


1.5电子邮件的工作原理

电子邮件技术基础_第4张图片

实线表示[email protected][email protected]发送邮件的过程,虚线表示[email protected][email protected]发送邮件

[email protected]的邮件客户端与sina的SMTP服务器建立网络连接,并以lisi的用户名密码登录后,使用SMTP协议把邮件发送给sina的SMTP服务器。
2.sina的SMTP服务器收到[email protected]提交的电子邮件后,首先根据收件人的地址后缀判断接受者的邮件地址是否属于该SMTP服务器管辖的范围,
如果是 就把邮件存储到收件人邮箱中,如果否 sina的SMTP服务器向DNS服务器查询收件人的邮箱后缀所表示的域名的MX记录,从而得到Sohu的SMTP服务器信息,
然后与Sohu的SMTP服务器建立连接并采用SMTP协议把邮件发送给Sohu的SMTP服务器。
3.Sohu的SMTP服务器收到sina的SMTP服务器发来的电子邮件后,也根据收件人地址判断该邮件是否属于SMTP服务器的管辖范围,
如果是 就把邮件存储到收件人的邮箱中,如果否 Sohu的SMTP服务器可能继续转发这封电子邮件,也可能丢弃这封电子邮件。
4.拥有[email protected]账户的用户通过邮件客户端程序与Sohu的POP3/IMAP服务器建立网络连接,并以wangwu的用户名和密码进行登录后,就可以通过POP3或IMAP协议查看[email protected]邮箱中是否有新邮件,如果有的话 则使用POP3/IMAP协议读取邮箱中的邮件。

邮件客户端和SMTP服务器发送邮件差异:
1.SMTP服务器接收到邮件客户端软件发送来的邮件后,需要根据收件人地址的域名将邮件转发给目标域的SMTP服务器,而大量的收件人地址中肯定会出现各种可能的域名,因此,SMTP服务器涉及到与其他多台不能事先确定的SMTP服务器进行通信,它需要具有根据收件人地址的域名查询出该域的SMTP服务器的功能,即需要具有查询域名的MX记录的功能。邮件客户端被设置为固定的SMTP服务器通信,它可以直接与指定的SMTP服务器建立网络连接。
2.对于来自某个邮件客户端软件的邮件传输请求,SMTP服务器可能需要对发件人的用户账号信息进行验证,因此,邮件客户端软件需要具有向SMTP服务器传送用户账号信息的功能。SMTP服务器能够直接接收来自其他SMTP服务器的邮件传输请求。

你可能感兴趣的:(JavaMail)