贺滢基于Linux的邮件服务器的配置.docx
《贺滢基于Linux的邮件服务器的配置.docx》由会员分享,可在线阅读,更多相关《贺滢基于Linux的邮件服务器的配置.docx(26页珍藏版)》请在冰点文库上搜索。
贺滢基于Linux的邮件服务器的配置
基于Linux的邮件服务器的配置
学生姓名:
贺滢指导老师:
邓江沙
摘要本文介绍基于Linux的邮件服务器的构建。
电子邮件是整个互联网业务重要的组成部分,电子邮件已成为网络用户不可或缺的需要。
本文将详细介绍Linux系统中邮件服务器(Sendmail服务器)的相关知识、常用命令及安装和配置过程和邮件客户端的设置及使用。
关键词Linux;邮件服务器;Sendmail;SMTP;POP
TheConstructionOfMailServersBasedOnLinuxStudentname:
HeYingAdvisor:
DengJiangsha
AbstractThisarticledescribestheconstructionofmailserversbasedonLinux.E-mailisanimportantpartofbusinessontheInternet,e-mailhasbecomeindispensabletotheneedsofusers.Thisarticlewilldescribetherelevantknowledge,commoncommandandtheprocessofinstallationandconfigurationaboutmailserversonLinux(Sendmailserver)carefully,theprocessofsettingupe-mailclientandintroducehowtouseit.
KeywordsLinux;Mailservers;Sendmail;SMTP;POP
1引言
1.1课程设计的意义
Linux操作系统是目前应用最广泛的源代码开放的操作系统之一,最早由芬兰赫尔辛基大学的学生LinusTorvalds编写,它能够在PC计算机上实现全部的Unix特性,具有多任务、多用户的能力,在GNU公共许可权限下免费获得,是一个符合POSIX标准的操作系统。
用户不但可以从Internet上下载Linux及其源代码,以便修改和扩充操作系统,还可以上下载许多Linux的应用程序。
Linux在安装过程中,默认安装并配置了邮件服务器守护程序Sendmail,该程序为Linux提供支持SMTP连接所需的服务。
对以Linux系统为服务器的局域网来说,安装和配置一个健壮、高效的电子邮件系统能方便用户使用电子邮件。
其中本文中的Sendmail,便是在Linux操作系统中应用最广泛的电子邮件服务器。
1.2课程设计的目的
本课程设计设主要目的是在Linux操作系统下完成邮件服务器的安装和配置。
电子邮件是因特网上最为流行的应用之一,邮件服务器构成了电子邮件系统的核心。
每个收信人都有一个位于某个邮件服务器上的邮箱(mailbox)。
通过对邮件服务器的配置,不但能够方便用户收发邮件,也能够熟悉Linux的相应操作,深化了对Linux及网络知识的学习。
1.3邮件系统简介
Linux的电子邮件系统模型基本上可分为邮件传递代理MTA、邮件存储和获取代理MSA以及邮件客户代理MUA三大模块,下面就Linux邮件系统的组成作介绍[1]。
邮件传递代理(MTA)通常使用Sendmail,该系统几乎在任何UNIX平台上都有相应的版本,它负责接收并传递邮件和实现反垃圾邮件功能。
邮件存储和获取代理(MSA):
一旦安装并设置完成了MTA,还要对MSA系统进行同样的配置过程。
如今大多数机构并不直接将邮件传送到桌面客户系统,而是将邮件存储到服务器,让用户通过POP或者IMAP来读取各自的邮件,邮件存储的管理有许多种协议,如今最常用的是POP3和IMAP4。
邮件客户代理(MUA):
MUA种类繁多,而且层出不穷。
这些代理大都符合POP和IMAP协议。
这也包括微软的Outlook系列、Foxmail等。
在Linux下,许多人使用fetchmail抓取邮件并保存在本地邮箱。
然后使用任何一种MUA,比如elm、pine、mutt、vmail、mh-e、guns以及大量带有GUI界面的如Balsa等来处理邮件。
也有众多的Linux用户选择使用NetscapeCommunicator内置的邮件客户端。
2SMTP简介
SMTP(SimpleMailTransferProtocol)协议是Internet上基于TCP/IP应用层的协议,适用于主机之间的电子邮件交换,是为了保证电子邮件的可靠和高效传送。
TCP/IP协议的应用层中包含的有SMTP协议,但事实上预期传输系统和机制无关,仅要求一个可靠地数据流通道。
该协议可以工作在TCP上,也可以工作在NCP、NITS等协议上。
在TCP上,它使用端口25进行传输。
SMTP的一个重要特点是可以在可交互的通信系统中转发邮件。
2.1SMTP的模型
SMTP采用客户/服务模式,因此负责发送邮件的SMTP进程是SMTP客户,而负责接收邮件的SMTP进程就是服务器。
客户和服务器双方的SMTP协议相互配合,将电子邮件从发送方的主机送到接收方的信箱。
在传送邮件过程中,需要使用TCP协议进行连接。
在TCP上,它使用端口25进行传输。
SMTP的一个重要特点是可以在可交互的通信系统中转发邮件。
SMTP提供了一种邮件传输机制,当接收方和发送方都在一个网络上时,可以把邮件直接传给对方;当双方不在同一个网络上时,需要通过一个或几个中间服务器转发。
SMTP在发送方和接收方之间建立双向通信渠道后双方就可以开始通信了。
SMTP的工作流程如图2-1所示:
图2-1SMTP工作流程图
目前使用的SMTP协议时存储转发协议,意味着其允许邮件通过一系列的服务器发送到最终目的地。
服务器在一个队列中存储到达的邮件,等待发送到下一个目的地。
拂过下游的服务器暂时不可用,MTA就暂时在队列中保存信件,并在以后尝试发送。
SMTP传送邮件的过程如图2-2所示:
图2-2SMTP传送邮件过程示意图
2.2SMTP的基本命令
SMTP定义了14个命令,它们是:
HELO、MAILFROM、RCPTTO、DATA、RSET、SENDFROM、SOMLFROM、SAMLFROM、VRFY、EXPN、HELP、NOOP、QUIT和TURN其中使得SMTP工作的基本的命令有7个,分别为:
HELO﹑MAIL﹑RCPT﹑DATA﹑REST﹑NOOP和QUIT。
HELO:
向服务器标识用户身份发送者能欺骗,说谎,但一般情况下服务器都能检测到。
MAIL:
初始化邮件传输mail form:
RCPT:
标识单个的邮件接收人;常在MAIL命令后面可有多个rcpt to:
DATA:
在单个或多个RCPT命令后,表示所有的邮件接收人已标识,并初始化数据传输,以.结束。
VRFY:
用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令
EXPN:
验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用
HELP:
查询服务器支持什么命令
NOOP:
无操作,服务器应响应OK
QUIT:
结束会话
RSET:
重置会话,当前传输被取消
2.3SMTP的连接和发送过程
(1).建立TCP连接
(2)客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令服务器端正希望以OK作为响应,表明准备接收
(3)客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行服务器端则表示是否愿意为收件人接受邮件
(4)协商结束,发送邮件,用命令DATA发送
(5)以.表示结束输入内容一起发送出去
(6)结束此次发送,用QUIT命令退出
另外两个命令:
VRFY---用于验证给定的用户邮箱是否存在,以及接收关于该用户的详细信息;EXPN---用于扩充邮件列表。
3电子邮件介绍
电子邮件的工作过程遵循客户/服务器模式。
每份电子邮件的发送都要涉及发送方与接收方,发送方构成客户端,接收方构成服务器,它含有众多用户的电子信箱。
【2】
电子邮件(Electronicmail)服务是Internet网络为用户提供的一种最基本、最重要的服务之一。
电子邮件将邮件发送到收信人的邮箱(mailbox)中,收信人可随时读取邮件。
电子邮件不仅使用方便,而且还具有传递迅速和费用低廉的优点。
电子邮件有非常高的效率,非常高的安全性,可以采用加密的方法来传输邮件,即使被人截获,也不能轻易破译。
3.1邮件的结构
在最高层,邮件的结构是非常简单的,用户从终端机上看到的邮件格式一般为:
FROM,TO,SUBJECT,DATE,TEXT等内容,事实上,邮件在传输过程中,服务器要把它打包成一个数据对象,包括上面的信件和一个信封。
邮件的投递是依靠新风尚的地址或信头,而不是上面介绍的信件上的地址。
从表面上看,一封邮件是从发件人的机器直接传送到收件人机器的,但通常这并不正确,一封邮件发送和接收过程至少要经过四台计算机。
用户通常在自己的电脑前编写阅读邮件,把它叫做客户端。
在大部分的机构里,都是用一台专门的机器处理邮件,称作邮件服务器。
当某个用户在自己的电脑Client1前编写完一个邮件,并把其发送到用户使用的isp的邮件服务器SMTP1上。
此时机器已经完成了所有的工作,但邮件服务器SMTP1还必须设法把邮件发送到目的地。
SMTP1通过阅读信头或信封上的地址,找到收件人的邮件服务器SMTP2,然后与该服务器建立连接,把邮件发到收件人的服务器上,等待收件人来取阅。
3.2电子邮件的工作原理
电子邮件的工作过程遵循客户/服务器模式。
每份电子邮件的发送都要涉及到发送方与接收方,发送方构成客户端,而接收方构成服务器,服务器含有众多用户的电子邮箱。
发送方通过邮件客户程序,将编辑好的电子邮件向邮局服务器(SMTP服务器)发送。
邮局服务器识别接收者的地址,并向管理该地址的邮件服务器(POP3服务器)发送消息。
邮件服务器将消息存放在接收者的电子邮箱内,并告知接收者有新邮件到来。
接收者通过邮件服务器的通知,进而打开自己的电子信箱来查收邮件。
其工作过程如图3-1所示。
图3-1电子邮件工作过程
3.3OpenRelay的原理
SMTP协议中明确指出当邮件在不同的网络间传送时,需要借助中间服务器的Relay。
邮件在接收方和发送方之间会经过毫不相干的第三方服务器,这就是邮件转发(Relay),邮件转发过程如图3-1所示:
图3-2邮件转发示意图
4安装与配置SendmailServer
4.1安装与启动Sendmail
使用RPM包安装方式进行安装。
首先检测系统是否已经安装了RPM包
#rpm–qa|grepsendmail结果如图4-1所示:
图4-1检测系统是否安装rpm包
如果没有安装,则安装
Rpm–ivhsendmail-8.12.8-4.i386.rpm
安装生成Sendmail配置文件的m4工具包
#rpm-ivhm4-1.4.1-13.i386.rpm
#rpm-ivhsendmail-cf-8.12.8-4.i286.rpm
#rpm-ivhsendmail-doc-8.12.8-4.i386.rpm
启动Sendmail:
安装好该软件后,可以使用以下命令来确认Sendmail是否已经启动
#pstree|grepsendmail
如果启动了Sendmail,那么这个命令将显示出其相关信息。
否则,没有任何提示的回到命令行。
如果没有启动,用户可以手动启动:
#servicesendmailstart效果如图4-2所示:
图4-2启动sendmail
4.2测试sendmail的发信功能
安装并启动了sendmail服务器之后便可对其进行简单的发信功能测试,测试步骤如下:
使用root用户向super发送邮件
#mailsuper@
接下来效果如图4-3所示:
图4-3测试sendmail发信功能
Subject为邮件标题,然后是邮件内容,以“.”结束。
Cc是抄送给某用户。
4.3设置sendmail.cf
sendmail.cf是Sendmail的配置文件。
一般来说在安装了Linux系统后,将自动生成一个合适系统使用的sendmail.cf文件。
【3】
配置文件sendmail.cf中的信息仍旧是以行为单位。
如果行首的第一个字符为“#”,则表示该行为注释;如果第一个字符为空格,则表示该行为上一行的延续。
此外,行首的第一个字符均为命令,但是命令同变量或值之间没有间隔。
这种格式便于Sendmail进行分析,但很难阅读。
sendmail.cf配置文件中的命令如下:
D(定义宏),C与F(定义类),O(设置选项),T(定义可信任的用户),P(设置优先级),K(关键文件声明),V(配置版本级别),M(定义邮件传输程序),H(定义邮件的首部格式),R(定义重写规则),S(设置重写规则集)。
我们用C命令修改Sendmail的配置文件“/etc/mail/sendmail.cf”。
#vi/etc/mail/sendmail.cf
将给文件中的行Cwlocalhost修改为C。
如图4-4所示:
图4-4修改Sendmail.cf文件
最后存盘退出。
4.4修改sendmail.mc文件
Sendmail的配置十分复杂,其配置文件Sendmail.cf语法深奥难懂,很少有人直接去修改该文件来对Sendmail服务器进行配置。
一般通过m4宏处理程序来生成所需的sendmail.cf文件。
在创建的过程中还需要一个模板文件,sendmail.mc。
用m4宏编辑工具创建sendmail.cf文件比较方便,而且不容易出错,更可以避免某些带有安全漏洞或者过时的宏所造成的破坏。
下面介绍sendmail.mc模板的语法组成:
dn1:
用来注释各项,同时dn1命令还用来标识一个命令的结束。
divert(-1):
位于mc模板文件的顶部,目的是让m4程序输出时更加精简一些。
OSTYPE(‘OperationSystemType’):
定义使用的操作系统类型,显然这里应该用Linux代替OperationSystemType,注意要用一个反引号和一个正引号把对应的操作系统类型括起来。
define:
定义一些全局设置,对于Linux系统,设置了OSTYPE之后,可以定义下面的一些全局参数。
如果不定义,就使用默认值。
下面修改Sendmail的配置文件”/etc/mail/sendmail.mc”,将该文件中有以”DAE_option”字符串开头的四行用注释符号”#”注释掉。
效果如图4-5所示:
图4-5修改sendmail.mc文件
最后使用make命令重新生成配置文件:
#make–C/etc/mail,效果如图4-6所示:
图4-6重新生成sendmail.mf文件
4.5Linux平台下Mysql的安装
本课程设计采用的Linux版本是ubuntu版本,Mysql数据库管理系统不需要下载,直接在Linux平台下直接安装就行,由于Mysql已经安装(同时此安装命令也就是更新命令),故显示的是更新信息。
安装命令如图4-7下:
图4-7Mysql的安装
数据库在物理设备上的存储结构与存储方法称为数据库的物理结构,它依赖于选定的数据库管理系统。
为一个给定的逻辑数据模型选取一个最合适应用要求的物理结构的过程,就是数据库的物理设计。
本课程设计选择由瑞典MySQLAB公司首先开发,现在为Sun公司运营的MySQL数据库管理系统。
考虑到配置和移植的方便性,本设计采用JDBC方式访问数据库。
try{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("driverload");
Connectionconnection=DriverManager.getConnection("jdbc:
mysql:
//"+"@01946ae88d54409/java","system","system");
System.out.println("Databaseconnected");
//用来测试数据库连接是否成功
Statementstmt=connection.createStatement();
stmt.close();//关闭数据库连接
connection.close();//关闭数据库连接
}
catch(Exceptione){
e.printStackTrace();
}
4.6Sendmail邮件服务器的验证
在Sendmail邮件服务器配置完成之后,只要在Linux上添加一个用户,该用户就会拥有一个邮箱。
下面是向测试用户test发送邮件的测试,如图4-8所示:
图4-8发送测试邮件
下面切换到test用户,使用mail命令接收邮件,看看是否收到。
结果如图4-9所示:
图4.-9检验邮件是否收到
实验证明,邮件服务器已经成功运转。
5建立POP邮件服务
5.1安装POP服务器
Sendmail并不具备POP3(IMAP)接受邮件的功能,所以必须对其进行安装。
下面是安装POP服务器的详细步骤:
安装RedHatLinux9时,可以选择安装POP和IMAP服务器,用一下命令进行验证:
#rpm–qaimap
如果没有安装则可以安装rpm包,命令如下:
#rpm–ivhimap-2001a-18.i386.rpm
由于RedHatLinux9已经将POP和IMAP打包成了一个单独的套件,安装rpm包就会同时安装这两个服务器。
安装效果如图5-1所示:
图5-1检验rpm包是否安装成功
5.2启动POP和IMAP服务
要成功启动POP和IMAP服务器,首先要确定这些服务存在于/etc/services/文件,确保对应的服务前面没有加上注释。
下面是/etc/services/文件内容,如图5-2所示:
图5-2修改/etc/services/文件
接下来修改/etc/xinetd.d/ipop3文件,将其中的“disable=yes”改为“disable=no”,保存退出。
如图5-3所示:
图5-3修改/etc/xinetd.d/ipop3文件
最后重新启动xinetd程序来读取新的配置文件,使得设定内容生效:
#/etc/rc.d/init.d/xinetd/restart
使用同样方法修改/etc/xinetd.d/imap文件,将其中的“disable=yes”改为“disable=no”,保存退出。
再次重启xined程序,使设定的内容生效。
6邮件客户端的设置
6.1邮件客户端
邮件客户端通常指使用IMAP/APOP/POP3/SMTP/ESMTP/协议收发电子邮件的软件。
用户不需要登入邮箱就可以收发邮件。
接收电子邮件的常用协议是POP3和IMAP,发送电子邮件的常用协议是SMTP。
另一个大部分邮箱客户端支持的重要标准是MIME,它是用来发送电子邮件附件的。
电子邮箱默认使用的TCP端口号如表6-1所示[4]:
表6-1默认TCP端口号
协议
作用
纯文本或加密会话
单纯文本会话
单纯加密会话
POP3
收邮件
110
995
IMAP
收邮件
143
993
SMTP
发邮件
25
465(非标准)
HTTP
网页邮箱
80
443
6.2邮件客户端的设置
在RedHatLinux9系统中邮件客户端可以采用一下3种方式:
Evolution程序、MozillaMail程序和基于文本的电子邮件客户。
本次课程设计主要使用Evolution程序收发邮件。
Evolution不仅仅是一个电子邮件程序,它还提供了所有标准的电子邮件客户功能,包括功能强大的邮箱管理、用户定义的过滤器,以及快速搜索。
除此之外,它还具备灵活的日历功能,该功能允许用户在线的创建和确认组群会议和特别事件[5]。
Evolution是用于Linux和基于UNIX系统的功能完善的个人和工作组信息管理工具,它还是RedHatLinux的默认电子邮件客户。
要想用Evolution电子邮件客户程序,可从桌面的面板上启动Evolution,依次单击“主菜单—>互联网—>Evolution电子邮件”如图6-1所示:
图6-1启动Evolution
在使用该软件之前,必须要对该邮件客户端的邮件账号进行设置。
步骤如下:
首先打开EvolutionSettings对话框,并在其上单击“添加”,打开配置向导,单击下一步,打开如图6-2所示对话框:
图6-2Evolution账号助手
(1)
在在“全名“后的文本框中输入邮件账号的全名,在Emile-address后的文本框中输入已申请的邮件地址,点击“下一步”,打开如图6-3所示对话框:
图6-3Evolution账号助手
(2)
在图6.3中的服务器类型中选择POP,在主机后的文本框中输入sendmail服务器的域名,在username后输入已申请的邮件帐。
然后点击下一步,在打开的对话框中进行收发邮件的选择,选择结束后再次单击下一步,仿照上面步骤进行配置,只是服务器类型选择SMTP。
在用户的账号配置完成之后,进入如图6-4所示的界面,即Evolution的主控界面:
图6-4Evolution主界面
点击新建按钮就可以发送邮件了,撰写邮件对话框如图6-5所示:
图6-5Evolution撰写邮件对话框
7结束语
通过网络系统课程设计,使我对Linux操作系统有了一定的了解,同时我也总结出了一些分析问题和解决问题的方法及技巧。
进一步加深了对邮件系统知识的了解,可以说是受益颇丰。
在此次网络操作系统实验的设计中,我得到了老师和同学的大力支持和帮助,也参考了大量的书籍和网上资料,学到了不少东西。
在这里要感谢我的指导老师邓江沙老师,在上机时悉心辅导,也要感谢教授我们操作系统课程的侯利娟老师,在平时上课的时候教会了我们很多Linux的知识,让我们对Linux的知识有了更深刻的认识。
参考文献
[1]文东戈,孙昌立,王旭.Linux操作系统实用教程.北京:
清华大学出版社,2010
[2]网络收集.电子邮件介绍.
[3]李洋汪虎松著.RedHatLinux9系统与网络管理教程.北京:
电子工业出版社,2006
[4]XX百科.邮件客户端.
[5]高衡绪,古静雨.Linux系统及网络理论与实践教程.北京:
中国建材工业出