《第14章配置与管理电子邮件服务器课件.ppt》由会员分享,可在线阅读,更多相关《第14章配置与管理电子邮件服务器课件.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、LinuxLinux操作系统与实训操作系统与实训( (第四版第四版)杨云杨云 编著编著中国铁道出版社中国铁道出版社国家精品课程国家精品课程/国家精品资源共享课程国家精品资源共享课程配套教材配套教材第14章 配置与管理电子邮件服务器第14章 配置与管理电子邮件服务器 电子邮件服务是互联网上最受欢迎、应用最广泛的服务之一,用户可以通过电子邮件服务实现与远程用户的信息交流。能够实现电子邮件收发服务的服务器称为邮件服务器,本章将介绍基于Linux平台的Sendmail邮件服务器的配置及基于Web界面的Open Webmail邮件服务器的架设方法。 学习要点:学习要点:l 电子邮件服务的工作原理。l S
2、endmail和POP3邮件服务器的配置。l 电子邮件服务器的测试。l Open WebMail。14.1电子邮件服务工作原理 14.3配置Postfix常规服务器14.6使用Cyrus-SASL实现SMTP认证第14章 配置与管理电子邮件服务器14.2 项目设计及准备14.4配置Dovecot服务程序14.5配置一个完整的收发邮件服务器并测试14.1 电子邮件服务工作原理14.1.1 电子邮件服务概述 电子邮件(Electronic Mai1,简称E-mail)服务是Internet最基本也是最重要的服务之一。 与传统邮件相比,电子邮件服务的诱人之处在于传递迅速。如果采用传统的方式发送信件,
3、发一封特快专递也需要至少一天的时间,而发一封电子邮件给远在他方的用户,通常来说,对方几秒钟之内就能收到。跟最常用的日常通信手段电话系统相比,电子邮件在速度上虽然不占优势,但它不要求通信双方同时在场。由于电子邮件采用存储转发的方式发送邮件,发送邮件时并不需要收件人处于在线状态,收件人可以根据实际需要随时上网从邮件服务器上收取邮件,方便了信息的交流。14.1.2 电子邮件系统的组成14.1.2 电子邮件系统的组成4MUA、MTA和MDA协同工作 总的来说,当使用MUA程序写信(例如elm,pine或mail)时,应用程序把信件传给Sendmail或Postfix这样的MTA程序。如果信件是寄给局域
4、网或本地主机的,那么MTA程序应该从地址上就可以确定这个信息。如果信件是发给远程系统用户的,那么MTA程序必须能够选择路由,与远程邮件服务器建立连接并发送邮件。MTA程序还必须能够处理发送邮件时产生的问题,并且能向发信人报告出错信息。例如,当邮件没有填写地址或收信人不存在时,MTA程序要向发信人报错。MTA程序还支持别名机制,使得用户能够方便的用不同的名字与其他用户、主机或网络通信。而MDA的作用主要是把接收者MTA收到的邮件信息投递到相应的邮箱中。 14.1.3 电子邮件传输过程 电子邮件与普通邮件有类似的地方,发信者注明收件人的姓名与地址(即邮件地址),发送方服务器把邮件传到收件方服务器,
5、收件方服务器再把邮件发到收件人的邮箱中。如图 S M T P 发 件 人 发 件 服 务 器 收 件 服 务 器 收 件 人 以一封邮件的传递过程为例,下面是邮件发送的基本过程,如图 MUA MTA MTA MTA MDA 邮箱 队列 队列 队列 14.1.3 电子邮件传输过程 14.1.4 与电子邮件相关的协议常用的与电子邮件相关的协议有SMTP、POP3和IMAP4。1SMTP(Simple Mail Transfer Protocol) 2POP3(Post Office Protocol 3) 3IMAP4(Internet Message Access Protocol 4)14.1
6、.5 邮件中继 前面讲解了整个邮件转发的流程,实际上邮件服务器在接收到邮件以后,会根据邮件的目的地址判断该邮件是发送至本域还是外部,然后再分别进行不同的操作,常见的处理方法有以下两种。1本地邮件发送 当邮件服务器检测到邮件发往本地邮箱时,如发送至,处理方法比较简单,会直接将邮件发往指定的邮箱。14.1.4 与电子邮件相关的协议14.1.4 与电子邮件相关的协议(1)中继。(3)第三方中继。3邮件认证机制 如果关闭了OPEN RELAY,那么必须是该组织成员通过验证后才可以提交中继请求。也就是说,你的用户要发邮件到组织外,一定要经过验证。要注意的是不能关闭中继,否则邮件系统只能在组织内使用。邮件
7、认证机制,要求用户在发送邮件时,必须提交账号及密码,邮件服务器验证该用户属于该域合法用户后,才允许转发邮件。 (2)OPEN RELAY。14.2 项目设计及准备 本项目选择企业版Linux网络操作系统提供的电子邮件系统Sendmail来部署电子邮件服务,利用Windows 7的Mail程序来收发邮件(如果没安装请从网上下载后安装)。14.2 项目设计及准备 部署电子邮件服务应满足下列需求:部署电子邮件服务应满足下列需求: (1)安装好的企业版)安装好的企业版Linux网络操作系统,并且必须保证网络操作系统,并且必须保证Apache服服务和务和perl语言解释器正常工作。客户端使用语言解释器正
8、常工作。客户端使用Linux和和Windows网络操作系网络操作系统。服务器和客户端能够通过网络进行通信。统。服务器和客户端能够通过网络进行通信。 (2)电子邮件服务器的)电子邮件服务器的IP地址、子网掩码等地址、子网掩码等TCP/IP参数应手工配置。参数应手工配置。 (3)电子邮件服务器应拥有一个友好的)电子邮件服务器应拥有一个友好的DNS名称,并且应能够被正常名称,并且应能够被正常解析,且具有电子邮件服务所需要的解析,且具有电子邮件服务所需要的MX资源记录。资源记录。 (4)创建任何电子邮件域之前,规划并设置好)创建任何电子邮件域之前,规划并设置好POP3服务器的身份验证服务器的身份验证方
9、法。方法。14.3配置Postfix常规服务器1个简易Postfix服务器设定流程主要包含以下几个步骤。(1)配置好DNS。(2)配置Postfix服务程序。(3)配置Dovecot服务程序。(4)创建电子邮件系统的登录账户。(5)启动Postfix服务器。(6)测试电子邮件系统。2切换MTA,让sendmail随系统启动RHEL 6默认已经安装了postfix,所以需要切换MTA。步骤如下:任务 1 安装、启动和停止Sendmail服务 1安装bind和postfix服务rootRHEL7-1 # rpm -q postfixrootRHEL7-1 # mkdir /isorootRHEL7
10、-1 # mount /dev/cdrom /isorootRHEL7-1 # yum clean all /安装前先清除缓存rootRHEL7-1 # yum install bind postfix -yrootRHEL7-1 # rpm qa|grep postfix/检查安装组件是否成功2打开SELinux有关的布尔值,在防火墙中开放dns、smtp服务。重启服务,并设置开机重启生效。rootRHEL7-1 # setsebool -P allow_postfix_local_write_mail_spool on rootRHEL7-1 # systemctl restart pos
11、tfixrootRHEL7-1 # systemctl restart namedrootRHEL7-1 # systemctl enable namedrootRHEL7-1 # systemctl enable postfixrootRHEL7-1 # firewall-cmd -permanent -add-service=dnsrootRHEL7-1 # firewall-cmd -permanent -add-service=smtprootRHEL7-1 # firewall-cmd -reload3Postfix服务程序主配置文件(/etc/ postfix/main.cf)Po
12、stfix服务程序主配置文件(/etc/ postfix/main.cf)有679行左右的内容,主要的配置参数如表14-2所示参数作用myhostname邮局系统的主机名mydomain邮局系统的域名myorigin从本机发出邮件的域名名称inet_interfaces监听的网卡接口mydestination可接收邮件的主机名或域名mynetworks设置可转发哪些主机的邮件relay_domains设置可转发哪些网域的邮件4别名和群发设置如果要使用别名设置功能,首先需要在/etc目录下建立文件aliases。然后编辑文件内容,其格式如下。alias: recipient,recipient,
13、其中,alias为邮件地址中的用户名(别名),而recipient是实际接收该邮件的用户。下面通过几个例子来说明用户别名的设置方法。【例14-1】 为user1账号设置别名为zhangsan,为user2账号设置别名为lisi。方法如下。 rootRHEL7-1 # vim /etc/aliases/添加下面两行:zhangsan: user1lisi: user25利用Access文件设置邮件中继Access文件用于控制邮件中继(RELAY)和邮件的进出管理。可以利用Access文件来限制哪些客户端可以使用此邮件服务器来转发邮件。例如限制某个域的客户端拒绝转发邮件,也可以限制某个网段的客户端
14、可以转发邮件。Access文件的内容会以列表形式体现出来。其格式如下。对象 处理方式对象和处理方式的表现形式并不单一,每一行都包含对象和对它们的处理方式。下面对常见的对象和处理方式的类型做简单介绍。Access文件中的每一行都具有一个对象和一种处理方式,我们需要根据环境需要进行二者的组合。来看一个现成的示例,使用vim命令来查看默认的access文件。默认的设置表示来自本地的客户端允许使用Mail服务器收发邮件。通过修改Access文件,可以设置邮件服务器对E-mail的转发行为,但是配置后必须使用postmap建立新的access.db数据库。6. 设置邮箱容量(1)设置用户邮件的大小限制(
15、2)通过磁盘配额限制用户邮箱空间 使用“df -hT”查看邮件目录挂载信息。 首先使用vim编辑器修改/etc/fstab文件 由于sda2分区格式为xfs,默认自动开启磁盘配额功能:usrquota,grpquota。 设置磁盘配额下面为用户和组配置详细的配额限制,使用edquota命令进行磁盘配额的设置,命令格式如下。edquota -u 用户名用户名 或或 edquota -g 组名组名 编辑/etc/postfix/main.cf配置文件,删除以下语句,将邮件发送大小限制去掉:message_size_limit=500000014.4 配置Dovecot服务程序在Postfix服务器
16、RHEL7-1上进行基本配置以后,Mail Server就可以完成E-mail的邮件发送工作,但是如果需要使用POP3和IMAP协议接受邮件,还需要安装dovecot软件包,如下所示。1. 安装Dovecot服务程序软件包(1)安装POP3和IMAP。rootRHEL7-1 # yum install dovecot -yrootRHEL7-1 # rpm -qa |grep dovecot(2)启动POP3服务,同时开放pop3和imap对应的TCP端口110和143。rootRHEL7-1 # systemctl restart dovecot rootRHEL7-1 # systemct
17、l enable dovecot rootRHEL7-1 # firewall-cmd -permanent -add-port=110/tcprootRHEL7-1 # firewall-cmd -permanent -add-port=25/tcprootRHEL7-1 # firewall-cmd -permanent -add-port=143/tcprootRHEL7-1 # firewall-cmd -reload14.4 配置Dovecot服务程序(3)测试。使用netstat命令测试是否开启POP3的110端口和IMAP的143端口,如下所示。rootRHEL7-1 #nets
18、tat -an|grep :110tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN tcp6 0 0 :110 :* LISTEN udp 0 0 0.0.0.0:41100 0.0.0.0:* rootRHEL7-1 #netstat -an|grep :143tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN tcp6 0 0 :143 :* LISTEN 14.4 配置Dovecot服务程序2. 配置部署Dovecot服务程序 在Dovecot服务程序的主配置文件中进行如下修改。首先是第24行,把Dovecot服务程序支持的电子邮件协议修改为
19、imap、pop3和lmtp。不修改也可以,默认就是这些协议。rootRHEL7-1 # vim /etc/dovecot/dovecot.confprotocols = imap pop3 lmtp 在主配置文件中的第48行,设置允许登录的网段地址,也就是说我们可以在这里限制只有来自于某个网段的用户才能使用电子邮件系统。如果想允许所有人都能使用,修改本参数为:也可修改为某网段,如:。14.4 配置Dovecot服务程序3. 配置邮件格式与存储路径在Dovecot服务程序单独的子配置文件中,定义一个路径,用于指定要将收到的邮件存放到服务器本地的哪个位置。这个路径默认已经定义好了,我们只需要将该
20、配置文件中第24行前面的井号(#)删除即可。rootRHEL7-1 # vim /etc/dovecot/conf.d/10-mail.confmail_location = mbox:/mail:INBOX=/var/mail/%u4. 创建用户,建立保存邮件的目录以创建user1和user2为例。创建用户完成后,建立相应用户的保存邮件的目录(这是必须的,否则出错!)。至此,对Dovecot服务程序的配置部署步骤全部结束。rootRHEL7-1 # useradd user1rootRHEL7-1 # useradd user2rootRHEL7-1 # passwd user1 rootR
21、HEL7-1 # passwd user2 rootRHEL7-1 # mkdir -p /home/user1/mail/.imap/INBOXrootRHEL7-1 # mkdir -p /home/user2/mail/.imap/INBOX14.5 配置一个完整的收发邮件服务器并测试【例14-4】 Postfix电子邮件服务器和DNS服务器的地址为,利用Telnet命令完成邮件地址为的用户向邮件地址为的用户发送主题为“The first mail:user1 TO user2”的邮件,同时使用telnet命令从IP地址为的POP3服务器接收电子邮件。具体过程如下所示。1使用Telnet
22、登录服务器,并发送邮件当Postfix服务器搭建好之后,应该尽可能快地保证服务器的正常使用,一种快速有效的测试方法是使用Telnet命令直接登录服务器的25端口,并收发信件以及对Sendmai1进行测试。在测试之前,我们先要确保Telnet的服务器端软件和客户端软件已经安装。14.5 配置一个完整的收发邮件服务器并测试(1)依次安装telnet所需软件包。rootClient1 # rpm -qa|grep telnetrootClient1 # yum install telnet-server -y/安装telnet服务器软件rootClient1 # yum install telnet
23、 -y/安装telnet客户端软件rootClient1 # rpm qa|grep telnet/检查安装组件是否成功(2)让防火墙放行。 rootclient1 # firewall-cmd -permanent -add-service=telnetrootclient1 # firewall-cmd reload(3)创建用户(前在已创建user1和user2)(4)配置DNS服务器,并设置虚拟域的MX资源记录。14.5 配置一个完整的收发邮件服务器并测试(5)在Client1上测试DNS是否正常,这一步至关重要!rootclient1 # vim /etc/resolv.conf r
24、ootclient1 # nslookup set type=MX Address:192.168.10.1#mail exchanger = 10 . exit(6)配置/etc/ postfix/main.cf。(同时配置Dovecot服务程序(详见任务22-2),此处简略)。14.5 配置一个完整的收发邮件服务器并测试2利用Telnet命令接收电子邮件 rootClient11 # telnet 192.168.10.1 110 /利用telnet命令连接邮件服务器的110端口Trying 192.168.10.1.Connected to 192.168.10.1.Escape cha
25、racter is .+OK Dovecot ready.user user2 /利用user命令输入用户的用户名为user2+OKpass 123 /利用pass命令输入user2账户的密码为123+OK Logged in.list /利用list命令获得user2账户邮箱中各邮件的编号+OK 1 messages:1 291.retr 1 /利用retr命令收取邮件编号为1的邮件信息,下面各行为邮件信息14.5 配置一个完整的收发邮件服务器并测试+OK 291 octetsReturn-Path: Received: from (unknown 192.168.10.20)by (Pos
26、tfix) with SMTP id EF4AD25Ffor ; Sat, 4 Aug 2018 22:33:23 +0800 (CST)The first mail:user1 TO user2.quit /退出telnet命令+OK Logging out.Connection closed by foreign host.14.5 配置一个完整的收发邮件服务器并测试3用户邮件目录/var/spool/mail我们可以在邮件服务器RHEL7-1上进行用户邮件的查看,这可以确保邮件服务器已经在正常工作了。Postfix在/var/spool/mail目录中为每个用户分别建立单独的文件用于存放
27、每个用户的邮件,这些文件的名字和用户名是相同的。14.5 配置一个完整的收发邮件服务器并测试4邮件队列邮件服务器配置成功后,就能够为用户提供E-mail的发送服务了,但如果接收这些邮件的服务器出现问题,或者因为其他原因导致邮件无法安全地到达目的地,而发送的SMTP服务器又没有保存邮件,这样这封邮件就可能会失踪。不论是谁都不愿意看到这样的情况出现,所以Postfix采用了邮件队列来保存这些发送不成功的信件,而且,服务器会每隔一段时间重新发送这些邮件。通过mailq命令来查看邮件队列的内容。14.6 使用Cyrus-SASL实现SMTP认证实例:建立一个能够实现SMTP认证的服务器,邮件服务器和D
28、NS服务器的IP地址是,客户端Client1的IP地址是,系统用户是user1和user2,DNS服务器的配置沿用例14-4。其具体配置步骤如下:1. 编辑认证配置文件 安装cyrus-sasl软件rootRHEL7-1 # yum install cyrus-sasl -y 查看、选择、启动和测试所选的密码验证方式 rootRHEL7-1 # saslauthd -v /查看支持的密码验证方法authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap httpform14.6 使用Cyrus-SASL实现SMTP认证
29、rootmail # vim /etc/sysconfig/saslauthd /将密码认证机制修改为shadowMECH=shadow/第7行:指定对用户及密码的验证方式,由pam改为shadow,本地用户认证rootRHEL7-1 # ps aux | grep saslauthd /查看saslauthd进程是否已经运行root 5253 0.0 0.0 112664 972 pts/0 S+ 16:15 0:00 grep -color=auto saslauthd/开启SELinux允许saslauthd程序读取/etc/shadow文件rootRHEL7-1 # setsebool
30、 -P allow_saslauthd_read_shadow onrootRHEL7-1 # testsaslauthd -u user1 -p 123 /测试saslauthd的认证功能0:OK “Success.” /表示saslauthd的认证功能已起作用14.6 使用Cyrus-SASL实现SMTP认证 编辑smtpd.conf文件,使Cyrus-SASL支持SMTP认证rootRHEL7-1 # vim /etc/sasl2/smtpd.confpwcheck_method: saslauthdmech_list: plain login log_level: 3/记录log的模式
31、saslauthd_path:/run/saslauthd/mux/设置smtp寻找cyrus-sasl的路径14.6 使用Cyrus-SASL实现SMTP认证2. 编辑main.cf文件,使Postfix支持SMTP认证。 默认情况下,Postfix并没有启用SMTP认证机制。要让Postfix启用SMTP认证,就必须在main.cf文件中添加如下配置行:rootRHEL7-1 # vim /etc/postfix/main.cfsmtpd_sasl_auth_enable = yes /启用SASL作为SMTP认证smtpd_sasl_security_options = noanonym
32、ous/禁止采用匿名登录方式broken_sasl_auth_clients = yes/兼容早期非标准的SMTP认证协议(如OE4.x)smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination /认证网络允许,没有认14.6 使用Cyrus-SASL实现SMTP认证 重新载入Postfix服务,使配置文件生效(防火墙、端口、SELinux设置同任务22-1)rootRHEL7-1 # postfix check rootRHEL7-1 # postfix reloadrootRHEL
33、7-1 # systemctl restart saslauthdrootRHEL7-1 # systemctl enable saslauthd3. 测试普通发信验证rootclient1 # telnet 25Trying 192.168.10.1.Connected to .Escape character is .helo 220 ESMTP Postfix250 2.1.0 Ok554 5.7.1 : Relay access denied /未认证,所以拒绝访问,发送失败14.6 使用Cyrus-SASL实现SMTP认证 重新载入Postfix服务,使配置文件生效(防火墙、端口、S
34、ELinux设置同任务22-1)rootRHEL7-1 # postfix check rootRHEL7-1 # postfix reloadrootRHEL7-1 # systemctl restart saslauthdrootRHEL7-1 # systemctl enable saslauthd3. 测试普通发信验证rootclient1 # telnet 25Trying 192.168.10.1.Connected to .Escape character is .helo 220 ESMTP Postfix250 2.1.0 Ok554 5.7.1 : Relay access
35、 denied /未认证,所以拒绝访问,发送失败14.6 使用Cyrus-SASL实现SMTP认证5. 字符终端测试Postfix的SMTP认证(我们使用域名来测试)。 由于前面采用的用户身份认证方式不是明文方式,所以首先要通过printf命令计算出用户名和密码的相应编码。rootRHEL7-1 # printf user1 | openssl base64dXNlcjE=/用户名user1的BASE64编码rootRHEL7-1 # printf 123 | openssl base64MTIz/ 密码123的BASE64编码 字符终端测试认证发信rootclient1 # telnet 192.168.10.1 2514.6 使用Cyrus-SASL实现SMTP认证6. 在客户端启用认证支持。当服务器启用认证机制后,客户端也需要启用认证支持。以Outlook 2010为例,在图14-5的窗口中一定要勾选“我的发送服务器(SMTP)要求验证”,否则,不能向其它邮件域的用户发送邮件,而只能够给本域内的其他用户发送邮件。其他需要说明的信息其他需要说明的信息本项目后的实训视频、其他文件请详见随书光盘。本教材电子教案、试卷等全套资源提供群: 414901724作者QQ:68433059教材教材ISBN:9787113-27064-3