RHEL6版-项目13Postfix与Dovecot邮件服务器的搭建.ppt
“十二五”职业教育国家规划教材选题立项Red Hat Enterprise Linux 6.4(RHEL6.4)教材附带的光盘资源,Linux网络操作系统配置与管理,教材主编:夏笠芹,课程标准(教学大纲)教学设计方案(教案)PPT电子课件教材习题参考答案模拟试卷及参考答案(4套)IT认证+全国技能大赛资料知识拓展&网络工程解决方案,项目13 Postfix与Dovecot邮件服务器的搭建,【职业知识目标】了解:电子邮件服务的概念和特点,电子邮件服务的常用协议熟悉:电子邮件系统的结构,电子邮件的传递过程掌握:使用Postfix+dovecot搭建电子邮件服务器,使用Office Outlook收发邮件的方法【职业能力目标】能使用Postfix+dovecot搭建电子邮件服务器使用用户别名虚拟别名实现邮件群发会使用Ofiice Outlook收发邮件会配置基于邮件地址的过滤控制能配置SMTP认证会用WEB方式收发邮件,13.1 项目背景,电子邮件(简称E_mail)是Internet最早出现的服务之一,是人们利用计算机网络进行信息传递的一种简便、迅速、廉价的现代化通信方式,它不但可以传送文本,还可以传递图片、图像、声音等多媒体信息。此外,附加网络硬盘的邮箱存储和兼顾收发短信、彩信、邮件等服务功能的移动邮箱,让用户可以通过手机随时随地获取邮件信息,实现真正的移动畅快沟通。到2012年,全国企业邮箱用户数达到5.8亿,虽然多数用户使用ISP或免费的电子邮箱收发电子信件,但对一些企事业单位而言,拥有自己的邮件系统是高效、安全业务运作与快速市场响应的标志,它不仅能够满足组织内部频繁的信件交流的需求,还能够提升组织形象并带来实际效益,据统计Internet上有30%的业务与电子邮件有关,邮件系统正逐步成为现代企事业内外信息交流、商务往来、移动办公的重要工具。,13.2 项目知识准备,13.2.1 电子邮件系统的组成邮件用户代理MUA客户端程序,其功能是为邮件用户提供发送、接收及邮件的撰写、阅读的界面,是用户与电子邮件系统的接口。邮件传输代理MTA负责接收MUA发送的邮件,并将邮件由一个MTA服务器转发到另一个MTA服务器。邮件递交代理MDA负责把邮件按照接收者的用户名投递到邮箱中。电子邮件协议 SMTP、POP3、IMAP4,13.2.2 电子邮件传输过程,当服务器上的用户zhang3向发送E-mail时,zhang3使用MUA编辑要发送的邮件,然后发送至域(本地域)的SMTP服务器。的SMTP服务器收到邮件后,将邮件放入缓冲区,等待发送。的SMTP服务器每隔一定时间处理一次缓冲区中的邮件队列,若是自己负责域的邮件,则根据自身的规则决定接收或者拒绝此邮件,否则的SMTP服务器根据目的E-mail地址,使用DNS服务器的MX(邮件交换器资源记录)查询解析目的域的SMTP服务器地址,并通过网络将邮件传送给目标域的SMTP服务器。的SMTP服务器收到转发的E-mail后,根据邮件地址中用户名判断用户的邮箱,并通过MDA将邮件投递到li4用户的邮箱中保存,等待用户登录来读取或下载。的li4用户利用客户端的MUA软件登录至的POP服务器,从其邮箱中下载并浏览E-mail。,13.2.3 Linux平台上主流E_mail软件,任务13-1 发送邮件服务器Postfix的配置,1Postfix服务的安装(RHEL6默认安装了Postfix而非Sendmail)rootmail#rpm-qa|grep postfixrootmail#chkconfig-list postfix2Postfix的主要配置文件,任务13-1 发送邮件服务器Postfix的配置,3main.cf文件配置行的格式及常用配置参数Postfix绝大多数配置参数都在main.cf文件中,且都设置了缺省值。用户只要调整几个基本的参数便可搭建起基本的接收邮件服务器。配置行的格式为:参数=参数值|$参数。所有配置以类似变量的设置方法来处理,如:myhostname=,请注意等号的两边要留空格符,非续行的配置行第一个字符不可以是空白,要从行首写起。可以使用“$”来扩展使用变量设置。例如,当myhostname=,而myorigin=$myhostname时,则后者等价于。如果参数支持两个以上的参数值,则可使用空格符或逗号加空格符来分隔。如:“mydestination=$myhostname,$mydomain,”可使用多行来表示同一个设置值,只要在第一行最后有逗号,且第二行开头为空格符,即可将数据延伸到第二行继续书写。若重复设置了某一项目,则以较晚出现的设置值为准。,任务13-1 发送邮件服务器Postfix的配置,4Postfix服务器的基本配置【例13-1】Postfix和DNS服务在IP地址为的同一主机,主机名为mail.dyzx.edu,服务器应为dyzx.edu本地域中的用户提供邮件服务以及远程邮件域邮件的中继转发,局域网网段为。配置的步骤如下:步骤1:设置Postfix服务器所在主机的主机名,rootmail#vim/etc/sysconfig/network/将HOSTNAME配置项改为:rootmail#service network restart,步骤2:设置DNS服务步骤3:安装Postfix软件。步骤4:编辑主配置文件main.cf,按照表13-2所示调整基本配置项。,任务13-1 发送邮件服务器Postfix的配置,任务13-1 发送邮件服务器Postfix的配置,步骤5:检查配置文件的语法正确性,重新加载配置。rootmail#postfix check rootmail#service postfix restart步骤6:创建用户账号。步骤6:创建用户账号。步骤7:为了使用telnet工具进行发信测试,安装telnet相关软件包步骤8:执行ntsysv命令在弹出的窗口中,按空格键选择telnet按【Tab】键选择【确定】开启telnet服务执行service xinetd start启动服务(telnet是挂在xinetd下的,只要启动xinetd服务就能启动telnet服务)。步骤9:发信测试(下面粗体部分为用户输入,其余为系统应答信息),任务13-2 接收邮件服务器Dovecot的配置,1dovecot服务的安装过程如下:,rootmail#vim/etc/dovecot/dovecot.conf/查找以下配置行并将其修改为:protocols=imap pop3 lmtp/20行:指定本邮件主机所运行的协议listen=*/26行:监听本机的所有网络接口行:指定允许登录的网段地址,2dovecot服务的基本配置步骤1:要启用最基本的Devocot服务,需对文件/etc/dovecot/dovecot.conf作如下修改:,#mount/dev/cdrom/mnt,任务13-2 接收邮件服务器Dovecot的配置,步骤3:启动Dovecot服务并设置为开机自动启动。,rootmail#service dovecot startrootmail#chkconfig-level 345 dovecot on,步骤2:对/etc/dovecot/conf.d/10-mail.conf配置文件作如下修改:,rootmail#vim/etc/dovecot/conf.d/10-mail.conf/查找以下配置行(第24行)并将行首“#”去掉mail_location=maildir:/Maildir/指定邮件存储格式和位置,任务13-3 使用Office Outlook 2007收发邮件,1在客户端建立电子邮件账户步骤1:若在服务器端开启防火墙,则要在服务器端使用以下命令开启25和110端口。rootmail#iptables-I INPUT-p tcp-dport 25-j ACCEPTrootmail#iptables-I INPUT-p tcp-dport 110-j ACCEPT步骤2:配置客户端DNS地址,使其指向网络中DNS服务器的IP地址,如图13-3所示。步骤3:单击【开始】【程序】【Microsoft Office】【Microsoft Office Outlook 2007】在弹出的Office Outlook 2007主窗口中依次单击【工具】【帐户设置】菜单项,如图13-4所示。步骤4:在弹出的【电子邮件帐户】对话框上单击【电子邮件】选项卡单击【新建】按钮,如图13-5所示。步骤5:弹出【选择电子邮件服务】对话框,选择【Microsoft Exchanges、POP3、IMAP或HTTP】单选项单击【下一步】,如图13-6所示。步骤6:在弹出的【自动帐户设置】对话框中勾选【手动配置服务器设置或其他服务器类型】单击【下一步】,如图13-7所示。步骤7:弹 出【选择电子邮件服务】对话框,选择【Internet电子邮件】单选项单击【下一步】,如图13-8所示。,任务13-3 使用Office Outlook 2007收发邮件,步骤8:弹出【Internet电子邮件设置】对话框,填写用户、服务器和登录等信息,填写完成后单击【测试用户设置】按钮弹出【测试用户设置】系统开始测试,若测试任务的状态均显示“已完成”,则表明设置正确单击【关闭】按钮,系统返回【Internet电子邮件设置】对话框,单击【其他设置】按钮,如图13-9所示。步骤9:弹出【Internet电子邮件设置】对话框,单击【发送服务器】选项卡取消勾选【我的发送服务器(SMTP)要求验证”】,如图13-10所示。步骤10:单击【高级】选项卡勾选【在服务器上保留邮件的副本】单击【确定】按钮,如图13-11所示。步骤11:系统返回【Internet电子邮件设置】对话框中,单击【下一步】,在弹出的窗口中单击【完成】,则成功新建了一个邮件帐户。重复步骤4步骤11过程可建立多个帐户,如图13-12所示,任务13-3 使用Office Outlook 2007收发邮件,2用户在客户端收发电子邮件步骤1:在客户端启动Office Outlook 2007在弹出的Office Outlook 2007主窗口中单击【新建】在打开的【未命名-邮件】窗口中,单击【帐户】下拉按钮选择发件人输入收件人的邮箱地址、主题和邮件内容单击【发送】按钮,如图13-13所示。,任务13-3 使用Office Outlook 2007收发邮件,2用户在客户端收发电子邮件步骤2:若能成功发送邮件则说明SMTP服务器运行正常。在Office Outlook 2007主窗口上点击【发送/接收】图标,若成功接收,说明POP3服务运行也正常,如图13-14所示。,任务13-4 使用用户别名实现邮件群发,在Postfix邮件系统中,发给一个别名用户邮件地址的邮件会实际投递到相对应的一个或多个真实用户的邮箱中,从而实现邮件一发多收的群发效果。另外,当真实用户采取实名制,而别名使用非实名制时,那又起到了隐藏真实邮件地址的效果。用户别名机制通过/etc/aliases文件实现,其配置步骤如下:步骤1:编辑main.cf,确认文件中包含如下两条语句(默认已存在):,rootmail#vim/etc/postfix/main.cfalias_maps=hash:/etc/aliases/386行:指定含有用户别名定义的文件的路径及名称alias_database=hash:/etc/aliases/397行:指定别名表数据库文件的路径及名称,任务13-4 使用用户别名实现邮件群发,步骤2:编辑/etc/aliases文件,建立别名用户与真实用户的映射关系。,rootmail#vim/etc/aliases/添加以下两行:my_stu:zhang3,li4,wang5,步骤3:执行如下命令,使修改后的配置文件main.cf和aliases立即生效。,rootmail#postalias/etc/aliases/生成可以读取的库文件aliases.dbrootmail#newaliasesrootmail#service postfix reload,任务13-4 使用用户别名实现邮件群发,步骤4:验证使用用户别名实现邮件的群发功能,任务13-5 使用虚拟别名域实现邮件群发,使用虚拟别名域,可以将发给虚拟域的邮件实际投递到真实域的用户邮箱中。而当一个虚拟域对应多个真实域时,则能实现邮件的群发功能。虚拟别名域的配置步骤如下:步骤1:编辑主配置文件main.cf,在其末尾添加以下两条配置行:,rootmail#vim/etc/postfix/main.cfvirtual_alias_domains=,/指定虚拟别名域的名称(可以定义多个)virtual_alias_maps=hash:/etc/postfix/virtual/指定虚拟别名域文件的路径和名称,步骤2:编辑/etc/postfix/virtual文件,在其中添加虚拟别名域与真实域名间的映射关系。,rootmail#vim/etc/postfix/dyzx.eduv_ li4,wang5,zhang3,任务13-5 使用虚拟别名域实现邮件群发,步骤3:执行如下命令,使更改后的配置文件main.cf和virtual立即生效。,步骤4:验证使用虚拟别名域实现邮件的群发功能,rootmail#postmap/etc/postfix/virtual/更新virtual.db数据库文件rootmail#postfix reload,任务13-6 基于邮件地址的过滤控制,1基于客户端主机名/地址的限制规则使用smtpd_client_restrictions参数对客户端使用的IP地址、网络地址、主机名、域名等进行过滤检查 步骤1:修改main.cf文件,添加基于客户端地址的过滤项目,rootmail#vim/etc/postfix/main.cfsmtpd_client_restrictions=/基于客户端地址的过滤参数,以下是2个参数值 check_client_access hash:/etc/postfix/access/指定验证访问表的名称及位置 reject_unknown_client/拒绝其IP地址在DNS中无PTR记录的客户端,步骤2:编辑access文件,在其中添加基于客户端地址的过滤规则,rootmail#vim/etc/postfix/access172.16.102 OK172.16.102.18 REJECT REJECT/保存退去。下面第一条命令是将access文件转换为hash数据库文件access.dbrootmail#postmap/etc/postfix/accessrootmail#service postfix reload,任务13-6 基于邮件地址的过滤控制,步骤3:验证 由于客户端的IP地址为被拒绝的172.16.102.18,因此出现如图13-17所示的无法到达收件人的系统报告。,任务13-6 基于邮件地址的过滤控制,2基于发件人地址的限制规则使用smtpd_sender_restrictions参数可以针对发件人的地址设置多项限制步骤1:修改main.cf文件,添加基于发件人地址的过滤项目,rootmail#vim/etc/postfix/main.cfsmtpd_sender_restrictions=/基于发件人的过滤参数 permit_mynetworks,/允许其IP地址在$mynetworks范围的发件人的连接 reject_sender_login_mismatch,/拒绝发件人与登录用户不匹配时的连接 reject_non_fqdn_sender,/拒绝发件人地址域不是FQDN格式的连接 reject_unknown_sender_domain,/拒绝其IP在DNS中无A或MX记录的发件人 check_sender_access hash:/etc/postfix/sender_access/指定发件人访问表的位置rootmail#postfix reload,任务13-6 基于邮件地址的过滤控制,2基于发件人地址的限制规则步骤2:创建sender_access文件,在其中添加基于发件人地址的过滤规则。,rootmail#vim/etc/postfix/sender_accessli4dyzx.edu REJECT/拒绝用户从外部登录发送邮件liu2 REJECT/拒绝任何域的liu2用户发送邮件sub.dyzx.edu REJECT/拒绝dyzx.edu的子域用户发送邮件rootmail#postmap/etc/postfix/sender_access/生成hash格式的库文件,任务13-6 基于邮件地址的过滤控制,3基于收件人地址的限制规则通过smtpd_recipient_restrictions参数可以对收件人进行过滤检查,rootmail#vim/etc/postfix/main.cfsmtpd_recipient_restrictions=/基于收件人的过滤参数 permit_mynetworks,/允许本邮件系统发出的邮件 reject_unauth_destination,/拒绝不是发往默认转发和默认接收的连接 reject_non_fqdn_recipient,/拒绝其地址域不属于合法FQDN的收件人 reject_unknown_recipient_domain/拒绝其IP在DNS中无A或MX记录的收件人rootmail#postfix reload,任务13-7 使用Cyrus-SASL实现SMTP认证,无论是本地域内的不同用户还是本地域与远程域的用户,要实现邮件通信都要求邮件服务器开启邮件的转发功能。为了避免邮件服务器成为各类广告与垃圾信件的中转站和集结地,对转发邮件的客户端进行身份认证(用户名和密码验证)是非常必要的。SMTP认证机制常用的是通过Cryus SASL包来实现的,其具体配置步骤如下:步骤1:RHEL6默认已经安装了Cyrus-SASL认证包。,rootmai1#rpm-qa|grep sasl,任务13-7 使用Cyrus-SASL实现SMTP认证,步骤2:查看、选择、启动和测试所选的密码验证方式,rootmail#saslauthd-v/查看支持的密码验证方法authentication mechanisms:getpwent kerberos5 pam rimap shadow ldaprootmail#vim/etc/sysconfig/saslauthd/将密码认证机制修改为shadowMECH=shadow root mail#ps aux|grep saslauthd/查看saslauthd进程是否已经运行root 6126 0.0 0.1 5980 744 pts/0 S+10:04 0:00 grep saslauthdrootmail#service saslauthd startrootmail#chkconfig saslauthd on/开启SELinux允许saslauthd程序读取/etc/shadow文件rootmail#setsebool-P allow_saslauthd_read_shadow onrootmail#testsaslauthd-u li4-p/测试saslauthd的认证功能0:OK“Success.”/表示saslauthd的认证功能已起作用,任务13-7 使用Cyrus-SASL实现SMTP认证,步骤3:调整main.cf文件,使Postfix支持SMTP认证,rootmail#vim/etc/postfix/main.cfsmtpd_sasl_auth_enable=yes/启用SASL作为SMTP认证smtpd_sasl_local_domain=/采用Cyrus-SASL V2版认证这里不作设置broken_sasl_auth_clients=yes/兼容早期非标准的SMTP认证协议(如OE4.x)smtpd_sasl_security_options=noanonymous/禁止采用匿名登录方式smtpd_recipient_restrictions=/设置基于收件人地址的过滤规则 permit_mynetworks,/允许局域网内的MUA不需要认证也能发邮件 permit_sasl_authenticated,/允许通过了SASL认证的用户向外发送邮件 reject_unauth_destination/拒绝不是发往默认转发和默认接收的连接smtpd_client_restrictions=permit_sasl_authenticated/禁止未经过认证的客户端,步骤4:重新载入Postfix服务,使配置文件生效,rootmail#postfix reload,任务13-7 使用Cyrus-SASL实现SMTP认证,步骤5:测试Postfix的SMTP认证,rootmail#printf zhang3|openssl base64emhhbmcz/经过编码的用户名zhang3rootmail#printf 123456|openssl base64MTIzNDU2/经过编码的密码123456rootmail#telnet mail.dyzx.edu 25/第一次失败的测试Trying 172.16.102.61.Connected to mail.dyzx.edu(172.16.102.61).Escape character is.220 mail.dyzx.eduESMTP PostfixEHLO localhost250-PIPELINING250-SIZE 10240000250-VRFY250-ETRN250-AUTH LOGIN PLAIN/表明Postfix已启用了SMTP认证功能250-AUTH=LOGIN PLAIN250-ENHANCEDSTATUSCODES250-8BITMIME250 DSN250 2.1.0 Ok554 5.7.1:Relay access denied/未经过验证的发信失败,任务13-7 使用Cyrus-SASL实现SMTP认证,步骤5:测试Postfix的SMTP认证,AUTH LOGIN/声明开始进行SMTP认证登录334 VXNlcm5hbWU6Emhhbmcz/填写zhang3用户名对应的加密字符串334 UGFzc3dvcmQ6MTIzNDU2/填写zhang3用户密码对应的加密字符串235 2.0.0 Authentication successful/登录成功,身份认证配置是正确的250 2.1.0 Ok250 2.1.5 OkDATA354 End data with.how are you!.250 2.0.0 Ok:queued as D84771483B4QUIT221 2.0.0 ByeConnection closed by foreign host.,任务13-7 使用Cyrus-SASL实现SMTP认证,步骤6:客户端启用认证支持。当服务器启用认证机制后,客户端也需要启用认证支持。以Office Outlook 2007为例,在图13-10的窗口中一定要勾选【我的发送服务器(SMTP)要求验证”】,否则,不能向其它邮件域的用户发送邮件,而只能够给本域内的其他用户发送邮件。,1SquirrelMail的下载与安装SquirrelMail是使用PHP开发的一套网页程序,可以与postfix、Dovecot很好地协作,通过Web界面提供邮件发送,接收和管理操作。SquirrelMail下载与安装步骤如下:步骤1:从RHEL6开始未自带SquirrelMail了,用户可以从官方网站或其它网站下载SquirrelMail软件包和多国语言包。步骤2:将下载的程序包和多国语言包传送至服务器的/tmp/目录下,并将其解压到Web服务器的/var/www/webmail目录,rootmail#tar-zxf/tmp/squirrelmail-webmail-1.4.22.tar.gz-C/var/wwwrootmail#mv/var/www/squirrelmail-webmail-1.4.22/var/www/webmailrootmai1#tar-zxf/tmp/all_locales-1.4.18-20090526.tar.gz-C/var/www/webmail,任务13-8 使用SquirrelMail实现Web方式收发邮件,1SquirrelMail的下载与安装步骤3:创建用于存放邮件内容(如签证,名称和主题)、上传附件的data和attach目录(其中在解压SquirrelMail软件包后,data目录已自动生成),并确保网站运行用户(Apache网站默认以“apache.apache”身份访问)对这两个目录有访问和写入权限。,rootmai1#chown-R apache.apache/var/www/webmail/data/rootmai1#mkdir-p/var/www/webmail/attach/rootmai1#chown-R root.apache/var/www/webmail/attach/rootmai1#chmod-R 730/var/www/webmail/attach/,任务13-8 使用SquirrelMail实现Web方式收发邮件,任务13-8 使用SquirrelMail实现Web方式收发邮件,2建立和调整SquirrelMail的配置文件SquirrelMail的主配置文件位于子目录config/中,该文件并不存在,但可以在相同目录下复制样本文件便可生成,然后对其作适当修改。,rootmai1#cd/var/www/webmail/rootmai1 webmail#cp config/config_default.php config/config.phprootmai1 webmail#vim config/config.php./省略大部分配置行,查找以下各行并按所示修改:$domain=dyzx.edu;/118行:本地邮件域$imap_server_type=dovecot;/231行:使用IMAP的类型$data_dir=/var/www/webmail/data/;/499行:数据目录的位置$attachment_dir=/var/www/webmail/attach;/517行:附件目录的位置$squirrelmail_default_language=zh_CN;/1012行:界面语言$default_charset=zh_CN.UTF-8;/1027行:默认字符集,3httpd服务的配套设置为了能在浏览器中访问到SquirrelMail的Webmail网页,应搭建Web服务器(RHEL6中已默认安装)以及安装PHP有关软件包,并在其主配置文件/etc/httpd/conf/httpd.conf中修改和添加相应配置项,然后,启动httpd服务并保证以后开机自动启动,任务13-8 使用SquirrelMail实现Web方式收发邮件,rootmai1#vim/etc/httpd/conf/httpd.conf./省略若干行ServerName 172.16.102.61:80Alias/webmail/var/www/webmail/定义虚拟目录的别名和物理路径/保存退出rootmail#service httpd restartrootmail#chkconfig httpd onrootmail#setsebool-P httpd_can_network_connect on,4使用浏览器收发邮件以上设置过程实际上在Apache服务器的默认Web站点中配置了一个别名为Webmail的虚拟目录网站。因此,可直接在浏览器的地址栏中输入http:/服务器域名或IP/webmail(此例为http:/,任务13-8 使用SquirrelMail实现Web方式收发邮件,项目小结,项目知识准备电子邮件系统的组成电子邮件传输过程Linux平台上主流E_mail软件项目实施任务13-1 发送邮件服务器Postfix的配置任务13-2 接收邮件服务器Dovecot的配置任务13-3 使用Office Outlook 收发邮件任务13-4 使用用户别名实现邮件群发任务13-5 使用虚拟别名域实现邮件群发任务13-6 基于邮件地址的过滤控制任务13-7 使用Cyrus-SASL实现SMTP认证任务13-8 使用SquirrelMail实现Web方式收发邮件,