专利名称:一种电子邮件网关类系统邮件账户维护方法
技术领域:
本发明涉及的是电子邮件网关类系统邮件帐户的维护方法。
(二)
背景技术:
电子邮件凭借低廉、简单、快捷的优势已经成为人们工作和生活中的重要 通信方式,但人们在享受电子邮件提供诸多便捷之时,也在忍受着它的副产品 所带来了的痛苦,即互联网上垃圾邮件泛滥成灾,并且近几年有愈演愈烈的趋 势。
目前对垃圾邮件的治理还是集中在依靠垃圾邮件过滤技术。而基于网关的 电子邮件过滤技术成为从根本上遏制垃圾邮件的有效方法。该技术通过将所有 经过网关的电子邮件进行分析,在判断是否投递,可以减少垃圾邮件在网络上 传输所占用的带宽。
但目前基于网关类的电子邮件过滤产品由于其和真正的电子邮件系统隔 离,无法获得其邮件帐户信息,因此对邮件帐户的管理缺乏有效的手段。此外, 基于字典的垃圾邮件方法,通过构造邮件地址向大量邮件服务器发送垃圾邮件。 因此,实现一种基于网关的邮件账户维护技术十分重要。
(三)
发明内容
本发明的目的在于提供一种电子邮件网关类系统邮件帐户维护的方法。 本发明的目的是这样实现的
1 )采用SMTP协议和POP3协议探测邮件帐户是否存在;
2) 采用散列结构和时间链表结构存储邮件帐户信息;
3) 经过固定周期时间将散列结构存储到文件;
4) 支持从文件系统中加载邮件帐户信息;
5) 邮件帐户是否存在判定方法。
所述的采用SMTP协议探测方法为l)将网关接收到的电子邮件信息采用 SMTP协议发送到目标邮件系统;2)如果投递成功则将证明该邮件帐户存在, 否则,邮件帐户不存在。所述的采用POP3协议探测方法为1)从网关收到的
4电子邮件中提起出目标账户信息username; 2)采用POP3协议发送User usemame,如果收到用户名不存在信息,则邮件帐户不存在;否则,邮件帐户 存在。
所述的采用散列结构和时间链表结构存储邮件帐户信息的方法是1)将邮 件帐户"@"字段之前提取2个字节,如果不足用比特"00000000"补齐2) 在提取的信息中去掉每个字节的第一个比特,这样构成由14个比特构成的比特 串;3)根据14比特构成二进制的数值作为散列表的入口; 4)在散列表中查 找到这一行的最后一个邮件信息,并将地址和时间信息写入散列结构中,并将 前一个接点的后续指针指向该接点,时间节点末指针也指向该节点。
所述的经过固定周期时间将散列结构存储到文件的方法是1)从散列表中
依据时间链提取出邮件信息和时间信息;2)将邮件信息和时间信息存储到指定 目录中的"SPAM.txt"文件中的一行中,并在结尾添加回车换行,即"\r\n"; 3)使用循环结构将所有账户信息都存储到该文件中。
所述的邮件帐户是否存在判定的方法是1)从接收到的电子邮件信息中提 取出目标邮件地址;2)将该邮件地址进行散列(散列方法如前述相同);3) 在散列表中查找其是否存在,若存在则将邮件正常投递,否则丢弃。
针对以上情况,本发明从邮件的目标账户处罚,提出了电子邮件网关类系 统邮件帐户维护的方法。
本发明是基于如下问题而设计的
基于网关类的电子邮件过滤产品由于其和真正的电子邮件系统隔离,无法 获得其邮件帐户信息,因此对邮件帐户的管理缺乏有效的手段。此外,基于字
典的垃圾邮件方法,通过构造邮件地址向大量邮件服务器发送垃圾邮件。因此, 实现一种基于网关的邮件账户维护技术具有十分重要的意义。
本发明的主要技术特征体现在
1)不需要借助其他特别算法和协议
从邮件系统中获取账户信息, 一般需要采用特定的技术和额外的约定,将帐 户信息传递给网关系统,本技术采用已有的电子邮件协议进行邮件探测,不需要 进行额外的开发和设计。
具体技术路线是l.发送SMTP报文,测试目标邮件帐户是否存在;2.发送
5POP3报文测试邮件帐户是否存在。
2)邮件帐户探测可以自动按时间实时更新
具体技术路线1.根据邮件帐户信息建立的散列结构中加入了时间链信息; 2)时间链按照时间先后顺序组织,可以减少邮件信息的组织时间。
本发明的优点在于可以同时为多台邮件服务器的账户信息进行管理;过 滤大量目标地址不存在的垃圾邮件信息。
(四)
图1散列表结构; 图2时间链表结构;
图3散列表与时间链表结合结构
具体实施方式
下面结合附图举例对本发明做更详细地描述
1) 邮件帐户探测方法
基于网关类的电子邮件过滤产品由于其和真正的电子邮件系统隔离,无法获 得其邮件帐户信息,因此对邮件帐户的管理缺乏有效的手段。从邮件系统中获取 账户信息, 一般需要采用特定的技术和额外的约定,将帐户信息传递给网关系统, 本技术采用已有的电子邮件协议进行邮件探测,不需要进行额外的开发和设计。 *发送SMTP报文,测试目标邮件帐户是否存在;具体实现如下1)发 送"helo目标服务器"报文,并得到确认;2)发送"mail from:源地 址报文",并得到确认;3)发送"rcptto:目标地址"报文,如果受到 "550 no such user here"则证明该账户不存在,否则存在。 *发送POP3报文测试邮件帐户是否存在具体实现如下1)建立POP3 连接,收到"+OK……"确认;2)发送"User目的地址"报文,如 果收到"+OK......"证明该账户存在,否则不存在。
2) 邮件帐户信息管理方法
针对邮件帐户信息,需要有一种高效的动态管理方法。这种方法要求能够 适应账户的添加、删除等操作,并且要求能够在较短的时间内快速匹配过程。
本技术采用散列表和时间链表结构相结合的方法。其中散列表结构如图
1所示、时间链表结构如图2所示和散列表结构和时间链表结合如图3所示。散列表对具有相同散列值的邮件地址进行管理。时间链表结构将所有地址信息 用时间链连接起来,保证信息按照顺序管理,这两种方法结合即达到了将邮件 帐户信息组织起来的目的,支持快速匹配,又实现了实时的邮件帐户更新。
工作原理如图3所示,每个邮件地址信息通过双向散列表组织起来,每个 结构又添加了两个时间链表指针,这样可以增加检索和节点调整地效率。
主要对散列表的操作分为以下几种
1. 在散列表中添加一个节点,分为以下几步a)计算出节点X所在的散 列地址,并找到最后一个节点Y; b)用Y节点的后项位置指针指向X 节点,将X节点的前项位置指针指向Y节点;C)用时间尾指针节点Z 的时间后项指针指向X节点,用X节点的前项时间指针指向Z节点, 并将时间位指针节点指向X节点。
2. 在散列表中去掉一个节点,分为以下几步a)计算出删除节点X所在 的位置;b)用X节点的位置前项节点的后续指针指向X节点的位置后 项节点,并将X节点的位置后项节点的前项指针指向X节点的位置前 项节点;c)用X节点的时间前项节点的后续指针指向X节点的时间后 项节点,并将X节点的时间后项节点的前项指针指向X节点的时间前 项节点;
3. 更新时间节点,分为以下几个步骤1)当判断时间达到时间头指针所 指向的节点X时,首先判断该节点所存储的地址信息是否有效。2)如 果无效,则将该节点删除,按照在散列表中去掉一个节点步骤进行; 如果有效,将时间头指针指向X节点的时间后续节点,将X节点的时 间前项指针指向时间尾节点指向节点Y,并将节点Y的时间后项指针指 向X节点,将时间尾指针指向X节点。
2)定时备份与恢复方法
由于散列表结构比较复杂,如果每次都重新生成散列表结构,则会对系 统会造成很大的负担,因此采用定时备份的方法,将散列表中的信息定时 存储的文件系统中,存储策略按照时间顺序进行。文件名为"SPAM.txt"
例如
webmaster@sina.com 2008-11-18 20:20:20 webmaster@163.com 2008-11-18 20.22.20每一个条记录中的地址信息和时间信息用空格分开,每条信息用回车换 行分开。由于在存储过程中文件描述符在打开状态,程序的突然退出会造 成信息丢失,因此在备份的过程中,将信息存储到临时文件中,如
"SPAMl.txt",中,等到所有信息都保存完毕,再将用文件"SPAMl.txt" 覆盖文件"SPAM.txt",最后将"SPAMl.txt"文件删除。
当系统重新启动的时候,要从文件中恢复散列表结构,由于文件中采用 按照时间顺序存储,所以按照邮件帐户信息管理方法中"在散列表中添加 一个节点"步骤进行。
权利要求
1、一种电子邮件网关类系统邮件帐户维护方法,其特征是1)采用SMTP协议和POP3协议探测邮件帐户是否存在;2)采用散列结构和时间链表结构存储邮件帐户信息;3)经过固定周期时间将散列结构存储到文件;4)支持从文件系统中加载邮件帐户信息;5)邮件帐户是否存在判定方法。
2、 根据权利要求1所述的电子邮件网关类系统邮件帐户维护方法,其特征 是所述的采用SMTP协议探测方法为1)将网关接收到的电子邮件信息采用 SMTP协议发送到目标邮件系统;2)如果投递成功则判定该邮件帐户存在,否 则,邮件帐户不存在;所述的采用POP3协议探测方法为l)从网关收到的电 子邮件中提起出目标账户信息usemame;2)采用POP3协议发送User username, 如果收到用户名不存在信息,则判定邮件帐户不存在;否则,邮件帐户存在。
3、 根据权利要求2所述的电子邮件网关类系统邮件帐户维护方法,其特征 是所述的采用散列结构和时间链表结构存储邮件帐户信息的方法是l)将邮 件帐户"@"字段之前提取2个字节,如果不足用比特"00000000"补齐;2) 在提取的信息中去掉每个字节的第一个比特,这样构成由14个比特构成的比特 串;3)根据14比特构成二进制的数值作为散列表的入口; 4)在散列表中查找 到这一行的最后一个邮件信息,并将地址和时间信息写入散列结构中,并将前 一个接点的后续指针指向该接点,时间节点末指针也指向该节点。
4、 根据权利要求3所述的电子邮件网关类系统邮件帐户维护方法,其特征 是所述的经过固定周期时间将散列结构存储到文件的方法是O从散列表中 依据时间链提取出邮件信息和时间信息;2)将邮件信息和时间信息存储到指定 目录中的"SPAM.txt"文件中的一行中,并在结尾添加回车换行,艮卩"\r\n"; 3)使用循环结构将所有账户信息都存储到该文件中。
5、 根据权利要求4所述的电子邮件网关类系统邮件帐户维护方法,其特征 是所述的支持从文件系统中加载邮件帐户信息为l)打开文件"SPAM.txt", 并从中获取一行,以"\r\n"为分隔符;2)从提取出的信息中分离出邮件地址和时间信息,将这一行信息添加到散列表中;3)采用SMTP协议和POP3协议 探测邮件帐户是否存在。
6、根据权利要求5所述的电子邮件网关类系统邮件帐户维护方法,其特征 是所述的邮件帐户是否存在判定的方法是1)从接收到的电子邮件信息中提 取出目标邮件地址;2)将该邮件地址进行散列;3)在散列表中査找其是否存 在,若存在则将邮件正常投递,否则丢弃。
全文摘要
本发明提供的是一种电子邮件邮件网关类系统邮件账户维护的方法。使用POP3协议和SMTP协议探测邮件帐户信息,并将有效账户信息存储在动态散列表中,通过时间滑动窗口维护信息的有效性,这样当发现投递失败的邮件则将其从散列表中丢弃,对于新增加的用户在经过滑动窗口的等待时间以后在重新进行探测。在固定周期内,将散列结构存储到文件系统中,防止信息丢失,在系统意外重起时,可以直接从文件加载。本发明的有点在于1)可以帮助邮件网关过滤掉大量账户不存在的邮件信息,降低了网关的负担,提高网关系统的利用率;2)支持在一个邮件网关中,同时管理多个邮件系统,减少了系统的部署成本。
文档编号H04L12/58GK101499981SQ20091007157
公开日2009年8月5日 申请日期2009年3月19日 优先权日2009年3月19日
发明者妍 初, 吴艳霞, 林 国, 张乐君, 张健沛, 张泽宝, 静 杨, 申林山, 迪 高, 华 黄 申请人:哈尔滨工程大学