Sendmail第六章:邮件中枢与分发代理6. 邮件中枢与分发代理 使用一个强大的中心机器处理所有的邮件,比让网络中所有的工作站自己处理自己的邮件好得多。这样的一个中心机器就叫作邮件中枢(Mail hub),它就象美国联邦快运公司处理包裹一样工作。在过去,当你通过联邦快运公司将包裹从旧金山寄到巴黎,包裹将首先被送到孟菲斯的田纳西,甚至你想寄到洛杉机,它也是先送到孟菲斯(参见图6-1)。这是因为孟菲斯是联邦快运公司的处理中心。所有的包,不管它们从哪来,到哪去,都先送到处理中心(中枢,hub),然后再从那里发送出来。
图6-1 联邦快运包裹处理示意图 这种处理方法的好处就是,联邦外运公司只有处理中心需要知道如何发往全世界(当然,联邦快运是有多个处理中心的),而其它地方的分支机构只要知道如何发往处理中心就可以了。 类似地,你的工作站也可以将自己看成分支机构(客户机),将处理邮件的中心机器看成处理中心。这个邮件中枢将为整个机构处理邮件,这样做有许多好处: 1) 所有发往这个机构的信都发给邮件中枢,而不直接发往客户机。由邮件中枢来处理有几个优点:客户机无需运行sendmail守候进程来侦听邮件。而且客户机的名字无需告知外部,因此更容易安全地将客户机与Internet隔离。 2) 所有从机构往外发的邮件都先发给邮件中枢,然后由邮件中枢转发到最终目的地,而不是由客户机直接向外发送。这个机制可以使客户机无须一直观察Internet的变化;所有的待发邮件都保存在邮件中枢中,而不是客户机处,这样管理起来更简单;而且一个单一的sendmail.cf文件就可为所有的客户机服务。 3) 所有发出去的邮件都将被修改,使得其看起来象来自邮件中枢的邮件。这样回复的邮件就不会直接返回到每一个客户机。这样做,所有的邮件好象都来自一台机器,一台很大的机器。 4) 所有发往本地用户的邮件都将传送到邮件中枢,存放在spool中。而无需每台机器都建一个spool目录来存放收到的邮件。这样做的优点是所有本地的邮件都由一个机器处理,所有本地机器都无需进行处理。而且这样管理spool也更加容易。 但如果你的机构的电脑网络是不同体系结构的电脑组成的,或散在许多网络中,使用邮件中枢就不是太好了: 1) 如果一个机构经常有数量巨大的邮件收发,那么这台邮件中枢就可能负载过大,以使所有的邮件都被缓存,一直等待发送。如果负载厉害的话,甚至可能使本地邮件转发也会出现这样的现象,那是十分可怕的。 2) 为了让邮件中枢正常工作,它需要知道系统中所有用户的登录名,也就是意味着需要一个主/etc/passwd文件,它是所有主机上的/etc/passwd的集合,或者使用NIS系统来构建。 3) 因为所有的邮件都通过邮件中枢传送,而不是直接送给接收者,这就意味着一定会延迟。对于一些小的机构,这个延迟可以忽略不计,而让邮件的总量上去时,这会成为一个严重的问题。 4) 如果一个客户机是直接使用UUCP连接,或是与多个网络连接,那样配置文件会变得十分复杂。 6.1 client.cf文件 这个教程的目的是产生一个简单的邮件中枢的sendmail.cf文件。为了区别与前面几个章节中的sendmail.cf文件区分开来,在此我们把它称为client.cf文件。我们将在后面的几个小节中逐段地生成这个文件,并做一些相应的说明。本章中生成的文件将完成两个任务: 1) 它将指示sendmail运行为邮件中枢,发送所有给其它机器的mail服务器。 2) 它将使所有外出的邮件表现为从邮件中枢发出的一样。 在这章中,我们主要处理第一个任务:如何让客户机上的邮件送到邮件中枢。 6.2 定义一个邮件分发代理 sendmail除了在TCP/IP网络转发邮件外,并不能自己处理邮件传送。而是调用一个程序来实现(参见图6-2)。这个程序就叫做分发代理。哪个代理程序处理哪类邮件分发任务在sendmail.cf文件中定义。
图6-2 选择转发代理 加入你的client.cf文件中的第一项是定义负责将信件转发给邮件中枢的转发代理程序。最初,sendmail只需要转发代理程序的名字与路径。设置形如:
这是一个最小的配置文件。将这些行加入到client.cf文件中。配置的第二行定义了一个分发代理。它包含三个部分,每个部分使用逗号隔开。
以M开始的行用于定义邮件分发代理。紧跟着在后面的hub是分发代理的标识名。 这个标识名供你以后写的配置文件部分参考。
P=用于设置路径。这一句配置用来指出处理邮件分发的程序的全路径名,在这里使用的是[IPC]。([IPC]是一个Sendmail内部使用的专有名称,说明它有能力在TCP/IP网络上完成邮件分发工作。)而对于其它情况下,则设置为其转发程序的名称,如/bin/mail等。
A=后面跟着参数列表,用来指定P=指定的程序运行时的参数。第0个参数就是程序的名称(在此就是IPC,注意没有包含括号)。而其它的参数就是在A=后面指定的,这此例中仅有一个:$h。这个$h是一个宏,表示接收者的主机名。我们会在第7章中更详细地说明宏。它通常是关于分发代理定义的最后一项。 上一篇:Sendmail第五章 sendmail.cf文件 下一篇:Sendmail第七章 宏 更多相关文章
|
推荐文章
精彩文章
|