第12章电子邮件服务器配置ppt课件.ppt
在此输入您的封面副标题第12章 电子邮件服务器配置LinuxLinux操作系统与实训操作系统与实训( (第三版第三版)杨云杨云 编著编著中国铁道出版社中国铁道出版社国家精品课程国家精品课程/国家精品资源共享课程国家精品资源共享课程配套教材配套教材第12章 电子邮件服务器配置 项目描述:某高校组建了校园网,现需要在校园网中部署一台电子邮件服务器,用于进行公文发送和工作交流。利用基于Linux平台的Sendmail邮件服务器的配置及基于Web界面的Open Webmail邮件服务器既能满足需要,又节省了资金。在完成该项目之前,首先应当规划好电子邮件服务器的存放位置、所属网段、IP地址、域名等信息;其次,要确定每个用户的用户名,以便为其创建账号等。 项目目标 :了解电子邮件服务的工作原理 掌握sendmail和POP3邮件服务器的配置 掌握电子邮件服务器的测试 12.1 相关知识 12.3 项目实施 12.6 练习题 12.7 实践习题8.8 超级链接 第12章 电子邮件服务器配置12.2 项目设计与准备 12.4 Sendmail服务企业实战与应用 12.5 Sendmail排错 12.1 相关知识12.1.1 电子邮件服务概述 电子邮件(Electronic Mai1,简称E-mail)服务是Internet最基本也是最重要的服务之一。 与传统邮件相比,电子邮件服务的诱人之处在于传递迅速。如果采用传统的方式发送信件,发一封特快专递也需要至少一天的时间,而发一封电子邮件给远在他方的用户,通常来说,对方几秒钟之内就能收到。跟最常用的日常通信手段电话系统相比,电子邮件在速度上虽然不占优势,但它不要求通信双方同时在场。由于电子邮件采用存储转发的方式发送邮件,发送邮件时并不需要收件人处于在线状态,收件人可以根据实际需要随时上网从邮件服务器上收取邮件,方便了信息的交流。12.1.2 电子邮件系统的组成12.1.2 电子邮件系统的组成4MUA、MTA和MDA协同工作 总的来说,当使用MUA程序写信(例如elm,pine或mail)时,应用程序把信件传给Sendmail或Postfix这样的MTA程序。如果信件是寄给局域网或本地主机的,那么MTA程序应该从地址上就可以确定这个信息。如果信件是发给远程系统用户的,那么MTA程序必须能够选择路由,与远程邮件服务器建立连接并发送邮件。MTA程序还必须能够处理发送邮件时产生的问题,并且能向发信人报告出错信息。例如,当邮件没有填写地址或收信人不存在时,MTA程序要向发信人报错。MTA程序还支持别名机制,使得用户能够方便的用不同的名字与其他用户、主机或网络通信。而MDA的作用主要是把接收者MTA收到的邮件信息投递到相应的邮箱中。 12.1.3 电子邮件传输过程 电子邮件与普通邮件有类似的地方,发信者注明收件人的姓名与地址(即邮件地址),发送方服务器把邮件传到收件方服务器,收件方服务器再把邮件发到收件人的邮箱中。如图 S M T P 发 件 人 发 件 服 务 器 收 件 服 务 器 收 件 人 以一封邮件的传递过程为例,下面是邮件发送的基本过程,如图 MUA MTA MTA MTA MDA 邮箱 队列 队列 队列 12.1.3 电子邮件传输过程 12.1.4 与电子邮件相关的协议常用的与电子邮件相关的协议有SMTP、POP3和IMAP4。1SMTP(Simple Mail Transfer Protocol) 2POP3(Post Office Protocol 3) 3IMAP4(Internet Message Access Protocol 4)12.1.5 邮件中继 前面讲解了整个邮件转发的流程,实际上邮件服务器在接收到邮件以后,会根据邮件的目的地址判断该邮件是发送至本域还是外部,然后再分别进行不同的操作,常见的处理方法有以下两种。1本地邮件发送 当邮件服务器检测到邮件发往本地邮箱时,如发送至,处理方法比较简单,会直接将邮件发往指定的邮箱。12.1.4 与电子邮件相关的协议12.1.4 与电子邮件相关的协议(1)中继。(3)第三方中继。3邮件认证机制 如果关闭了OPEN RELAY,那么必须是该组织成员通过验证后才可以提交中继请求。也就是说,你的用户要发邮件到组织外,一定要经过验证。要注意的是不能关闭中继,否则邮件系统只能在组织内使用。邮件认证机制,要求用户在发送邮件时,必须提交账号及密码,邮件服务器验证该用户属于该域合法用户后,才允许转发邮件。 (2)OPEN RELAY。12.2 项目设计及准备 12.2.1 项目设计项目设计 本项目选择企业版Linux网络操作系统提供的电子邮件系统Sendmail来部署电子邮件服务,利用Windows 7的Mail程序来收发邮件(如果没安装请从网上下载后安装)。12.2 项目设计及准备 12.2.2 项目准备项目准备 (1)安装好的企业版)安装好的企业版Linux网络操作系统,并且必须保证网络操作系统,并且必须保证Apache服服务和务和perl语言解释器正常工作。客户端使用语言解释器正常工作。客户端使用Linux和和Windows网络操作系网络操作系统。服务器和客户端能够通过网络进行通信。统。服务器和客户端能够通过网络进行通信。 (2)电子邮件服务器的)电子邮件服务器的IP地址、子网掩码等地址、子网掩码等TCP/IP参数应手工配置。参数应手工配置。 (3)电子邮件服务器应拥有一个友好的)电子邮件服务器应拥有一个友好的DNS名称,并且应能够被正常名称,并且应能够被正常解析,且具有电子邮件服务所需要的解析,且具有电子邮件服务所需要的MX资源记录。资源记录。 (4)创建任何电子邮件域之前,规划并设置好)创建任何电子邮件域之前,规划并设置好POP3服务器的身份验证服务器的身份验证方法。方法。12.3 项目实施 任务 1 安装、启动和停止Sendmail服务 1安装Sendmail服务rootRHEL6 桌面# rpm -q sendmailrootRHEL6 桌面# mkdir /isorootRHEL6 桌面# mount /dev/cdrom /isomount: block device /dev/sr0 is write-protected, mounting read-onlyrootRHEL6桌面# yum clean all /安装前先清除缓存rootRHEL6 桌面# yum install sendmail yrootRHEL6 桌面# rpm qa|grep sendmail/检查安装组件是否成功可以使用下面的命令检查系统是否已经安装了sendmail服务(成功安装):rootRHEL6 桌面# rpm -qa |grep sendmail2切换MTA,让sendmail随系统启动RHEL 6默认已经安装了postfix,所以需要切换MTA。步骤如下:任务 1 安装、启动和停止Sendmail服务 rootRHEL6 桌面# alternatives -config mta共有 2 个程序提供“mta”。 选择 命令- 1 /usr/sbin/sendmail.postfix*+ 2 /usr/sbin/sendmail.sendmail按 Enter 来保存当前选择+,或键入选择号码:2rootRHEL6 桌面# service postfix stop关闭 postfix: 确定rootRHEL6 桌面# chkconfig postfix offrootRHEL6 桌面# service sendmail start正在启动 sendmail: 确定启动 sm-client: 确定rootRHEL6 桌面# chkconfig sendmail on 任务 1 安装、启动和停止Sendmail服务 任务 1 安装、启动和停止Sendmail服务 任务 2 Sendmail常规服务器配置 任务 2 Sendmail常规服务器配置 2sendmail.cf和sendmail.mc sendmail.cf是Sendmail的核心配置文件,有关Sendmail参数的设定大都需要修改该文件。但是,Sendmail的配置文件和其他服务的主配置文件略有不同,其内容为特定宏语言所编写,这导致大多数人对它都抱有恐惧心理,甚至有人称之为天书。因为文件中的宏代码实在是太多。因为sendmail.mc文件的可读性远远大于sendmail.cf文件。并且,在默认情况下,Sendmail提供sendmail.mc文件模板。所以,只需要通过编辑Sendmail.mc文件,然后使用m4工具将结果导入sendmail.cf文件中即可。通过这种方法可以大大降低配置复杂度,并且可以满足环境需求。任务 2 Sendmail常规服务器配置 使用vi命令打开/etc/mail/sendmail.mc文件。 sendmail.mc内容非常庞大,但大部分已经被注释。以“dnl”开头随后的信息无效。我们先把注意力集中在第116行。DAEMON_OPTIONS(Port=smtp,Addr=127.0.0.1,Name=MTA)dnl 如果只需要搭建简单的Sendmail服务器的话,sendmail.mc文件只需要在这行做修改即可。括号中的Addr字段表示SMTP协议侦听的地址为。任务 2 Sendmail常规服务器配置 配置邮件服务器时,需要更改IP地址为公司内部网段或者,这样可以扩大侦听范围(通常都设置为)。否则,服务器无法正常发送信件,如下所示。 DAEMON_OPTIONS(Port=smtp,Addr=0.0.0.0,Name=MTA)dnl 注意括号内的标点符号。Port前面的标点符号为表示字符引用开始的单引号(键盘左上角“1”左边那一个键),而Name=MTA后面是表示字符引用结束的单引号(与开始的单引号不同,英文状态双引号的下档键)。sendmail.mc文件不可随意加入空格符号。任务 2 Sendmail常规服务器配置 3m4工具的使用 在使用m4工具前,请先确认服务器上已经安装了该软件包。默认情况下,m4工具是被安装好的。可以使用rpm -qa命令检测,如下所示。rootRHEL6 桌面#rpm -qa|grep m4任务 2 Sendmail常规服务器配置 如果服务器上未安装该软件包,请先安装后再进行后面的配置过程。在配置Sendmail过程中,需要利用m4工具将编辑后的sendmail.mc文件内容重定向到sendmail.cf文件中。这样可避免去直接编辑复杂的sendmail.cf文件,如下所示。rootserver #m4 /etc/mail/sendmail.mc /etc/mail/sendmail.cf 使用m4工具很容易完成对主配置文件sendmail.cf文件的修改。这里需要注意的是,每当我们修改过sendmail.mc文件后,都需要使用m4工具再次将结果导入到sendmail.cf文件中。任务 2 Sendmail常规服务器配置 任务 2 Sendmail常规服务器配置 5POP3和IMAP 在Sendmail服务器进行基本配置以后,Mail Server就可以完成E-mail的邮件发送工作,但是如果需要使用POP3和IMAP协议接受邮件,还需要安装Dovecot软件包,如下所示。 (1)安装POP3和IMAP。 rootRHEL6 桌面# yum install devecot -yrootRHEL6桌面# rpm -qa |grep dovecot任务 2 Sendmail常规服务器配置 5POP3和IMAP 在Sendmail服务器进行基本配置以后,Mail Server就可以完成E-mail的邮件发送工作,但是如果需要使用POP3和IMAP协议接受邮件,还需要安装Dovecot软件包,如下所示。 (1)安装POP3和IMAP。 rootRHEL6 桌面# yum install devecot -yrootRHEL6桌面# rpm -qa |grep dovecot任务 2 Sendmail常规服务器配置 5POP3和IMAP(2)启动POP3服务。安装过dovecot软件包后,使用service命令启动dovecot服务。如果还需要让dovecot服务每次随系统启动而启动,则使用chkconfig命令修改。如下所示。rootRHEL6 桌面# service dovecot restartrootRHEL6 # chkconfig dovecot on任务 2 Sendmail常规服务器配置 (3)测试。使用netstat命令测试是否开启POP3的110端口和IMAP的143端口,如下所示。如果显示110和143端口开启,则表示POP3以及IMAP服务已经可以正常工作。任务 2 Sendmail常规服务器配置 6别名和群发设置 用户别名是经常用到的一个功能。顾名思义,别名就是给用户起另外一个名字。例如,给用户A起个别名为B,则以后发给B的邮件实际是A用户来接收。为什么说这是一个经常用到的功能呢?第一,root用户无法收发邮件,如果有发给root用户的信件必须为root用户建立别名。第二,群发设置需要用到这个功能。企业内部在使用邮件服务的时候,经常会按照部门群发信件,发给财务部门的信件只有财务部所有人才会收到,其他部门的则无法收到。如果要使用别名设置功能,首先需要在/etc/mail/目录下建立文件aliases。然后编辑文件内容,其格式如下。alias: recipient,recipient, 其中,alias为邮件地址中的用户名(别名),而recipient是实际接收该邮件的用户。下面通过几个例子来说明用户别名的设置方法。任务 2 Sendmail常规服务器配置 任务 2 Sendmail常规服务器配置 7利用Access文件设置邮件中继 Access文件用于控制邮件中继(RELAY)和邮件的进出管理。可以利用Access文件来限制哪些客户端可以使用此邮件服务器来转发邮件。例如限制某个域的客户端拒绝转发邮件,也可以限制某个网段的客户端可以转发邮件。Access文件的内容会以列表形式体现出来。其格式如下。 对象对象 处理方式处理方式 对象和处理方式的表现形式并不单一,每一行都包含对象和对它们的处理方式。下面对常见的对象和处理方式的类型做简单介绍。任务 2 Sendmail常规服务器配置 任务 2 Sendmail常规服务器配置 任务 2 Sendmail常规服务器配置 8设置SMTP验证 利用access.db文件实现邮件中继代理时,对于利用拨号上网的用户不太现实。因为此类用户的IP地址是通过DHCP服务器分配的,是动态变化的。此时可以使用SMTP验证机制对指定的用户进行邮件中继。 利用SMTP验证机制,可以实现用户级别的邮件中继控制。在Red Hat Enterprise Linux 5中,利用saslauthd服务提供SMTP身份验证,该服务由cyrus-sasl软件包提供。一般情况下这些软件包是默认安装的。可以使用下面的命令查看系统是否安装了相应的软件包。rootRHEL6 mail# rpm -qa |grep sasl任务 2 Sendmail常规服务器配置 可以使用下面的命令查看其支持的验证方法。rootRHEL6 mail# saslauthd -vauthentication mechanisms: getpwent kerberos5 pam rimap shadow ldap 任务 2 Sendmail常规服务器配置 为了使Sendmail服务器支持SMTP身份验证功能,需要执行以下的操作步骤。(1)编辑/etc/mail/sendmail.mc文件,修改和认证相关的配置行。rootRHEL6 mail# vim /etc/mail/Sendmail.mc/修改和认证相关的配置行(删除每行开始的dnl注释符)TRUST_AUTH_MECH(EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN)dnldefine(confAUTH_MECHANISMS,EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN)dnlFEATURE(no_default_msa)dnlDAEMON_OPTIONS(Port=submission,Name=MSA,M=Ea)dnl任务 2 Sendmail常规服务器配置 任务 2 Sendmail常规服务器配置 接下来用户可以在Outlook或者Foxmail等客户端测试。有关SMTP认证的配置界面如图 任务 3 设置邮箱容量任务 3 设置邮箱容量2修改修改fstab文件文件 首先使用vim编辑器修改/etc/fstab文件,如图12-4所示(一定保证/var是单独的ext3分区。) 在在第第1章章中的硬盘分区中中的硬盘分区中我们已经考虑了独立分区的我们已经考虑了独立分区的问题,这样保证了该实训的问题,这样保证了该实训的正常进行。从正常进行。从图图12-4可以看可以看出,出,/var已经自动挂载了,已经自动挂载了,我们只要加上配额选项就可我们只要加上配额选项就可以了。即将以了。即将“defaults”改改为为“defaults,usrquota,grpquota”。任务 3 设置邮箱容量3创建配额文件 使用quotacheck命令,可以在文件系统中分别为用户和组创建配额文件。如果针对邮件服务器进行配额设置,并且存放邮件信息的/va目录在独立的分区,那么,就需要在/var目录下创建配额文件,如下所示。配置结果如图 任务 3 设置邮箱容量任务 3 设置邮箱容量任务 3 设置邮箱容量任务 4 设置虚拟域用户 使用虚拟域,可以将发给虚拟域的邮件投递到真实域的用户邮箱中。利用虚拟域也可以实现邮件列表的功能。这里的虚拟域可以是实际并不存在的域,而真实域既可以是本地域,也可以是远程域或Internet中的域。虚拟域是真实域的别名,通过虚拟域用户表/etc/mail/virtusertable.db,实现了虚拟域的邮件地址到真实域的邮件地址的重定向。虚拟域用户表/etc/mail/virtusertable.db文件,是通过/etc/mail/virtusertable文件生成的。该文件的格式类似于aliases文件,如下所示。虚拟域地址 真实域地址任务 4 设置虚拟域用户 任务 4 设置虚拟域用户 任务 4 设置虚拟域用户 编辑区域的正向解析数据库文件。rootRHEL6 mail# $TTL 1D IN SOA . . ( 2013120800 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS . IN MX 10 .任务 4 设置虚拟域用户 任务 4 设置虚拟域用户 任务 5 调试Sendmail服务器1使用Telnet登录服务器,并发送邮件 当Sendmail服务器搭建好之后,应该尽可能快地保证服务器的正常使用,一种快速有效的测试方法是使用Telnet命令直接登录服务器的25端口,并收发信件以及对Sendmai1进行测试。在测试之前,我们先要确保Telnet的服务器端软件已经安装,如下所示。任务 5 调试Sendmail服务器(1)依次安装)依次安装telnet所需软件包。所需软件包。rootRHEL6 桌面# rpm -qa|grep telnetrootRHEL6 桌面# yum install telnet-server y/安装安装telnet服务器软件服务器软件rootRHEL6 桌面# yum install telnet y/安装安装telnet客户端软件客户端软件rootRHEL6 桌面# rpm qa|grep telnet/检查安装组件是否成功检查安装组件是否成功(2)启动)启动Telnet服务。服务。 使用使用vim编辑编辑/etc/xinetd.d/telnet,找到,找到 disable = yes,将,将yes改成改成no。 激活服务。激活服务。 rootRHEL6 mail# service xinetd start或者使用或者使用ntsysv,在出现的窗口之中,将,在出现的窗口之中,将telnet选中,确定离开。选中,确定离开。任务 5 调试Sendmail服务器查看23、25和1l0端口是否处于监听状态,如下所示。如果监听端口没有打开,请对相应的服务进行调试。(4)使用Telnet命令登录Sendmail服务器25端口,并进行邮件发送测试。 任务 5 调试Sendmail服务器【例12-5】 Sendmail电子邮件服务器地址为,利用Telnet命令完成邮件地址为的用户向邮件地址为的用户发送主题为“The first mail”的邮件。具体过程如下所示。(1)配置好)配置好DNS。(2)检查是否安装检查是否安装sendmail、dovecot、sendmail-cf、telnet、cyrus-sasl等服务。安装各种服务并切换等服务。安装各种服务并切换MTA。(各种服务缺一不。(各种服务缺一不可!)可!)(3)修改)修改/etc/mail/sendmail.mc。任务 5 调试Sendmail服务器【例例12-5】 具体过程如下所示。具体过程如下所示。(3)修改)修改/etc/mail/sendmail.mc。 将将52-53两行配置文件前面的两行配置文件前面的dnl去掉:去掉:rootRHEL6 # cd /etc/mailrootRHEL6 mail# vim /etc/mail/sendmail.mc TRUST_AUTH_MECH(EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN)dnldefine(confAUTH_MECHANISMS, EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN)dnl 第第116行将行将smtp侦听范围从改为或将这行前面加侦听范围从改为或将这行前面加dnl注释掉。注释掉。DAEMON_OPTIONS(Port=smtp,Addr=0.0.0.0,Name=MTA)dnl 第第155行:行:LOCAL_DOMAIN(localhost.localdomain )dnl 修改成如下自己域:修改成如下自己域:LOCAL_DOMAIN()dnl /这里的是本地邮箱的域名这里的是本地邮箱的域名任务 5 调试Sendmail服务器【例例12-5】 具体过程如下所示。具体过程如下所示。(4)修改)修改/etc/mail/access文件。文件。rootRHEL6 mail# vim /etc/mail/accessConnect:localhost.localdomain RELAYConnect:localhost RELAYConnect:127.0.0.1 RELAY Connect: RELAY/这是你接收和发送的域名这是你接收和发送的域名Connect:192.168.0.0 RELAY /这是你要接收和发送的网段这是你要接收和发送的网段(5)编译生成)编译生成access.db。rootRHEL6 mail# makemap hash /etc/mail/access.db /etc/mail/sendmail.cf(9)启动)启动named、dovecot、sendmail、telnet、saslauthd服务。服务。rootRHEL6 mail# service named restartrootRHEL6 mail# service dovecot restartrootRHEL6 mail# service sendmail restartrootRHEL6 mail# service xinetd restartrootRHEL6 mail# service saslauthd start任务 5 调试Sendmail服务器【例例12-5】 具体过程如下所示。具体过程如下所示。注意:如果不启动注意:如果不启动saslauthd服务,利用服务,利用telnet收邮件时将出现收邮件时将出现如下错误。如下错误。user clienta +OKpass 123456 -ERR Authentication failed.任务 5 调试Sendmail服务器【例例12-5】 具体过程如下所示。具体过程如下所示。(10) 测试。测试。rootRHEL6 mail# telnet 192.168.0.3 25 /利用利用telnet命令连接邮件服务器的命令连接邮件服务器的25端口端口Trying 192.168.0.3.Connected to ().Escape character is .220 sendmail ESMTP Sendmail 8.13.1/8.13.1; Tue, 22 Feb 2011 23:39:25 +0800helo /利用利用helo命令向邮件服务器表明身份,不是命令向邮件服务器表明身份,不是hello。250 sendmail Hello 192.168.0.3, pleased to meet youmail from:test /设置信件标题以及发信人地址。其中信件标题设置信件标题以及发信人地址。其中信件标题 /为为“test”,发,发信人地址为。信人地址为。250 2.1.0 . Sender okrcpt to: /利用利用rcpt to命令输入收件人的邮件地址命令输入收件人的邮件地址250 2.1.5 . Recipient okdata / data表示要求开始写信件内容了。当输入完表示要求开始写信件内容了。当输入完data指令后,会提示以一个单行的指令后,会提示以一个单行的“”结束结束信信件。件。354 Enter mail, end with . on a line by itselfThe first mail/信件内容信件内容. /“”表示结束信件内容。千万不要忘记输入表示结束信件内容。千万不要忘记输入“”。250 2.0.0 lBUIdPR9004080 Message accepted for delivery quit /退出退出telnet命令命令221 2.0.0 server closing connectionConnection closed by foreign host.任务 5 调试Sendmail服务器任务 5 调试Sendmail服务器2利用Telnet命令接收电子邮件 【例12-6】 利用Telnet命令从IP地址为的POP3服务器接收电子邮件。rootRHEL6 mail# telnet 192.168.0.3 110 /利用telnet命令连接邮件服务器的110端口Trying 192.168.0.3.Connected to ().Escape character is .+OK dovecot ready.user clienta /利用利用user命令输入用户的用户名为命令输入用户的用户名为clienta +OKpass 123456 /利用利用pass命令输入命令输入clienta账户的密码为账户的密码为123456+OK Logged in.list /利用利用list命令获得命令获得clienta账户邮箱中各邮件的编号账户邮箱中各邮件的编号+OK 1 messages:1 543.1-ERR Unknown command: 1retr 1 /利用利用retr命令收取邮件编号为命令收取邮件编号为1的邮件信息,下面各行为邮件信息的邮件信息,下面各行为邮件信息+OK 543 octetsReturn-Path: 任务 5 调试Sendmail服务器Received: from ( 192.168.0.3) by server () with SMTP id lBUIdPR9004080 for ; Tue, 22 Feb 2011 01:40:23 +0800Date: Tue, 22 Feb 2011 02:39:25 +0800Message-Id: subject: the first mailX-IMAPbase: 1199018937 2Status: OX-UID: 2Content-Length: 18X-Keywords: this is a test.quit /退出退出telnet命令命令+OK Logging out.Connection closed by foreign host.任务 5 调试Sendmail服务器Telnet命令有以下命令可以使用,其命令格式及参数说明如下。stat命令 格式:stat 无需参数。list命令 格式:list n 参数n可选,n为邮件编号。uidl命令 格式:uidl n 同上。 retr命令 格式:retr n 参数n不可省,n为邮件编号。 dele命令 格式:dele n 同上。 top 命令 格式:top n m 参数n、m不可省,n为邮件编号,m为行数。 noop命令 格式:noop 无需参数。 quit命令 格式:quit 无需参数。 各命令的详细功能见下面的说明。stat命令不带参数,对于此命令,POP3服务器会响应一个正确应答,此响应为一个单行的信息提示,它以“+OK”开头,接着是两个数字,第一个是邮件数目,第二个是邮件的大小,如:+OK 4 1603。任务 5 调试Sendmail服务器任务 5 调试Sendmail服务器3用户邮件目录/var/spool/mail 我们可以在邮件服务器上进行用户邮件的查看,这可以确保邮件服务器已经在正常工作了。Sendmail在/var/spool/mail目录中为每个用户分别建立单独的文件用于存放每个用户的邮件,这些文件的名字和用户名是相同的。例如,邮件用户的文件是user1。rootserver mail# ls /var/spool/mailuser1 user2 root任务 5 调试Sendmail服务器4邮件队列 邮件服务器配置成功后,就能够为用户提供E-mail的发送服务了,但如果接收这些邮件的服务器出现问题,或者因为其他原因导致邮件无法安全地到达目的地,而发送的SMTP服务器又没有保存邮件,这样这封邮件就可能会失踪。不论是谁都不愿意看到这样的情况出现,所以Sendmail采用了邮件队列来保存这些发送不成功的信件,而且,服务器会每隔一段时间重新发送这些邮件。通过mailq命令来查看邮件队列的内容。rootserver mail# mailq其中各列说明如下。Q-ID:表示此封邮件队列的编号(ID)。Size:表示邮件的大小。Q-Time:邮件进入/var/spool/mqueue目录的时间,并且说明无法立即传送出去的原因。Sender/Recipient:发信人和收信人的邮件地址。如果邮件队列中有大量的邮件,那么请检查邮件服务器是否设置不当,或者被当作了转发邮件服务器。任务 5 调试Sendmail服务器任务 5 调试Sendmail服务器5查看Mailer中的统计信息 如果想查看从开始到现在邮件服务器总共收发多少邮件和相关数据的话,可以使用mailstats命令来帮助完成。rootserver mail# mailstats 当执行完mailstats命令后,出现7行内容,其中第一行显示当前时间,而26行则以列表的形式显示与邮件相关的数据。其中每一列的含义如下。M:该列表示邮件工作者(Mailer)的编号。其中T表示总和(Total)。msgsfr:该列表示一共有多少封信由这个邮件工作者(Mailer)发送出去。任务 5 调试Sendmail服务器bytes_from:该列表示发送的信件大小。msgsto:该列与msgsfr相反,表示一共有多少封信由这个邮件工作者(Mai1er)接收的。bytes_to:该列表示接收信件的大小。msgsrej:该列表示信件被拒绝(rejected)的次数。msgsdis:该列表示信件被丢弃(discarded)的次数。msgsqur:该列表示信件被隔离(quarantined)的次数。Mailer:邮件工作者之一,esmtp主要用来从事对外的工作,而local主要从事对本机的工作。任务 6 Sendmail应用案例 案例要求:局域网网段:,企业域名:案例要求:局域网网段:,企业域名:,DNS及及Sendmail服务器地址:。现要求内部员工可以使用服务器地址:。现要求内部员工可以使用Sendmail自由收自由收发邮件。发邮件。任务 6 Sendmail应用案例下面是配置步骤。(1)配置DNS主配置文件named.conf。rootRHEL6# vim /etc/named.confoptions directory /var/named; ;zone . IN type hint; file named.ca;zone IN type master; file .zone;zone 0.168.192.in-addr.arpa IN typemaster; file0.168.192.zone; ;任务 6 Sendmail应用案例(2)配置区域文件。使用MX记录设置邮件服务器,这条记录一定要有,否则Sendmail无法正常工作。$TTL 1D IN SOA . . ((略)(略) IN NS . IN MX 5 .任务 6 Sendmail应用案例(3)配置反向区域文件。(略)(略)INNS.3INPTR.INMX.3INPTR.任务 6 Sendmail应用案例(4)修改DNS域名解析的配置文件。rootRHEL6# vim /etc/resolv.conf(5)重启named服务使配置生效。(6)安装Sendmail软件包。任务 6 Sendmail应用案例(4)修改DNS域名解析的配置文件。rootRHEL6# vim /etc/resolv.conf(5)重启named服务使配置生效。(6)安装Sendmail软件包。任务 6 Sendmail应用案例(7)编辑sendmail.mc修改SMTP侦听网段范围。 配置邮件服务器需要更改IP地址为公司内部网段或者,这样可以扩大侦听范围(通常都设置成),否则邮件服务器无法正常发送邮件。rootRHEL6# vim /etc/mail/sendmail.mc第116行将smtp侦听范围从改为。DAEMON_OPTIONS(Port=smtp,Addr=0.0.0.0,Name=MTA)dnl第155行修改成自己域:LOCAL_DOMAIN()dnlLOCAL_DOMAIN()dnl任务 6 Sendmail应用案例(8)使用m4命令生成sendmail.cf文件。rootRHEL6 桌面# m4 /etc/mail/sendmail.mc /etc/mail/sendmail.cf(9)修改/etc/mail/access文件。rootRHEL6 桌面# vim /etc/mail/ RELAY RELAY(10)修改local-host-names文件添加域名及主机名。rootRHEL6 桌面# vim /etc/mail/local-host-.(11)安装dovecot软件包(POP3和IMAP)。任务 6 Sendmail应用案例(12)启动sendmail服务。service sendmail restart和service dovecot restart命令启动Sendmail和Dovecot服务,如果每次开机启动,可以使用chkconfig命令修改。(13)测试端口。使用netstat命令测试是否开启SMTP的25端口、POP3的110端口及IMAP的143端口。rootRHEL6 桌面#netstat -an|grep 25rootRHEL6 桌面#netstat -an|grep 1