最近在做《计网》的课设,要求完成一个邮件服务系统,我们组采用的是HTML+Servlet+Tomcat的方式设计管理端,项目还未完全完成。已经实现了管理端+SMTP+POP3。虽然我个人负责POP3部分的工作,但总的来说还是受益匪浅。总结一下迄今为止的收获:
1.数据库设计时,有三个点我认为非常有意思。
一个是如何储存邮件。一般来说我们都会理所当然地认为mail表中存储user_to_id, user_from_id, date, subject, content等字段以便于信息的读存,但其实这样在存储群发邮件时会造成很大的冗余,因此,最后决定用mail表存储mail_id, content,再增加一个mail_of_user(mail_id, watched)来保存收发对应关系,以减少冗余。(但是没有考虑到用户查看收件信息,因此决定改动数据库……增加字段sender用来标记是收件/发件关系)
此外,也要注意,删除某封邮件最后一个对应关系时应当连同这封邮件在mail中的记录一起删除。
二是是否需要增加用户昵称字段。user(user_id, password, author, admin),大佬的观点是不需要昵称,因为昵称在邮件服务协议中并没有规定,即使数据库存储了用户昵称,也只能在我们的客户端显示,并不具有普适性(比如在别人的客户端登陆并不能显示昵称)。
三是管理员的密码不应当与登录邮箱的密码相同。考虑到邮件服务协议在数据传输的时候并不能保证安全性,所以最好区分“密码”与“授权码” ,即管理员在登录管理界面与收发邮件的密码是不同的。