《实验15邮件服务器的配置.ppt》由会员分享,可在线阅读,更多相关《实验15邮件服务器的配置.ppt(45页珍藏版)》请在三一办公上搜索。
1、实验15 邮件服务器的配置,一、实验目的二、实验工具与设备三、实验预备知识 四、实验内容和步骤五、实验总结,一、实验目的,1了解邮件服务器的基本知识。2掌握SendMail的工作原理。3掌握SendMail的配置方法。,二、实验工具与设备,1交换机(或集线器)。2带网卡的计算机,包括装有Windows系统的学生机和Linux系统的计算机服务器。3网线若干。4Red Hat Linux 9.0安装光盘。,三、实验预备知识,SendMail最初在1979年由Eric Allman编写,起先运行在BSD 4.0平台上。但这个程序不够灵活,每次编译时都需要重新配置。随着TCP协议和其他方面的发展,其不
2、灵活性已经明显不能满足日益增长的需求。Eric Allman决定重新编写SendMail,从而诞生了现在的MTA标准(邮件传输代理标准)。,SendMail是Linux中的默认邮件传输代理(MTA),任务是从邮件用户代理(MUA)接收邮件,然后根据配置文件的定义把它们传送给配置好的的寄送程序。SendMail也能接受网络连接,并且发送邮件到本地邮箱或发送到其他程序。SendMail的配置文件见表15-1。,表15-1 SendMail的配置文件,1文件/etc/mail/access(访问数据库)该文件定义什么主机或IP地址可以访问本地邮件服务器,以及是哪种类型的访问。主机可能会列出OK、RE
3、JECT、RELAY或简单的通过SendMail出错处理程序检测的给定的邮件错误。主机默认列出OK,只要邮件的最后目的地是本地主机,则允许传送邮件到主机。若列出REJECT,将拒绝所有邮件连接,带有RELAY选项的主机将被允许通过该邮件服务器发送邮件到任何地方。,例1:配置SendMail的访问许可数据库。550 We do not accept mail from spammersFREE.STEALTH.MAILER 550 We do not accept mail from spammers REJECTOK128.32 RELAY本例有5条记录。与第一列匹配的发件人受到第二列动作的影
4、响。,前两个记录给出SendMail出错处理程序检测到的错误代码。当一个邮件与第一列相匹配时,该信息被打印到远程主机上。第三条记录拒绝来自Internet上的一个特别主机的邮件()。第四记录允许来自 的邮件连接,这条记录比上一行更准确。更多的准确匹配使不准确的匹配无效。,最后一条记录允许电子邮件从主机为128.32开头的IP地址转发,这些主机将被允许通过这台邮件服务器前往其他邮件服务器发送邮件。当该文件被升级时,必须在/etc/mail/运行make升级数据库。,2文件/etc/mail/aliases(别名数据库)该文件包含一个扩展用户、程序或其他别名的虚拟邮箱列表。以下是一些在/etc/m
5、ail/aliases中使用的例子。例2:邮件别名。root:localuserftp-bugs:joe,eric,paulbit.bucket:/dev/nullprocmail:|/usr/local/bin/procmail,该文件的格式很简单。冒号左边的邮箱名可以被展开成右边的形式。第一行简单地将root邮箱扩展为localuser,之后将继续在别名数据库中进行查找。如果没有找到匹配的记录,邮件被发给本地用户localuser。第二行展示一个邮件列表。发送到ftp-bugs的邮件可被展开成joe、eric和paul三个邮箱。当然也可以通过形式指定远程的邮箱。,第三行展示如何把邮件写入到
6、文件中,本例是/dev/null。最后一行展示如何将邮件发给一个程序,这里是通过UNIX管道发到/usr/local/bin/procmail的标准输入。更新该文件时,需要在/etc/mail/中用make更新数据库。,3文件/etc/mail/local-host-names该文件是一个本地主机名的列表,可以放入任何SendMail将收发邮件的域名或主机。例如,如果该邮件服务器从域和主机接收邮件,则local-host-names文件可以按以下方式书写:当该文件被升级时,SendMail必须重新启动,以便更新设置。,4文件/etc/mail/sendmail.cf(SendMail的主配置文
7、件)SendMail.cf控制SendMail的所有行为,包括从重写邮件地址到打印拒绝远程邮件服务器信息等。该配置文件相当复杂,初学者没有必要弄清楚其细节(超出本书范围)。一般而言,该文件对于标准邮件服务器来说,很少需要改动。,SendMail主配置文件可以用m4(1)宏定义SendMail的特性和行为。其细节请参考/usr/src/contrib/sendmail/cf/README文件。该文件被修改时,SendMail必须重新启动,以使新修改生效。,5文件/etc/mail/virtusertable该文件映射虚拟域名和邮箱到真实的邮箱。这些邮箱可以是本地的、远程的、/etc/mail/a
8、liases中定义的别名或一个文件。例3:虚拟域邮件映射。root joe,本例中映射了一个域。该文件按照从上到下,首个匹配的方式来处理。第一项将映射到本地邮箱root。第二项将映射到位于的postmaster。如果没有来自的匹配,则使用最后一条映射,表示将所有的其他邮件发给域的某个人。这样,将映射到本地信箱joe。,四、实验内容和步骤,1实验环境的构建将实验的设备按图15-1所示连接好。其中,在PC1上安装Red Hat Linux作为服务器,并配置好网络。其中,IP地址为。PC1在本实验中作为邮件服务器(已安装SendMail的Linux系统);在PC1上启动并配置DNS系统,使其能正确解
9、释域。PC2PCn是安装有Windows操作系统的计算机,并配置好网络,IP地址设置为(X在2254之间取值)。本实验中,PC2PCn作为装有邮件客户端程序(例如outlook)的客户机。,图15-1实验环境的连接图,2把邮件服务器的主机名和IP地址加入到DNS中(操作方法参考实验12)设邮件服务器名为,本实验所用局域网的DNS服务器和邮件服务器运行在同一主机上,邮件服务器的IP地址对应为。,(1)用nslookup命令确认DNS的工作是否正常运行命令:rootlocalhost/root#nslookup-sil 如果DNS工作正常,将出现以下提示:Address:192.168.0.1#5
10、3Name:,(2)测试反向域名解析这项操作对防止邮件延迟有很重要的作用。大部分邮件服务器都把反向域名解析作为邮件传送时认证的一部分。因此,需要用IP地址试一下反向域名解析是否正确。rootlocalhost/root#nslookup-silAddress:192.168.0.1#531.0.168.192.in-addr.arpa name=.以上信息表示DNS已经工作正常。,3配置SendMail服务Red Hat Linux 9.0默认安装已经可以使SMTP服务在本机运行。先用netstat-nl查看所有后台程序监听的端口:rootlocalhost/root#netstat-nl A
11、ctive Internet connections(only servers)Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:32768 0.0.0.0:*LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:*LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:*LISTEN,tcp 0 0 127.0.0.1:25 0.0.0.0:*LISTEN udp 0 0 0.0.0.0:32768 0.0.0.0:*udp 0 0 0.0.0.0:667 0.0.0.0
12、:*udp 0 0 0.0.0.0:111 0.0.0.0:*Active UNIX domain sockets(only servers)Proto RefCnt Flags Type State I-Node Path unix 2 ACC STREAM LISTENING 1119/dev/gpmctl unix 2 ACC STREAM LISTENING 1172/tmp/.font-unix/fs7100,注意:127.0.0.1:25表示SendMail服务已经在监听本机的25(SMTP)端口。但这只是表示邮件服务器目前只接收本机的邮件。为了解决这个问题,需要修改配置,告诉Se
13、ndMail去监听本机以外的网卡地址。假设服务器上只安装了一块网卡(eth0),IP地址,可以修改/etc/mail/sendmail.cf文件来配置SendMail的监听端口。操作:将#SMTP daemon options,O DaemonPortOptions=Port=smtp,Addr,Name=MTA修改为 O DaemonPortOptions=Port=smtp,Addr,Name=MTA修改完成后,保存退出,并用以下命令重新启动SendMail服务:rootlocalhost/root#/etc/init.d/SendMail restart再用netstat-nl来查看所发
14、生的更改:rootlocalhost/root#netstat-nlActive Internet connections(only servers)Proto Recv-Q send-Q Local Address Foreign Address State,tcp 0 0 0.0.0.0:32768 0.0.0.0:*LISTENtcp 0 0 0.0.0.0:111 0.0.0.0:*LISTENtcp 0 0 0.0.0.0:22 0.0.0.0:*LISTENtcp 0 0 192.168.0.1:25 0.0.0.0:*LISTENudp 0 0 0.0.0.0:32768 0.0
15、.0.0:*udp 0 0 0.0.0.0:667 0.0.0.0:*udp 0 0 0.0.0.0:111 0.0.0.0:*Active UNIX domain sockets(only servers)Proto RefCnt Flags Type State I-Node Path,unix 2 ACC STREAM LISTENING 1119/dev/gpmctlunix 2 ACC STREAM LISTENING 1172/tmp/.font-unix/fs7100rootlocalhost/root#可见,SendMail的监听端口是eth0的IP地址。设置完成后,SendM
16、ail可以接收来自外部的连接。4设定SendMail允许接收的域名可以在/etc/mail/local-host-names文件中设置,直接把域名输入该文件即可。格式如下:#local-host-names-include all aliases for your machine,保存退出后,重新启动SendMail服务,SendMail就可以接收来该域的信件。如果需要再增加新的域,只要继续在该文件中添加新的域即可。配置好的邮件服务器在本机上已经可以正常地工作,即可以接收邮件了(允许的域)。,如果想要发送和传递邮件,还必须在这台计算机上执行。如果用户都直接登录该服务器发送邮件,则不需要更改任何
17、配置。如果希望大部分或所有用户可以在远程主机上使用该邮件服务器,例如,利用Outlook Express等客户端工具,必须更改配置,以允许这些主机使用该邮件服务器。,5配置邮件服务器可以收到来自外部的邮件,并且允许信赖的客户在远程传递信件(1)在/etc/mail/access文件中加入:RELAY保存后,运行make access.db的命令生成access.db文件。,修改完成后,access文件应该是类似以下内容:description#of the format of this file.(search for access_db in that file)SendMail-doc#p
18、ackage,#by default we allow relaying from localhostlocalhost.localdomain RELAYlocalhost RELAY127.0.0.1 RELAY RELAY,(2)运行以下命令:rootlocalhost mail#make access.db rootlocalhost mail#make access.db命令把新的设置添加到SendMail的hash数据库。SendMail用它来判断允许哪些主机通过邮件服务器来传递邮件。这样设置后,还可以通过设置子网(如192.168)限制该域。,注意:这样设置后就对外开放了,当该邮
19、件服务器放在Internet上时,系统可能受到大量垃圾信件的攻击。,(3)如果希望在远程收取信件,需要安装IMAP或者POP。Red Hat Linux 9.0默认已安装POP/IMAP,可以用以下命令检查是否已经安装:rpm-aq|grep-i imap如果已经安装,系统显示类似以下提示信息:rootlocalhost mail#rpm-aq|grep-i imapimap-2001a-18rootlocalhost mail#,当正确的包被安装后,要打开POP3的连接端口,并修改/etc/xinetd.d/下面的ipop3文件,把disable的值改成no。该文件修改后的内容类似如下:#d
20、efault:off#description:The POP3 service allows remote users to access their mail#using an POP3 client such as Netscape Communicator,mutt,#or fetchmail.service pop3,socket_type=streamwait=nouser=rootserver=/usr/sbin/ipop3dlog_on_success+=USERIDlog_on_failure+=USERIDdisable=no修改后,需要重新启动xinetd使其生效。命令如下
21、:rootlocalhost xinetd.d#/etc/init.d/xinetd restart,6测试邮件服务器可以通过发送一封测试邮件来测试新建好的邮件服务器,并且可以在客户端用熟悉的邮件工具(如Outlook或Foxmail)来收取该邮件。(1)为新用户开通一个邮件账号要为一个新的用户开邮件账号,只需在Linux系统中新增一个用户即可。该用户账号和密码即邮件的账号和密码。,例如,用以下命令为新用户test开一个邮件账号:adduser testpasswd test新用户的E-mail地址就是,密码则是账号的密码。,(2)在客户端将DNS设为,并在Outlook中设置邮件账户。POP
22、3服务器和SMTP服务器均设置为即可。设置完成后,可以在网络中各邮件账号之间发送邮件。邮件服务器的设置到此完成。,7优化服务器的性能当客户端程序运行在防火墙后面,则会发生连接pop端口速度变慢。造成这个延时的原因,是邮件服务器初始用一个IDENT会话来确认客户端的身份。如果这个询问没有反应,服务器会在5秒后发出一个超时信号。这个值可以降低到1秒,以减少IDENT产生影响。,修改/etc/SendMail.cf文件,把timeout的值改成需要的值。例如:#timeouts(many of these)#O Timeout.ident=5s将后一行改为O Timeout.ident=1s,五、实验总结,1写出实验报告。2简述邮件服务器的配置过程。3如果邮件服务器和DNS服务器不是在同一主机上,应如何配置邮件服务器?,