第09章电子邮件服务的配置与应用本章导读电子邮件服务的概述postfix邮件服务的安装postfix邮件服务的配置启动和停止postfix服务POP和IMAP邮件服务的实现电子邮件客户端的配置Web方式收发邮件9.1电子邮件服务的概述•电子邮件服务的概述•电子邮件系统的简介•电子邮件服务的工作原理•主流电子邮件服务器软件电子邮件服务的概述Internet最基本的服务,也是最重要的服务之一,就是电子邮件服务。据统计Internet上百分之三十以上的业务量是电子邮件,仅次于服务。与传统的邮政信件服务类似,电子邮件可以用来在Internet或Intranet上进行信息的传递和交流,但电子邮件服务还具有快速、经济的特点。发一份电子邮件给远在他方的一位用户,通常来说,对方几分钟之内就能收到。如果选用传统邮件,发一封特快专递也需要至少一天的时间。而且电子邮件的费用最多只需几毛钱。与实时信息交流,如电话相比,因为电子邮件是采用存储转发的方式,发送邮件时,并不需要收件人处于在线状态,收件人可以根据实际需要随时上网从邮件服务器上收取邮件,方便了信息的交流。电子邮件系统的简介对于一个完整的电子邮件系统而言,它主要由以下三部分构件组成。1.用户代理2.邮件服务器3.电子邮件使用的协议•SMTP协议•POP3协议•IMAP4协议电子邮件服务的工作原理E-mail的传输过程如下。①用户在各自的POP服务器注册登记,由网络管理员设置为授权用户,并取得一个POP信箱,获得POP和SMTP服务器的地址信息。假设两个服务器的域名分别为example.com和163.com,注册用户分别为liu和chen,E-mail地址分别为liu@example.com和chen@163.com。②当example.com服务器上的用户liu向chen@163.com发送E-mail时,E-mail首先从客户端被发送至example.com的SMTP服务器。③example.com的SMTP服务器根据目的E-mail地址查询163.com的SMTP服务器,并转发该E-mail。④163.com的SMTP服务器收到转发的E-mail,并保存。⑤163.com的chen用户利用客户端登录至163.com的POP服务器,从其信箱中下载并浏览E-mail。主流电子邮件服务器软件在Linux平台中,有许多邮件服务器可供选择,但目前使用较多的是Sendmail服务器、Postfix服务器和Qmail服务器。Sendmail是一个很优秀的邮件服务软件。几乎所有Linux的缺省配置中都内置了这个软件,只需要设置好操作系统,它就能立即运转起来。Postfix是一个由IBM资助下由WietseVenema负责开发的一个自由软件工程产物,它的目的就是为用户提供除Sendmail之外的邮件服务器选择。Qmail是有DanBernstein开发的可以自由下载邮件服务器软件,其第一个beta版本0.70.7发布于1996年1月24日,当前版本是2.3.3-2。9.2postfix邮件服务的安装RedHatEnterpriseLinux提供了sendmail和postfix两种STMP邮件服务软件,让用户可以随意地选择其中一种!不过,默认情况下安装程序已将sendmail安装到系统中了,如果要使用postfix,就必须先将sendmail服务停止,然后再安装postfix服务软件。具体操作步骤如下:①检查sendmail服务是否已启动netstat-nutlp|grep:25②关闭sendmail服务及开机时自启动/etc/rc.d/init.d/sendmailstopchkconfigsendmailoff③安装postfix服务将RedHatEnterpriseLinux5的第3张安装盘放入光驱,加载光驱后在光盘的Server目录下找到postfix的RPM安装包文件postfix-2.3.3-2.i386.rpm,然后使用下面的命令安装:rpm-ivh/mnt/Server/postfix-2.3.3-2.i386.rpm9.3postfix邮件服务的配置•postfix服务的基本配置•虚拟别名域的配置•用户别名的配置•SMTP认证的配置postfix服务的基本配置1.设置运行postfix服务的邮件主机的主机名、域名myhostname=mail.gdvcp.netmydomain=gdvcp.net2.设置由本机寄出的邮件所使用的域名或主机名称myorigin=$mydomain3.设置postfix服务监听的网络接口inet_interfaces=all4.设置可接收邮件的主机名称或域名mydestination=$mydomain,$myhostname5.设置可转发(Relay)哪些网络的邮件mynetworks=192.168.16.0/246.设置可转发哪些网域的邮件relay_domains=gdvcp.net虚拟别名域的配置①编辑postfix主配置文件/etc/postfix/main.cf,进行如下定义:virtual_alias_domains=dzxx.cn,example.comvirtual_alias_maps=hash:/etc/postfix/virtual②编辑配置文件/etc/postfix/virtual,进行如下定义:@dzxx.cn@gdvcp.netadmin@example.comlbtst0321@example.comst0321001,st0321002daliu@example.comlbt,liu6812@163.com③在修改配置文件main.cf和virtual后,要使更改立即生效,应分别执行/usr/sbin目录下以下的两条命令:postmap/etc/postfix/virtualpostfixreload虚拟别名域的配置此外,要使它能在单位内部网络中更好地转发邮件,还必须进行DNS设置。rhel5.gdvcp.net.INA192.168.16.177mail.gdvcp.net.INCNAMErhel5.gdvcp.net.gdvcp.net.INMX10mail.gdvcp.net.用户别名的配置①打开postfix主配置文件/etc/postfix/main.cf,应确认文件中包含以下两条默认语句:alias_maps=hash:/etc/aliasesalias_database=hash:/etc/aliases②编辑配置文件/etc/aliases,进行如下定义:st0322:st0322001,st0322002,st0322003,st0322004st0323::include:/etc/mail/st0323jcz01:jczliuminglm01:jczliuming,liuming86@163.com③在修改配置文件main.cf和aliases后,要使更改立即生效,应分别执行/usr/sbin目录下以下的两条命令:postalias/etc/aliasespostfixreloadSMTP认证的配置CyrusSASL是CyrusSimpleAuthenticationandSecurityLayer的简写,它最大的功能是为应用程序提供了认证函数库。应用程序可以通过函数库所提供的功能定义认证方式,并让SASL通过与邮件服务器主机的沟通从而提供认证的功能。1.Cyrus-SASL认证包的安装默认情况下,RedHatEnterpriseLinux安装程序会将Cyrus-SASL认证包,可使用下面的命令检查系统是否已经安装了Cyrus-SASL认证包或查看已经安装了何种版本:rpm-qa|grepsasl如果系统还没有安装Cyrus-SASL认证包,应将RedHatEnterpriseLinux5第1、2和3张安装光盘分别放入光驱,加载光驱后在光盘的Server目录下找到与Cyrus-SASL认证包相关的RPM包文件,然后分别使用rpm-ivh命令安装。例如,要安装第1张光盘上的cyrus-sasl-2.1.22-4.i386.rpm包文件,可使用下面的命令:rpm-ivh/mnt/Server/cyrus-sasl-2.1.22-4.i386.rpmSMTP认证的配置•2.Cyrus-SASLV2的密码验证机制默认情况下,Cyrus-SASLV2版使用saslauthd这个守护进程进行密码认证,而密码认证的方法有多种,使用下面的命令可查看当前系统中的Cyrus-SASLV2所支持的密码验证机制:saslauthd–v当前可使用的密码验证方法有getwent、kerberos5、pam、rimap、shadow和ldap。为简单起见,这里准备采用shadow验证方法,也就是直接用/etc/shadow文件中的用户账户及密码进行验证,因此,在配置文件/etc/sysconfig/saslauthd中,修改当前系统所采用的密码验证机制为shadow,即:MECH=shadowSMTP认证的配置3.测试Cyrus-SASLV2的认证功能由于Cyrus-SASLV2版默认使用saslauthd这个守护进程进行密码认证,因此,需要使用下面的命令来查看saslauthd进程是否已经运行:psaux|grepsaslauthd如果没有发现saslauthd进程,则可用下面的命令启动该进程并设置它开机自启动:/etc/init.d/saslauthdstartchkconfigsaslauthdon然后,可用下面的命令测试saslauthd进程的认证功能:/usr/sbin/testsaslauthd–ulbt–p‘123456’SMTP认证的配置4.设置postfix启用smtp认证main.cf文件中有关smtp认证的设置部分smtpd_sasl_auth_enable=yessmtpd_sasl_local_domain=''smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destinationbroken_sasl_auth_clients=yessmtpd_client_restrictions=permit_sasl_authenticatedsmtpd_sasl_security_options=noanonymousSMTP认证的配置5.测试postfix是否启用了smtp认证采用telnet命令连接到postfix服务器端口25来进行测试,测试过程如下图所示。9.4启动和停止postfix服务1.启动postfix服务/etc/init.d/postfixstart2.停止postfix服务/etc/init.d/postfixstop3.重新启动postfix服务/etc/init.d/postfixrestart4.重新载入postfix主配置文件/etc/init.d/postfixreload9.4启动和停止postfix服务5.自动启动postfix服务如果需要让postfix服务随系统启动而自动加载,可以执行“ntsysv”命令启动服务配置程序,找到“postfix”服务,然后在其前面加上“*”星号,确定即可。9.5POP和IMAP邮件服务的实现•dovecot服务的实现•cyrus-imapd服务的实现9.5POP和IMAP邮件服务的实现postfix服务只是一个MTA(邮件传输代理),它只提供SMTP服务,也就是只提供邮件的转发及本地的分发功能。要实现邮件的异地接收,还必须安装POP或IMAP服务。通常情况下,都是将STMP服务和POP或IMAP服务安装在同一台主机上,那么这台主机也就称为电子邮件服务器。RedHatEnterpriseLinux5中,有以下两个软件可以同时提供POP和IMAP服务:dovecot和cyrus-im