《推荐-软件技术专业毕业实训报告》由会员分享,可在线阅读,更多相关《推荐-软件技术专业毕业实训报告(11页珍藏版)》请在金锄头文库上搜索。
1、 毕业实训报告实训题目: 邮件服务器的收发系统 系 别: 信息工程系 专 业: 学 号: 姓 名: 指导教师: 提交日期: 2010 年 6 月 2 日推荐精选一、实训题目用SMTP和POP3协议实现邮件服务器的收发系统二、实训目的实训是学生接触社会实际,提高综合职业素质,增强分析问题和解决问题能力的重要教学环节,也是培养人才的重要途径,通过实训巩固和加深课堂所学知识,学习掌握企业级开发的流程与具体操作方法;通过实训,培养“团队”精神和“开拓创新”能力,大力提倡和鼓励在开发过程中使用新方法、新技术,开拓思路,设计新算法、新创意,培养创造性的程序设计能力和锐意创新进取的精神;配合毕业论文写作,开
2、展调查研究,培养面对现实问题的正确态度和独立地分析解决问题的能力;树立新的发展起点和目标,通过实训,认识社会的需要,发现自身差距,培养良好的职业精神,适应毕业后实际工作的要求,为我们以后进一步走向社会打下了坚实的基础。三、实训时间四、实训地点五、实训部门或岗位实习生六、实训内容和过程 6.1实训内容6.1.1协议的了解SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器
3、,就可以把Email寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。POP3(Post Office Protocol 3)即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。POP3协议是TCP/IP协议族中的一员,,由RFC 1939 定义
4、。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于推荐精选X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到。 简单说来,LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。 LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址
5、本使用,不过根据组织者的需要,它可以做得更加强大。6.1.2系统的要求服务器端的功能:支持邮件接收功能 (POP3),支持邮件发送功能 (SMTP/ESMTP),支持邮件转发能 (Java Mail),路径可配置,用户可配置。用户管理程序的功能:支持用户的CRUD操作,用户包括并不限于用户名,密码,出生年月,地址,创建时间,所属部门或单位。可以禁止用户在某一时间段内不能使用本系统。邮件客户端功能:邮件的接收,发送,设置连接服务器的相关参数等。6.1.3系统体系结构邮件系统包括邮件了发送,收取,转发。以Outlook为客户端,配置好用户信息,将邮件发送到对应的服务器上去,对于服务端,SMTP服务
6、器,POP3服务器,其它必须遵循对应的协议,支持Outlook和Telent,多个用户可以同时登陆服务器进行邮件的收发,不同的用户之间相互不干扰,对于用户信息要保存在LDAP中,邮件信息要保存在Oracle数据库中,用户可以修改自己的用户信息,可以正常的收发自己的电子邮件,服务端可以对用户的帐户进行控制,如禁用启用等,此外,在系统中产生的其它信息(如服务器信息)要保存在配置文件中。6.2实训过程1. POP3协议。用户登陆POP3服务器后必须输入user 用户名,pass 密码登陆,登陆成功后,用户可以输入stat,list,retr,dele指令,其中,stat没有参数,list可以有参数,
7、也可没有参数,retr,dele,list所跟参数必须为数字,在任何时候,用户输入quit可以退出系统,当用户名或密码错误以及连接超时,用户输入指令错误次数达到系统限制时,服务器应自动断用户的连接。2. SMTP协议。当用户连接上SMTP服务器的时候,如果不是转发的电子邮件,则需要发ehlo指令,指令的格式为:ehlo ,用户在输入auth login指令后只能输入mail from:指令,指令后必须接上一个有效的电子邮件地址,接下来只能输入rcpt to指令,其后也必须接上一个有效的电子邮件地址,如果这两个地址的服务器不一样则需要转发邮件,否则由本服务器进行处理,接下来只能输入data指令,
8、然后输入内容,内容以“.”结束,最后输入quit指令退出系统,在整个邮件的发送过程中,可以随时输入ehlo指令和quit指令,若错误的次数达到系统的限制,用户名或密码错误,服务器应断开用户的连接。在输入用户名和密码时不能输入指令。如果是转发,则不需要输入auth login指令,其后可以直接mail form,rcpt to,data指令,在输入了错误的指令后会有相应的错误代码提示。3. JAVAMail。在SMTP服务器中,如果发出了HELO指令,则需要转发邮件,这时要用到JAVAMail,在配置文件中,把邮件域名与IP地址建立起对应的联系,在转发时只要截取邮件域名就可以拿到要转发的主机地址
9、,设置好邮件信息即将邮件发送出去。推荐精选4. Oracle数据库。在Windows平台上安装oracle数据库,oracle10G默认的数据库名称是orcl,连接端口号是1521,安装完毕后可以通过控制台来进行操作,但为了操作方便,安装oracle视图工具PLSQL,在安装PLSQL时要配置环境变量NL_SLANG和TNS_ADMIN,配置完环境变量后用此视图工具来连接Oracle数据库,来进行增删查改操作。5. LDAP协议。要使用LDAP,需要安装JXplorer,配置其LDAP的配置文件为自己的信息,修改suffixdc=my-domain,dc=com,rootdncn=Manage
10、r,dc=my-domain,dc=com,rootpwsecret。使用slapd d 1来启动服务器,使用JXplorer来连接服务器对其进行增删查改操作。七、实训体会和收获:大三了,大学生活转眼间就已经到头了了。为了增加实践经验,我到了武汉市东兆有限责任公司进行实训,短短的实训期,使我经历了很多,成长了很多.。在实训的这段日子里,我在现场的工作不仅使我学到了在大学了学不到的东西,而且还让我认识到的了关于处人与处事的社会经验机及其重要性。以前在校时,从来没有接触到像LDAP协议,servlet之类的东西,或者说只是听闻过,只是不知道它们是什么东西,干什么用的。初到公司时,我们开始学习JAV
11、A基础,那时我在想,我们以前在学校里都学过JAVA的基础知识,没有必要再学一遍,但事实让明,我这个想法是一个很大的错误,在这期间我们学习写计算器程序,从这个计算器程序中我们学习了类的封装,如把所有的操作抽象出来封装成一个类,所有的操作都继承此类,程序会根据我们输入的运算数据及运算符来自动的调用相应的方法,大大提高了程序的可扩展性,对代码的维护也更加的方便,。这些使我认识到我自己离一个合格的程序员的距离。我们写一个程序,不仅仅是要完成它的功能这么简单,我们还有许多事情要考虑,比如写出来的程序代码的冗余度怎么样,代码的执行效率如何,它是否是线程安全的,代码的冗错率是否比较高。或许有人认为这些没有太
12、大的影响,但在实训的过程中,我深刻的体会到了这些问题的重要性,在我写和计算器程序中,刚开始只设计了加减乘除运算,并没有考虑以后功能的添加,在后期时需求发生了变化,要求加入更多的运算任务,这时代码的冗余度太大,以至于最后重写程序。对问题分析得不透彻,比如要比较两数是否是同号,我们以前的做法是将这两个数相乘判断其符号是否大于零,但这是一个很严重的错误,在真正的企业级开发中,是分别对这两数进行判断。知识是一点一滴不断积累起来的,学习的过程也是由简单不断的深入,我们学习了以前不曾学到过的知识或者说自己薄弱的知识。在JAVA中定义可变参数,以及对可变参数的引用,即在方法的参数列表中以三个点来表示;学习了
13、IO操作,其实我们在以后的程序中有很大的一部会都是对IO的操作,如磁盘文件的读写,网络数据的传输,Web程序的应用,只是不同的应用程序IO的管道不同而已,倘若我们学会的仅仅是如何去操作,而不是其方法,那么当我们以后要操作的对象发生了变化,我们就不知如何去做的,这样的学习方法显然是失败至极的;学习了多线程程序的原理及编写方法,一个多线程程序的实现有两种方法,一是实现推荐精选Runnable接口,二是继承Thread类,并通过start()方法来启动,在些期间我们编写了点名册程序,由程序随机的抽取数据并显示抽取结果。由此,我对程序进行了扩展,使得每个用户登陆服务器后都可以使用此程序,每个用户之间相
14、互不干扰,从中更加深刻的理解了多线程程序的应用。在学习完在JAVA基础知识后,还学习了SMTP协议,POP3协议,LDAP协议,利用这些协议,开始了我的项目邮件系统,在编写邮件系统服务器程序时,遇到了许多问题,这样的程序自己重写了两遍,这是因为自己所写的程序可扩展性太差,冗错率太低导致程序的失败,但失败了对我来说并不要紧,每一次失败都进行一次总结,找出自己的不足并改正,最终项目得已实现,虽然现在还存在着一些细节问题。记得在刚拿到项目时,很茫然,不知道从何下手,因为以前从来没有接触过这些协议,如果那时自己惧怕,那么明天也就永远不会成功。在学习这些协议的时候也经历了几个阶段,当初不了解协议的原理就
15、开始着的程序的编写,最后无法达到预期的效果。在一个企业项目中,最重要的不是程序的编写,而是项目的需求分析,只有我们分析透彻了,明白了其根本原理,才能达到我们的目的,程序编码只占有很小一部分时间,这些是我在实训中所体会到的。在这两个月的实训中,我们不仅仅学习了专业知识,还学习了一些求职面试的技巧和应注意的一些问题。在面试的过程中我们应当通过各种途径主动的与面试单位接触,向他们提供个人信息,在面试的过程中要注意自己的言谈着装,给招聘人员一个良好的印象,不能与面试单位的要求相违背,即便是一些潜规则,我们也要遵守,这样才可能获得更大的机会,对于自己感兴趣的职位,可以主动的与招聘方进行电话或其它形式的磋商。当招聘方向自己发出工作邀约的时候,也许与我们的期望相差很远,但这并不意味着无法改变。永远不要在未做磋商的情况下因为金钱方面的原因而拒绝一份邀约,要拒绝一份工作邀约也要向对方表明情况。学习的过程是漫长的,尤其是对我们来说,技术的成长阶段是最痛苦的,但我相信只要我有坚定的信念,不怕苦不怕累,我们终会成功。每天起早摸黑,加班加点的练习以提升自己的技术,有人说当一个学生真好。可是既然我选择了这个职业就要