一种邮件服务器系统及邮件分发的方法

文档序号:7668551阅读:201来源:国知局
专利名称:一种邮件服务器系统及邮件分发的方法
技术领域
本发明涉及电子邮件传输技术,尤其是指一种邮件服务器系统及邮件分 发的方法。
背景技术
目前,在电子邮件传输过程中所使用的简单邮件传输协议(SMTP)协议 是一种存储转发协议,该协议允许通过一系列的服务器将电子邮件(以下均简 称为邮件)发送到最终目的地。图1为现有技术中使用SMTP协议的邮件传输 系统的示意图。如图l所示,现有技术中使用SMTP协议的邮件传输系统中包 括邮件用户代理(MUA )、邮件传送代理(MTA )服务器、邮件投递代理(MDA) 服务器和目的地邮箱。其中,MUA可为用户提供一个界面,负责用户邮件的接 收、发送和管理,因此,MUA可以看成是一种客户端软件;MTA服务器的功 能是为所接收到的邮件提供路由;而MDA服务器的功能则是将所接收到的邮 件投递到目的地邮箱中。如图1所示,用户可通过MUA对邮件进行管理,并 通过MUA将所需发送的邮件发送给MTA服务器;MTA服务器将所接收到的 邮件存在在队列中,然后按照队列的顺序,为等待发送的邮件提供路由,并根 据路由将所述等待发送的邮件发送到下一个目的地,下一个目的地可能是另一 个MTA服务器,也可能是MDA服务器;MDA服务器则将所接收到的邮件发 送到目的地邮箱中,从而完成了邮件的传输。
图2为现有技术中MDA和MTA服务架构的示意图。如图2所示,现有技 术中MDA和MTA服务架构的示意图中包括提供web访问方式管理邮箱的 服务器(Webmail)、邮局协议(POP3)服务器、提供标准的SMTP协议发送邮 件服务器(Esmtp)、接受外域邮件的服务器(Mx)和提供标准的SMTP协议发
送邮件服务器(SmtpBG)。其中,Webmail、 Pop3、 Esmtp和Mx属于MTA服 务器,而SmtpBG属于MDA服务器。
目前,大型的邮件服务器系统中每种服务器都是几十到上百个,如何在多 个邮件服务器中做一个合理的选择是邮件服务器系统中一个非常重要的部分, 从而涉及到邮件服务器系统的邮件分发策略。
现有技术中有一种基于配置文件的方法,在该方法中,由于目前的邮件服 务器系统中有众多的邮件投递代理服务器,因此系统内部需要投递邮件的各个 服务器可根据自身存储的配置文件来获得邮件投递代理服务器的地址。然而, 当系统中的邮件投递代理服务器的数目不断增加,且系统内部需要投递邮件的 服务器的数目也不断增加时,实现配置文件的同步将成为一个大问题;而且, 当邮件投递代理服务器出现故障时,目前所采用的人工同步配置文件的方法在 实时性方面不够好,所以一旦出现配置文件不同步或者配置文件不全,就会导 致邮件投递代理服务器的选择出现问题。同时,上述的方法没有考虑MDA服 务器的状态和网络的优劣,而盲目地选择MDA服务器进行邮件分发,从而导 致服务器使用不均衡,降低了服务器的使用效率。

发明内容
有鉴于此,本发明实施例的主要目的在于提供一种邮件服务器系统及邮件 分发的方法,从而提高邮件服务器系统的效率。
为达到上述目的,本发明实施例中的技术方案是这样实现的
一种邮件服务器系统,该系统包括邮件分发服务器NameServer、至少一 个邮件传送代理MTA服务器和至少一个邮件投递代理MDA服务器;
所述MTA服务器,用于根据所需发送的邮件向所述邮件分发服务器发送 查询请求,并根据所述邮件分发服务器返回的MDA服务器地址,将所需发送 的邮件分发给MDA服务器;
所述MDA服务器,用于将所接收到的邮件投递到与该邮件收件人地址相 对应的邮箱中;
所述NameServer,用于根据接收到的查询请求从配置文件中选择MDA服 务器,将所选择的MDA服务器的地址返回给发送所述查询请求的MTA服务器。 本发明的实施例中还提供了 一种邮件分发的方法,该方法包括
A、 MTA服务器根据所需发送的邮件向NameServer发送查询请求;
B、 NameServer根据查询请求选择MDA服务器,将所选择的MDA服务器 的地址返回给所述MTA服务器;
C、 MTA服务器根据所述MDA服务器的地址将所述邮件分发到相对应的 MDA服务器上;
D、 所述MDA服务器将所述邮件投递到与该邮件相对应的邮箱中。 综上可知,本发明的实施例中^是供了 一种邮件服务器系统及邮件分发的方
法。由于上述邮件服务器系统中的邮件分发服务器具有配置文件,且该配置文 件可随时根据MDA服务器的代理服务器模块上报的MDA服务器的状态信息 进行更新,从而实现了配置文件的同步;同时,邮件服务器系统可通过所述的 邮件分发服务器,从多个MDA服务器中选择相应的、状态较好的MDA服务 器来进行邮件的分发,使得邮件服务器系统中所有邮件投递代理服务器都能得 到均衡利用,从而提高整个邮件服务器系统的效率,并能有效地处理各种异常 情况,使得即使在异常的情况下,也能高效得利用邮件投递代理服务器进行邮 件的分发。


图l为现有技术中使用SMTP协议的邮件传输系统的示意图。 图2为现有4支术中MDA和MTA月良务架构的示意图。 图3为本发明实施例中邮件服务器系统的结构图。 图4为本发明实施例中邮件分发的方法的流程图。
具体实施例方式
为使本发明的目的、技术方案和优点表达得更加清楚明白,下面结合附 图及具体实施例对本发明再作进一 步详细的说明。
图3为本发明实施例中邮件服务器系统的结构图。如图3所示,本发明 实施例中邮件服务器系统包括邮件分发服务器(NameServer)、多个MTA 服务器和多个MDA服务器。
所述MTA服务器,用于接收所需发送的邮件,并根据所接收到的邮件 向所述邮件分发服务器发送包括该邮件的收件人地址的查询请求,并接收 所述邮件分发服务器返回的MDA服务器地址,然后根据所述MDA服务器 地址将所述邮件分发给该MDA服务器;
所述MDA服务器,用于将所接收到的邮件投递到与该邮件收件人地址 相对应的邮箱中;通过代理服务器模块(NameAgent)向所述邮件分发服 务器定期上报自身的状况信息;
所述NameServer,用于根据接收到的各MDA服务器的状况信息,更新 配置文件,统一配置MDA服务器的地址;根据接收到的查询请求中的收 件人地址,从配置文件中选择与所述收件人地址相对应的MDA服务器地 址,将所选择的MDA服务器地址返回给发送所述查询请求的MTA服务器。 上述的MTA服务器可以为Webmail、 Pop3、 Esmtp或Mx。而上述的 MDA服务器可以是SmtpBG,且SmtpBG又可分为外域邮件投递代理服务 器(EBG)和本域邮件投递代理服务器(Loca旧G)两大类。其中,EBG负 责处理本域向外域投递的邮件,LocalBG负责处理外域向本域或者本域向本 域投递的邮件。此外,在上述的NameServer中还可设置一个接口才莫块 (NameClientAPI),用于处理所接收到的查询请求和上报的信息。
在上述的邮件服务器系统中,所述NameServer可根据所需发送的邮件 从多个MDA服务器中选择一个MDA服务器作为该邮件的邮件投递代理服 务器。在此之前,NameServer可根据配置文件中各MDA服务器的状况信息, 对所有的MDA服务器进行划分。具体来说,NameServer可将所有的MDA 服务器按照其所处的网络区域进行分区,处于同 一个网络区域中的MDA服 务器属于同一个分区,所述的网络区域包括电信、网通或教育网等;然后可
根据分组规则将同一个分区中的MDA服务器分成多个组。所述的分组规则 可根据实际情况预先设置,例如,分组规则可以是根据IP地址进行分组, 也可以是根据服务器的类型进行分组等。
在进行上述的划分之后,上述的邮件服务器系统可为所需发送的邮件选 择一个MDA服务器作为该邮件的MDA服务器,并将所需发送的邮件分发 到相应当MDA服务器上。具体的邮件分发的方法如下所述。
图4为本发明实施例中邮件分发的方法的流程图。如图4所示,本发明 实施例中邮件服务器系统进行邮件分发的方法包括如下所述的步骤
步骤401, MTA J良务器才艮据所需发送的邮件向NameServer发送查询请求。
具体来说,MTA〗良务器可根据所需发送的邮件向NameServer发送查询 请求,该请求中包括所需发送的邮件的收件人的地址等信息。
步骤402, NameServer根据查询请求选择合适的MDA服务器,并将所 选择的MDA服务器地址返回给所述MTA服务器。
具体来说,NameServer可根据查询请求中的收件人地址等信息,从配 置文件中选择与所述收件人地址相对应的MDA服务器地址,并将所述MDA 服务器地址返回给发送所述查询请求的MTA服务器。
所述的从配置文件中选择与所述收件人地址相对应的MDA服务器地址 包括如下所述的步骤
A) 、根据查询请求从多个分区中选择一个分区。
具体来说,可根据查询请求中所需发送的邮件的收件人地址,从多个 MDA服务器分区中选4奪一个分区。
B) 、从所选择的分区中选择一个分组。
具体来说,可根据所需发送的邮件的收件人地址,从所选择的分区中的 多个分组中选择一个分组。
C) 、从所选择的分组中选择一个MDA服务器。
具体来说,从所选择的分组中的所有MDA服务器中,根据配置文件中
所存储的该分组中各MDA服务器通过NameAgent上报的状态参数来选择一 个MDA服务器,所述上报的状态参数包括队列长度、邮件服务系统的进 程数(例如,smtpd进程的数目)、服务器的负载(Load)等。也就是说, NameServer可根据上述上报道状态参数,并使用预先设定的算法(例如, 负载均衡算法或动态反馈均衡算法等),择优选择用于投递邮件的MDA服 务器。
步骤403, MTA服务器将所述邮件分发到相对应的MDA服务器上。 具体来说,MTA服务器根据所接收到的MDA服务器地址,将所述邮
件分发到与所接收到的MDA服务器地址相对应的MDA服务器上。
步骤404, MDA l良务器将邮件l殳递到与该邮件收件人地址相对应的邮箱中。
此外,在实际应用场景中,可能会出现一些异常情况。以下将介绍上述 的邮件服务器系统对各种异常情况的处理的方法
1 )当异常情况为NameServer出现故障,MTA服务器无法向NameServer 查询MDA服务器的地址。
处理方法为设置两台NameServer并在每一个MTA上存储一个默认的 投递邮件服务器列表(ServerList),在每台NameServe上均有一个配置文 件。当MTA服务器需要进行查询MDA服务器的地址,可随机向其中一台 NameServe发送查询请求。如果该NameServe没有返回MDA服务器的地址 或返回错误信息,则MTA服务器可向另一台NameServe发送查询请求。如 果两台NameServer都出现故障,则MTA根据自身所存储的默认的ServerList 向MTA服务器返回MDA服务器的地址。
2)当异常情况为NameServe所接收的查询请求中包括一个域名,且 该域名在NameServe的配置文件中没有相对应的MDA服务器。
解决方法预先在NameServer的配置文件中指定一组全局的默iU殳递 服务器。当NameServe的配置文件中没有与某个域名相对应的MDA服务器 时,NameServer向MTA服务器返回所述全局的默认投递服务器的地址。
3) 当异常情况为某个分组中的所有MDA服务器都出现故障。 解决方法在NameServer的配置文件中,可为每个MDA服务器分组
指定另一组MDA服务器作为默认的MDA服务器组,当某组域名对应的某 个MDA服务器分组中的所有MDA服务器都出现问题的时候,系统将向 MTA服务器返回上述默认的MDA服务器组。
4) 当异常情况为NameAgent自身出现故障,但是NameAgent所在的 MDA服务器仍正常运行。
解决方法 一般来说,由于NameAgent的结构比4交简单,出现故障的 可能性很小,因此,当NameAgent出现故障时,可认为该NameAgent所在 的MDA服务器出现了故障,MDA服务器或其他的监控程序向系统报警, 由系统来对故障进行处理。
5) 当异常情况为NameAgent和MDA服务器都正常工作,但是MDA 服务器在队列中已经积压了大量的邮件。
解决方法由于通过NameAgent上报的关于MDA服务器的状态信息包 括队列长度、smtpd进程数和Load,而NameServer可根据所述上报的状 态信息和一定的算法(例如,负载均衡算法或动态反馈均衡算法等)来确定 MDA服务器状态的好坏。当NameServer确定MDA服务器的状态之后,可 将状态好的MDA服务器的地址优先返回给相应的MTA服务器。
在NameServer的配置文件中,描述了域名和MDA服务器之间的对应 关系。由于域名和MDA服务器之间有太多的数据项,为了更新维护的方便, 可将域名和MDA服务器的状况记载在单独的配置文件上。例如,域名配置 文件(USADomain.list)具有如下所述的格式
*hotmail.com
* yahoo.*
MDA服务器配置文件(USAServer.list)具有如下所述的才各式 172.16.62.40:25
172.16.25.15:25
而NameServer可使用的配置文件具有如下所述的格式 [Default]
BGServerFile=TELServer.list [Group 1]
DomainFile=CNCDomain.list BGServerFile=CNCServer.list BackupGroup=Default
DomainFile=EDUDomain.list BGServerFile=EDUServer.list B ackupGroup=Group 1
BGServerFile=SPAMServer.list BackupGroup=Default
BGServerFile=APIServer.list
BackupGroup=SpecGroup2
NameServer.conf
其中,[Default]配置节用于指明全局的默认投递服务器列表,当某个邮 件的收件人地址的域名在NameServer的配置文件中没有记载,则可^f吏用 [Default]配置节中的全局的默认投递服务器列表(例如,TELServer.list)。配置节(其中,X =1,2,...)分别对应于第X个分组(Group), 用于描述各分组中的域名和MDA服务器的对应关系。其中,DomainFile描
述一个域名列表的文件名(例如,CNCDomain.list) ; BGServerFile描述一 个MDA服务器列表的文件名(例如,CNCServer.list);而BackupGroup 则用于当[GroupX]配置节中所有列表的服务器都出现故障时,系统默认使用 的服务器。BackupGroup可以用来指定一个备用的分组(例如,Group 1 ), 当该分组中的所有MDA服务器均出现故障时,系统将使用BackGroup所指 示的分组中的服务器;而如果该配置节中没有BackupGroup,则系统默认使 用Default配置节里面的服务器列表。配置节(其中,X =1,2,...)用来指定一个专门用途的组(即 第X个特定组),可通过对NameServer的接口模块的调用,来直接指定使 用该专门用途的组中的MDA服务器进行邮件的分发。
此外,在NameServer所采用的通讯架构中,NameServer可采用多个传 输控制协议(TCP)进程连接各个需要查询的服务器,;而NameServer所 采用的查询协议使用文本格式,并提供如下的命令QUERY, UPDATE, LIST, QUIT等。系统中的各服务器可通过上述的命令对NameServer进行 访问。以下将对上述这些命令进行介绍。
1 ) QUERY命令
QUERY命令可用于向NameServer查询特定的收件人所对应的MDA服 务器地址。此时,NameServer可根据配置信息对收件人进行分组,并为每 个分组选择一定数量的候选MDA服务器的地址。例如
QUERY <rcpt—count> <spec—group—id>
<rcptl>
<rcpt2〉
<rcpt3>
+OK <group—count> rcptl = serverA, serverB rcpt2, rcpt3 = serverC
其中,QUERY为多行命令,第一行命令包含命令关键字和两个参数, 参数rcpt—count用于指定本次查询的收件人数量,参数spec—group—id用于 强制指定某一组MDA服务器;从第二行命令开始是收件人信息,每一个命 令行输入一个收件人信息。
NameServer根据上述QUERY命令对配置文件进行查询后,返回以 "+OK"开头的多行响应。其中,group—count用于指明收件人被分成的分 组的数目;从第二行开始,NameServer返回各个分组的情况,每一个响应 行返回一个分组的情况,同一分组内不同的收件人之间用逗号分隔,同一分 组内不同的MDA服务器信息之间也用逗号分隔,收件人信息和MDA服务 器信息之间用等号分隔。例如,在上述的实施例中,收件人rcptl为一个分 组,可使用的MDA服务器为serverA和serverB;而收件人rcpt2和rcpt3 为另一个分组,可使用的MDA服务器为serverC。其中,收件人信息的格式 可以是完整的email地址,例如,user@domain.com; MDA服务器地址可使 用IP地址端口 (ip:port)的形式,例如,172.16.62.40:25。
特别地,当某一收信人分组对应多个MDA月良务器时,NameServer可通 过NameClientAPI对所述多个MDA服务器按顺序进行尝试,从而使得 NameServer可才艮据一定的策略来决定所返回的查询结果,例如,NameServer 可使用轮转(Round-Robin)算法对多个运行良好的MDA服务器进行调度, 并根据调度结果返回查询结果。
2) UPDATE命令
各MDA服务器上的NameAgent可通过UPDATE命令请求NameServer 更新MDA服务器的状态信息。例如
UPDATE <svr—id> <mail—queue> <load> <proc—num>
+OK <svr—id> is on -ERR No such server.
其中,UPDATE命令有四个参数参数srv—id表示某个指定的MDA服
务器,可使用ip:port的形式;参数mail—queue表示队列长度;参数load表 示服务器负载;参数proc一num表示smtpd进程数量。
如果上述指定的服务器的状态信息已存储到NameServer的配置文件 中,则NameServer返回以"+OK,,开头的响应,其中,"is on"表示NameServer 已经接收到该使用UPDATE命令的MDA服务器发送的状态信息。
如果上述指定的服务器不在NameServer的配置文件中,则NameServer 返回以"-ERR"开头的响应。
MDA服务器的NameAgent需定期使用UPDATE命令向NameServer返 回其所监控的MDA服务器的状况信息。如果NameServer在一定期限内未 收到某个MDA服务器的NameAgent发送的UPDATE命令,则认为该MDA 服务器已经出现故障,因此,NameServer将不再将该MDA服务器的信息放 入通过NameClientAPI返回的查询结果中。
3 ) LIST命令
LIST指令用来查看所有MDA服务器的状态情况。 一般情况下不会使用 该命令,该命令主要用于调试(debug)。 4) QUIT命令
QUIT命令用于与NameServer断开连接。
通过使用上述的邮件服务器系统以及邮件分发的方法,可有效地从多个 MDA服务器中选择相应的、状态较好的MDA服务器来进行邮件的分发, 使得邮件服务器系统中所有邮件投递代理服务器都能得到均衡利用,从而提 高整个邮件服务器系统的效率,并能有效地处理各种异常情况,使得即使在 异常的情况下,也能高效得利用邮件投递代理服务器分发邮件。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护 范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。
权利要求
1、一种邮件服务器系统,其特征在于,该系统包括邮件分发服务器NameServer、至少一个邮件传送代理MTA服务器和至少一个邮件投递代理MDA服务器;所述MTA服务器,用于根据所需发送的邮件向所述NameServer发送查询请求,并根据所述NameServer返回的MDA服务器地址,将所需发送的邮件分发给MDA服务器;所述MDA服务器,用于将所接收到的邮件投递到与该邮件收件人地址相对应的邮箱中;所述NameServer,用于根据接收到的查询请求从配置文件中选择MDA服务器,将所选择的MDA服务器的地址返回给发送所述查询请求的MTA服务器。
2、 根据权利要求1所述的系统,其特征在于,所述MDA服务器还包括 代理服务器模块;所述代理服务器模块,用于向所述NameServer上报该代理服务器模块所属 的MDA服务器的状况信息。
3、 根据权利要求1所述的系统,其特征在于,所述NameServer还包括 接口模块;所述接口模块,用于接收查询请求和各MDA服务器上报的状态信息; 所述NameServer,还用于根据所接收到的各MDA服务器上报的状态信息, 更新配置文件。
4、 一种邮件分发的方法,其特征在于,该方法包括A、 MTA服务器根据所需发送的邮件向NameServer发送查询请求;B、 NameServer根据查询请求选择MDA服务器,将所选择的MDA服务器 的地址返回给所述MTA服务器;C、 MTA服务器根据所述MDA服务器的地址将所述邮件分发到相对应的 MDA服务器上;D、所述MDA服务器将所述邮件投递到与该邮件相对应的邮箱中。
5、 根据权利要求4的方法,其特征在于,在所述步骤B之前,该方法还 包括各MDA服务器将自身的状况信息上报给NameServer; NameServer根据各 MDA服务器上报的状况信息,更新配置文件。
6、 根据权利要求5的方法,其特征在于,在所述步骤B之前,该方法还 包括NameServer根据配置文件将邮件月良务器系统中的MDA服务器划分成至少 一个分区;将同一个分区中的MDA服务器划分成至少一个分组。
7、 根据权利要求6所述的方法,其特征在于,所述NameServer根据配置 文件将邮件服务器系统中的MDA M^务器划分成至少一个分区包括NameServer根据根据配置文件中的各MDA服务器的状况信息及各MDA 服务器所在的网络区域,将处于同 一个网络区域中的邮件投递代理服务器划分 在同一分区中。
8、 根据权利要求6所述的方法,其特征在于,所述根据查询请求选择MDA 服务器包括根据查询请求选择一个分区;从所选择的分区中选择一个分组;从所选择 的分组中选择一个MDA服务器。
9、 根据权利要求4所述的方法,其特征在于,在所述步骤A之前,设置 至少两台NameServer和一个默认的投递邮件服务器列表,所述步骤A和B包 括MTA服务器根据所需发送的邮件随机向一台NameServer发送查询请求; 当所述NameServe未返回MDA服务器的地址或返回错误信息时,则MTA服务器向另 一 台NameServe发送查询请求;当所有的NameServer均未返回MDA服务器的地址或返回错误信息时,则MTA服务器从默认的投递邮件服务器列表获取MDA服务器的地址。
10、 根据权利要求4所述的方法,其特征在于,在所述步骤B之前,在NameServer的配置文件中设置全局的默认投递服务器,所述步骤B包括当NameServe所接收的查询请求中包括一个域名,且该域名在NameServe 的配置文件中没有相对应的MDA服务器时,NameServer根据查询请求向MTA 服务器返回所述全局的默认投递服务器的地址。
11、 根据权利要求5所述的方法,其特征在于,该方法还包括当MDA服务器的代理服务器模块出现故障时,MDA服务器向系统报警。
12、 根据权利要求6所述的方法,其特征在于,在所述步骤B之前,在 NameServer的配置文件中为每个分组设置默认的MDA服务器,所述步骤B包 括当一个分组中的所有MDA服务器都出现故障时,NameServer根据查询请 求向MTA服务器返回所述默认的MDA服务器的地址。
全文摘要
本发明的实施例中公开了一种邮件服务器系统,该系统包括邮件分发服务器、至少一个邮件传送代理服务器和至少一个邮件投递代理服务器。本发明的实施例中还公开了一种邮件分发的方法,该方法包括A.MTA服务器根据所需发送的邮件向NameServer发送查询请求;B.NameServer根据查询请求选择MDA服务器,将所选择的MDA服务器的地址返回给所述MTA服务器;C.MTA服务器根据所述MDA服务器的地址将所述邮件分发到相对应的MDA服务器上;D.所述MDA服务器将所述邮件投递到与该邮件相对应的邮箱中。通过上述的系统和方法,可实现配置文件的同步;使得邮件服务器系统中所有MDA服务器都得到均衡利用,从而提高整个邮件服务器系统的效率。
文档编号H04L12/58GK101179532SQ20071030016
公开日2008年5月14日 申请日期2007年12月13日 优先权日2007年12月13日
发明者林少章, 黄铁鸣 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1