Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

Sendmail第八章:规则

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

8. 地址与规则

  在研究到规则的内部工作原理之前,我们需要新建一个虚构的网络以提供一个公用的环境,以支持我们要谈论的mail地址。

8.1 一个虚构的网络

  我们拥有一个如图8-1所示的网络。它包括三个站点(每个云图表示一个站点),三个站点之间使用高速网络相连(有线连接)。每个站点都是一个由许多独立的计算机组成的一个DNS域。每一个域的设置都不相同,但从用户角度来看,发给一封信给本域内的用户与发一封信给其它域用户并没有什么区别。

sendmail-8-1

  图8-1 在我们这个虚拟网络中的域分布

  一个域名是从右往左解释的。例如,acme.com是指acme是顶级域名com(供商业组织使用)的一部分。类似的,edu是供教育机构使用的顶级域名,gov是供政府组织使用的顶级域名。

  一个域可以包括许多机器。每一台域内的机器都有一个由主机名、“.”、域名组成的全规范域名。例如,sec.acme.com就是一个全规范域名,它包括主机名sec,一个点,以及域名acme.com。

  主机和域名是不区分大小写。就是说,sec.acme.com与下面几种写法完全等价:


SEC.Acme.COM
sEc.aCmE.cOm

8.1.1 域dc.gov

  图8-2显示了dc.gov域的内部结构。它是由三台主机组成(在真实世界可能会由更多台主机组成)。这三台主机互相之间使用私有网络(有线连接)连接起来,以保证其安全性。仅有一台主机:fbi.dc.gov拥有与外部网络的连接。所有从外面进来的邮件,将首先到达fbi.dc.gov,然后由fbi.dc.gov转发给内部网内的适当的主机上。例如:用户george最终还是在他自己的机器wash.dc.gov上收到他的邮件,即便邮件是从fbi.dc.gov转给他的。在这种情况下,fbi.dc.gov所称为网关(gateway),因为它就象是一个在内部网与外部网之间的一个门;它也可以被称为转发器(forwarder),因为它从外部网接收所有给内部机器的信件,然后转发给他们。

sendmail-8-2

  图8-2 整个dc.gov域只有fbi.dc.gov可到达

  不论网关(gateway)是否存在,在.dc.gov域中的用户仍然是在他们自己的机器上收到邮件。在.dc.gov域中,内部邮件通过内部网络直接从一台机器发往另一台机器,网关(gateway)并不关心。但发往外部网的邮件则必须先发给网关(gateway)。

  网关(gateway)只会转发那些以域名为地址的邮件(如wash.dc.gov)。不幸地,因为网关(gateway)并不知道其它机器上有什么用户,所以象user@dc.gov这样的邮件,很可能会被网关(gateway)退回去。

8.1.2 域acme.com

  在图8-3中显示了.acme.com域的内部结构。它与.dc.gov域不同,在这个域中所有的主机都是直接与外部网络(Internet)相连的。所有的机器都可以直接从外部网接到邮件。例如,用户tim同样是在他自己的机器boss.acme.com上接收和阅读邮件,但与.dc.gov域不同的是,这里不需要网关(gateway)。

sendmail-8-3

  图8-3 acme.com域中的所有主机都可以访问外部网

  就象fbi.dc.gov,机器sec.acme.com将接收到发往所有地址是acme.com的邮件(如user@acme.com)。但是与网关fbi.dc.gov不同,sec.acme.com知道整个域中的用户情况。所以,发往tim@acme.com的邮件将被正确地转发给主机boss.acme.com。

8.1.3 域uc.edu

  在图4中显示了第三种设置方法。在这个域中,所有的邮件(无论内部的还是外部的)都将发往mail.us.edu。与前面两个例子不同的是,所有的邮件都不再发到其它机器上,而是存放在mail.us.edu这台机器的spool目录中。其它机器通过mount这个目录来阅读他的邮件(或使用POP协议收信)。

sendmail-8-4

  图8-4 只有mail.us.edu接收整个域的邮件

  在这个系统中,邮件地址仅需要包含本地接收的名字,一个“@”符,再加上域名(如user@us.edu)。这样不再需要知道每个用户使用哪台机器。

  以上三种实现方法各有优点,也各有缺点。我们并不完全赞成某个,也不完全否决某个。在本章中,假设我们的机器在us.edu域中。我们选择这个域是因为其sendmail配置文件最简单。

8.1.4 UUCP和主机通路

  在这个虚构的网络中,我们假定有两台机器通过拔号连接到acme.com域中(如图8-5)。在UUCP中,一台机器需要知道确切的连接方法。例如,sonya想从sec.acme.com中取得邮件,必须知道它还需要通过主机lady。

sendmail-8-5

  图8-5 UUCP连接到sec.acme.com

8.2 为什么需要规则(Rules)

  规则(Rules)是在sendmail.cf文件中用来重写(修改)邮件地址,检查地址错误,选择邮件转发代理的。地址需要重写,是因为很多情况下,你需要根据转发代理的不同,命名不同的地址格式。如图8-6所示:

sendmail-8-6

  图8-6 规则修改了地址,检测到错误,选择分发代理

  如果uuhost是一个通过拔号与你连接的主机,那么邮件就可能通过UUCP发送出去,因此地址friend@uuhost就需要转换成为UUCP的格式:uuhost!friend。

  而由于地址@neighbor未指定接收邮件的用户名,所以将被认为是一个错误的格式。

  分发代理是sendmail程序用来完成实际的邮件传送的。规则(Rules)通过检查每一个接收的地址,并根据地址为其选择分发代理。例如,对于root@here.us.edu这个接收者地址而言,规则(Rules)检测到here.us.edu就是本机,因此选择本地(local)分发代理程序将最终分发到root的邮箱中。

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:Sendmail第七章 宏   下一篇:Sendmail第九章 规则集0

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号