Linux架构邮件服务器.docx
《Linux架构邮件服务器.docx》由会员分享,可在线阅读,更多相关《Linux架构邮件服务器.docx(33页珍藏版)》请在冰点文库上搜索。
Linux架构邮件服务器
基于Linux架构邮件服务器
摘要
电子邮件系统采用客户端/服务器(C/S)模式,在此主要是邮件服务器的架设,本邮件服务器的架构是在Linux操作系统下进行的。
其中Sendmail的邮件服务器软件用来负责邮件的传输,POP或IMAP的服务器软件负责客户端读取电子邮件。
根据系统总体上的设计明确了该系统的任务目的、邮件系统原理、工作流程和邮件服务器的架构实施。
该系统主要是要实现邮件用户代理(MUA)功能模块和用户传输代理(MTA)功能模块,MUA包括用户登录邮箱、电子邮件的读取、电子邮件的回复、电子邮件的编辑处理等,MTA包括电子邮件的发送、电子邮件的群发、电子邮件的认证等。
在系统的总体设计中,根据该系统的架构,对客户端和服务器端进行了详细的设计描述。
在系统实现中,还进行了详细的步骤描述与分析。
在自己的努力和老师的指导下,经过多次的尝试后,该系统的设计与实现基本完成,并达到了预期效果。
关键词:
邮件,服务器,架构,Linux
Linuxbasedframeworkmailserver
Abstract
ThisE-mailserverarchitectureisinLinuxoperatingsystem,E-mailsystemadoptstheclient/server(C/S)mode,Inthisarticleismailserverforerection,Amongthem,Sendmailmailserversoftwareusedtoresponsibleformaildelivery,POPorIMAPserversoftwareisresponsibleforclientreadingemail.
Accordingtothewholesystemdesignexplicitlythesystemobjectives,mailsystemprinciple,workingprocessandmailserverarchitectureimplementation.Thissystemistorealizetheemailuseragent(MUA)functionmodulesandusertransmissionagent(MTA)functionmodules,MUAincludeuserloginingmailbox,emailtoread,E-mailreplying,emaileditorprocessing,theMTAincludingemailsdeliveredandE-mailindiscriminately,E-mailofauthentication,etc.Inthedesignofthewholesystem,andonthebasisofthissystemframework,totheclientandtheserveriscarriedonthedetaileddesigndescription.Insystemrealization,alsocarriedonthedetailedstepsofdescriptionandanalysis.
Keywords:
Mail,server,architecture,Linux
目录
1绪论4
1.1邮件服务器的背景4
1.2架构邮件服务器的任务目的4
1.3主要的开发环境4
2邮件系统工作原理5
2.1邮件功能组件5
2.2邮件系统的工作流程6
2.3功能模块6
2.4E-MAIL协议8
3邮件服务器的架构9
3.1服务器端的搭建9
3.1.1DNS服务安装与配置9
3.1.2Sendmail服务安装与配置13
3.1.3POP3和IMAP安装与配置22
3.2客户端的搭建25
4结束语31
4.1论文工作总结31
4.2前景与展望31
参考文献32
1绪论
1.1邮件服务器的背景
电子邮件是Internet应用最广泛的服务之一。
通过网络电子邮件系统,可以用非常低廉的价格,以非常快速的方式,与世界上任何一个角落的网络用户联络,这些电子邮件可以是文字、图像、声音或其它多媒体信息。
和传统的邮政系统一样,邮件传递需要邮局的支持,而电子邮件系统的“邮局”也就是邮件服务器。
与传统的邮政系统相比,电子邮件更加快捷易用,经济实惠,内容丰富。
邮件服务器为用户提供了邮件系统的基本结构,其包括邮件传输、邮件分发、邮件存储等功能,可以确保用户的邮件能够发送到整个Internet网络的任意角落。
由于Linux操作系统作为目前应用最为广泛的开源操作系统,具有性能稳定、可靠性高和价格低廉的特点,在Linux上架构的邮件服务器可以与Sendmail、MySQL等开源软件共同使用,在满足用户需求的基础上,降低了系统价格。
1.2架构邮件服务器的任务目的
用户能够在对应的邮件服务器所在域中申请账号并拥有自己专门的信箱,从而能以发送和接受电子邮件的形式进行通信,有些还可以通过互联网通信,邮件服务器所扮演的角色就相当于传统邮政系统的邮局。
但与传统邮局相比,能让用户更简单、快速而且经济的使用该通信工具。
1.3主要的开发环境
本项目主要任务的是架构邮件服务器,服务器的操作系统采用的是RedHatLinux5.0,客户端操作系统可以为Linux或Windows,数据库是mysql。
而其中最为重要的就是服务器软件了,服务器能否正常运用,最关键的一步就是设置邮件交换记录(MX),所以要先安装DNS服务器的相关软件,当然重点还是要安装作为邮件传输代理的Sendmail服务器相关软件,如果要想使用电子邮件通信,还需要安装POP3/IMAP服务器的软件支持,当然这些服务器可以安装在一台主机上。
2邮件系统工作原理
2.1邮件功能组件
邮件的功能组件由邮件用户代理(MUA)、邮件递送代理(MDA)和邮件传输代理(MTA)组成,常见的MDA通常和MUA合二为一。
1.MUA
邮件用户代理是一种客户端软件,它提供用户读取、编辑、回复及处理电子邮件等功能,一般常用的MUA程序包括Linux下的mailx、elm和mh等,以及Windows下常用的OutlookExpress、Foxmail等。
2.MDA
邮件递送代理是一种服务器端运行的软件,用来把MTA所接受的邮件传递到指定用户邮箱。
3.MTA
邮件传输代理是一种服务器端运行的软件,即邮件服务器。
用户通过MUA发送和接收电子邮件其实都是通过MTA完成的。
在Linux中应用最广泛的MTA程序有Sendmail、Qmail和Postfix等。
关于MUA和MTA的邮件传送流程图如下图2.1所示。
图2.1邮件传送流程图
2.2邮件系统的工作流程
用户可以自由收发电子邮件,邮件系统会按照用户的指令完成一系列的发送、接受操作。
可以根据需要选择不同的E-mail工作方式,决定是在同一台服务器上发送Email,即单一服务器方式,还是通过网络将邮件发送到其它邮件服务器,及多服务器方式,而多服务器方式需要设置邮件中继。
邮件系统工作流程如下图2.2所示。
图2.2邮件系统的工作流程图
2.3功能模块
该电子邮件系统要实现以下功能:
登录服务器、用户收发邮件、用户处理邮件、邮件的传输、电子邮件的认证、电子邮件群发等功能。
这些功能可以归为邮件用户代理和邮件传输代理两大功能模块,总功能图如图2.3所示。
图2.3总功能模块图
1.MUA功能模块
邮件用户代理MUA是一种客户端软件,在Linux平台上的MUA程序有mailx、elm等,Windows平台上有OutlookExpress、Foxmail等。
通过MUA的客户端软件用户首先申请账号并登录服务器,如果有验证机制的,还需要输入登入密码;之后用户就可以通过自己的邮箱发送、接收邮件,对邮件进行编辑、下载等操作,如下图2.4所示。
图2.4MUA功能模块图
2.MTA功能模块
邮件传输代理MTA是一种服务器端运行软件,最常用的有Sendmail、Qmail等。
这里以Sendmail为例,Sendmail主要是负责邮件传输的,在传输的过程中,安装和配置的Sendmail服务器需要实现基本的以及其他的一些功能。
如果用户要发送一封邮件,那服务器就要实现最基本的发送功能,根据用户的需求,如果邮件要发往外部邮箱的,还需要有邮件中继功能,不然邮件是发送不到其它域的服务器上的。
如果用户要发送的电子邮件是想让某个域的所有成员都能接受到,如果一个一个发邮件显然是浪费时间和精力的,为方便起见,用户可以进行群发。
邮件的认证机制能减少邮件中继带来的危害,添加认证机制,通过验证用户账号和密码,能够有效拒绝非法用户使用邮件中继功能,所以MTA模块功能图如下图2.5所示。
图2.5MTA功能模块图
2.4E-MAIL协议
当前常用的电子邮件协议有SMTP、POP3、IMAP4,他们都属于TCP/IP协议簇,默认状态下,分别通过25、110、143端口建立连接。
1.SMTP协议
简单邮件传输协议,是一种在Internet中传递电子邮件的通信协议,可以在Internet上和不同的邮件系统交换信息。
2.POP3协议
邮局通信协议,是邮件系统上负责接收电子邮件的通信协议,它不具有传送邮件至使用者或其它邮件主机的功能。
3.IMAP协议
消息存取通信协议,是Internet上一项常见的通信协议,其中包含连接方式、客户端验证以及C/S的交谈等的定义,支持所有兼容RFC2060的IMAP客户端。
与POP一样,IMAP主要是用来读取服务器上的电子邮件,但客户端需要先登录服务器,才能进行资源的存取。
IMAP比POP更具有弹性,但目前仍然有较多人使用POP来作为电子邮件接收的通信协议。
3邮件服务器的架构
3.1服务器端的搭建
服务器端主要是负责电子邮件的传输,当客户端用户要发送电子邮件时,首先得登录到自己的邮箱,而用户的邮箱都在服务器端有相应的磁盘存储空间,再由邮件服务器根据目的邮箱进行选择,是发给本地邮箱的用户还是发给外部的服务器,目的用户再通过登录外部服务器的邮箱对电子邮件进行操作。
3.1.1DNS服务安装与配置
在安装Sendmail服务器之前,首先要考虑是否已安装和配置好DNS服务。
因为Sendmail中的邮件交换记录MX是在DNS服务器的区域文件中添加的,所以如果没有安装和配置好DNS服务,要先安装和配置DNS服务。
在安装DNS服务之前,首先来了解一下安装DNS服务器时所需要用到的软件。
bind-9.3.3-7el5.i386.rpm(DNS服务器的主程序包)。
bind-utils-9.3.3-7el5.i386.rpm(DNS服务器的客户端工具包)。
bind-libs-9.3.3-7e15.i386.rpm(DNS服务器的类库文件)。
ypbind-1.19-7.e15。
1.安装DNS服务器软件
(1)用rpm–qa命令检测系统是否已安装好DNS服务器相关软件,如图3.1所示。
[root@asd123~]#rpm–qa|grepbind
图3.1查看DNS软件的安装
(2)从图3.1可以看到相关软件包没有安装完全,用rpm–ivh软件包名命令安装相应软件,如图3.2所示。
[root@asd123~]#rpm–ivhbind-9.3.3-7e15.i386.rpm
图3.2安装DNS的主程序包
(3)再次确认相关软件是否已安装完成,如下图3.3所示。
[root@asd123~]#rpm–qa|grepbind
图3.3确认DNS软件的安装
2.建立DNS的主配置文件
(1)用vi命令进入主配置文件named.conf中。
[root@asd123~]#vi/etc/named.conf
(2)手动建立好该文件,包括整体和局部的配置如下所示,完成后保存退出。
options{
directory“/var/named”;};
zone“.”{
typehint;
file“named.root”;};
zone“asd123.org”{
typemaster;
file“asd123.zone”;};
zone“46.168.192.in-addr.arpa”{
typemaster;
file“46.168.192.rev”;};
3.建立根区域文件
(1)从国际互联网信息中心下载ftp:
//named.root,并将named.root保存到/var/named目录下。
(2)用vi命令进入/var/named查看named.root文件,如图3.4所示。
[root@asd123~]#vi/var/named/named.root
图3.4根区域文件named.root
4.配置正向解析区域文件
(1)用vi命令进入asd123.zone文件。
[root@asd123~]#vi/var/named/asd123.zone
(2)手动建立正向解析区域文件asd123.zone,并添加邮件交换记录MX,如下所示。
@INSOAasd123.org.root.asd123.org.(
1
3H
15M
1W
1D)
INNSdns.asd123.org.
dnsINA192.168.46.200
INMX10mail.asd123.org.
mailINA192.168.46.200
5.配置反向解析区域文件
同样首先进入/var/named目录下,然后编辑反向解析区域文件46.168.192.rev。
[root@asd123~]#vi/var/named/46.168.192.rev
@INSOAasd123.org.root.asd123.org.(
1
3H
15M
1W
1D)
INNSdns.asd123.org.
200INPTRdns.asd123.org.
200INPTRmail.asd123.org.
6.启动并测试DNS服务
(1)启动DNS服务,如下图3.5所示。
[root@asd123~]#servicenamedstart
图3.5启动DNS服务
(2)任选一台主机做客户端,用host命令对DNS服务器进行测试,如下图3.6所示。
[root@asd123~]#host192.168.46.200
[root@asd123~]#hostmail.asd123.org
[root@asd123~]#hostdns.asd123.org
图3.6DNS服务器的测试
3.1.2Sendmail服务安装与配置
添加了邮件交换记录(MX)后,接下来就可以对Sendmail服务进行安装配置了。
在安装Sendmail服务之前,首先来了解一下安装Sendmail服务所需要的软件包。
Sendmail-8.13.8-2.el5.i386.rpm(主程序包)。
Sendmail-cf-8.13.8-2.el5.i386.rpm(Sendmail的宏文件包)。
m4-1.4.5-3.el5.i386.rpm(宏处理过滤软件)。
cyrus-sasl-lib-2.1.22-4.i386.rpm。
cyrus-sasl-2.1.22-4.i386.rpm(主程序包)。
1.安装Sendmail和m4相关软件包
(1)用rpm–qa命令查询是否已安装Sendmail的相关软件包。
[root@asd123~]#rpm–qa|grepsendmail
(2)从下图3.7可看出Sendmail的相关软件包没有安装完全,用rpm–ivh软件包名进行相应软件的安装。
[root@asd123~]#rpm–ivhsendmail-cf-8.13.8-2.e15.i386.rpm
(3)用同样的方法可以查看和安装m4的相关软件。
[root@asd123~]#rpm–qa|grepm4
[root@asd123~]#rpm–ivhm4-1.4.5-3.e15.1.i386.rpm
Sendmail和m4的查看与安装过程如下图3.7所示。
图3.7Sendmail和m4的安装
2.编辑Sendmail的核心配置文件
由于Sendmail.cf核心配置文件配置过于复杂,m4工具可以让开发人员只修改Sendmail.mc文件,然后在重定向到Sendmail.cf文件中。
(1)通过vi命令进入Sendmail.mc文件中。
[root@asd123~]#vi/etc/mail/sendmail.mc
(2)把smtp的侦听网段范围127.0.0.1改为0.0.0.0,如下图3.8所示。
图3.8修改smtp的侦听网段
(3)设置本地邮箱域名,在括号内填写本地域名asd123.org,如下图3.9所示。
图3.9设置本地邮箱域名
(4)通过m4命令把sendmail.mc重定向sendmail.cf文件中,如下图3.10所示。
[root@asd123~]#m4/etc/mail/sendmail.mc>/etc/mail/sendmail.cf
图3.10重定向生成sendmail文件
3.编辑local-host-names文件
local-host-names文件是用来定义收发邮件的主机别名的。
(1)用vi命令编辑修改local-host-names文件。
[root@asd123~]#vi/etc/mail/local-host-names
(2)在文件中添加以下两行,分别是主机名和域名,如下图3.11所示。
asd123.org.
mail.asd123.org.
图3.11添加主机名和域名
4.别名群发设置
(1)用vi命令进入/etc目录下的aliases文件。
[root@asd123~]#vi/etc/aliases
(2)在aliases文件中添加一行b1:
c1,c2,如下图3.12所示。
图3.12添加别名
(3)保存退出,用newaliases命令生成aliases.db文件。
[root@asd123~]#newaliases
5.设置邮件中继
中继:
用户通过服务器将邮件传递邮件到组织外。
一个正常的邮件的发送过程是一站到达的,也就是说服务器处理的邮件只有两类,一类是外发的邮件,一类是接受的邮件,前者是本方用户通过服务器向外转发邮件,后者是发给本方用户的。
access文件用于控制邮件中继与邮件的进出管理,access的每一行都包含了对象和对对象的处理方式。
(1)用vi进入access文件。
[root@asd123~]vi/etc/mail/access
(2)在文件中添加如下两行,如下图3.13所示,允许asd123.org域用户中继而拒绝192.168.46.11的用户中继。
asd123.orgRELAY
192.168.46.11REJECT
图3.13邮件中继的设置
(3)用makemap命令生成新的access.db数据库。
[root@asd123~]#makemap–rhash/etc/mail/access.db
6.建立用户
(1)建立组群b1,用户c1,c2,b1,a1,而且用户c1,c2,b1属于组群b1,如图3.14所示。
[root@asd123~]#groupaddb1
[root@asd123~]#useradd–gb1–s/sbin/nologinc1
[root@asd123~]#useradd–gb1–s/sbin/nologinc2
[root@asd123~]#useradd–gb1–s/sbin/nologinb1
[root@asd123~]#useradda1
图3.14新建组群和用户
(2)给用户设置密码,如下图3.15所示。
[root@asd123~]#passwda1
[root@asd123~]#passwdc1
[root@asd123~]#passwdc2
图3.15设置用户密码
7.Sendmail的服务认证功能的配置
对Sendmail服务进行认证功能的配置,要先安装sasl库,再编辑sendmail.cf文件。
(1)检测sasl软件的安装,如图3.16所示。
[root@asd123~]#rpm–qa|grepcyrus-sasl
图3.16检测cyrus软件的安装
从上图可以看到,相关的软件已经安装完毕,如果没有安装的,参考上面sendmail服务器软件的安装。
(2)编辑sendmail.mc文件找到相应部位进行修改开启认证功能。
首先,用vi命令进入/etc/mail目录下的sendmail.mc文件。
[root@asd123~]#vi/etc/mail/sendmail.mc
然后,把以下三行的前头的dnl字段去掉,如下图3.17和图3.18所示。
dnlDAEMON_OPTIONS(‘Port=submission,Name=MSA,M=Ea’)
dnlTRUST_AUTH-MECH(‘EXTERNALDIGEST-MD5LOGINPLAIN’)
dnldefine(‘confAUTH_MECHANISMS’,’EXTERNALGSSAPIDIGEST-MD5CRAM-MD5LOGINPLAIN’)
图3.17编辑sendmail.mc开启认证功能
(一)
图3.18编辑sendmail.mc开启认证功能
(二)
8.启动Sendmail服务
重新启动Sendmail服务,如下图3.19所示。
[root@asd123~]#servicesendmailrestart
图3.19重启Sendmail服务
9.Sendmail的调试
(1)查看是否已安装了相关的telnet软件,并查看25是否处于监听状态,如下图3.20所示。
[root@asd123~]#rpm–qa|greptelnet
[root@asd123~]#netstat–an|grep25
图3.20查看telnet的安装和25端口是否处于监听