📄 计费邮件服务器研究与实现.txt
字号:
根据上述解决方案,设计出计费邮件服务器实现模型如下:
图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 + -