⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 计费邮件服务器研究与实现.txt

📁 大量Delphi开发资料
💻 TXT
📖 第 1 页 / 共 2 页
字号:
根据上述解决方案,设计出计费邮件服务器实现模型如下:


图4 计费邮件服务器实现模型

整个计费邮件系统由sendmail、mail.local、popper、通信守护进程cmpd、计帐程序、密码修改程序及相关数据构成,其相互关系及工作流程在4.3节中说明,下面介绍主要数据结构。

1) 用户表mailusrtab

char name[17]; /* 用户名 */

char student_no[15];/* 学号/证号 */

char passwd[17]; /* 加密的密码 */

char realname[21]; /* 真实姓名 */

int usertype; /* 用户类型 */

char annotation[31];/* 备注 */


2) 信件信息表mailmsgtab

char name[15]; /* 用户名 */

int msgnum_f; /* 国外信件数 */

long size_f; /* 国外信件长 */

int msgnum_n; /* 国内信件数 */

long size_n; /* 国内信件长 */


3) 计费日志mailfee.log

char pktype; /* 国内/国外 */

char reserved[6]; /* 保留 */

char user[17]; /* 用户名 */

char student_no[15];/* 学号 */

struct tm recvdate; /* 取信时间 */

short msgnum; /* 信件数 */

long droplength; /* 信件长 */

char IPaddr[16]; /* 取信的IP */

char checksum; /* 校验和 */


4.3 系统的典型工作过程

下面我们用一个实际的例子来看系统的工作过程:

1. 一封寄给studmail@mail.cic. tsinghua.edu.cn的邮件到达邮件服务器mail.cic.tsinghua.edu.cn,SMTP服务器程序sendmail接收该邮件并转交mail.local程序;mail.local首先判断该邮件是否从不受欢迎的站点寄来的信,若是则退回;若不是则查询用户表,确认本机有此用户后将邮件写入名为studmail的系统邮箱,同时将邮件信息写入邮件信息表mailmsgtab。

2. 在166.111.5.1的用户studmail在pop3客户程序中输入自己的帐号和口令,并与mail.cic.tsinghua.edu.cn的pop3服务器程序popper连接。popper查询用户表,如果是正常用户,由pop_dropcopy将系统邮箱拷贝至临时邮箱,同时将该用户在mailmsgtab表中的记录连同邮件总长度及用户IP作为UDP包发送给守护进程cmpd,并清空mailmsgtab表中相应记录。用户可以通过其他POP3指令从临时邮箱中收取邮件,删除邮件等等,结束后由popper将没有删除的邮件反拷贝至系统邮箱;如果popper发现该用户是欠费用户,则将保存有催款信息的公告邮箱,而不是含有用户邮件的系统邮箱拷贝至临时邮箱,其他过程相同,这样用户只能看到催款信息,直到其标志恢复为正常用户。

3. cmpd将接收到的UDP包进行校验,确认是正常的计费信息后写入日志文件。

4. 计帐程序在每天的指定时刻(一般为上线较少的深夜) 将日志文件写入数据库,同时把用户在用户表中修改过的密码写入数据库,最后根据数据库更新用户表mailusrtab(包括修改用户标志,增加新用户,删除旧用户等等)和邮件信息表mailmsgtab(为新用户增加表项)。

5. 密码修改程序作为TCP/IP超级服务器inetd的子服务程序,在用户使用远程登录时自动启动,为用户提供密码修改服务,并根据用户操作更新其在用户表mailusrtab中的相应表项。

4.4 系统性能分析

影响系统性能的主要问题包括以下几个方面:

1. cmpd是通过无连接的UDP数据报来接收计费信息的,目的是避免用于连接的时间过长和消耗网络资源过多。但是,在上线用户很多的情况下,UDP包的丢包概率有多大?从理论上讲,UDP包的丢失最可能是传输信道的不可靠性,由于我们的发送方和接收方在同一台主机上,所以信道是相当可靠的。对此,我们在Sun-ultra1这种不算高档的工作站上,用一个进程尽可能快地向cmpd发送UDP包3,000个,结果无一遗漏地被接收。在实际应用中,也没有发现丢包现象。

2. 每封来信都要向邮件信息表mailmsgtab写信息,每次取信都要从mailmsgtab中读信息,在多大程度上会影响系统性能?在设计中,mailmsgtab同用户表mailusrtab一样采用用户名为关键字排序,并且其记录具有一一对应关系,因此,用户信息在mailusrtab和mailmsgtab中的相对位置是相同的。因为mail.local和popper都要检索mailusrtab表,所以对于mailmsgtab的检索可以省去,而直接找到正确的记录位置。在1000个用户的试运行期间,用户普遍反映系统较快,和没有计费的邮件系统没有差别。

5 结束语
对电子邮件按流量计费是一个符合中国国情的做法,它的实现有助于电子邮件在我国的普及,必将产生良好的社会效益和经济效益。按照以上的解决方案,我们成功开发了一套计费邮件系统。该系统在清华大学计算机与管理信息中心开放实验室的Sun Ultra1 170(Solaris2.5)平台上对1000个用户进行了四个月的试运行,效果良好。同时在微机Linux环境做了较小规模的测试,也是较为成功的。


参考文献:

1. J.Postel. Simply Mail Transport Protocol (FRC821). 1982.8

2. J.Myers. Post Office Protocol –version 3 (RFC1939). 1996.3

3. A.S.Tanenbaum. Computer Network (version 3). 1996

4. Eric Allman. Sendmail – Installation and Operation Guide. 1996




Research & Implement of Account Mail Server


Shiyan Jiang Dongxing Baibing Qili

Computer & Information management Center of Tsinghua University

Beijing 100084, P.R.China

jdx@cic.tsinghua.edu.cn


Abstract This paper introduces the principle, network protocol and software of electronic mail, emphasizes a design of account mail server, and it gives a implement model of accounting mail server.


Keywords Electronic mail, Account, SMTP, POP3

  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -