BBS水木清华站∶精华区
发信人: reden (鱼 ~ 梦娜丽莎的微笑 流星的故事), 信区: Linux
标 题: sendmail(5) (转载)
发信站: BBS 水木清华站 (Sat Nov 21 23:54:51 1998)
【 以下文字转载自 Unix 讨论区 】
【 原文由 bro 所发表 】
定制sendmail.cf文件
设置文件描述了邮发器(mailer),告诉sendmail怎样剖析地址和
重写消息头,和设定各种sendmail选项.注意sendmail的宏和类
都是大小写敏感的.
只有一个域的层次(中继)网络
在此例子中,所有的机器在邮件发送中功能相同.有一个或者多哥机器被
指派为邮件中继,邮件在它们上集中为以后处理或者在发送前缓存在队列
中.
这个方案的好处在于:如果一些机器经常需要关掉或者无法通讯.在这个
情况下,一个或者多个中继是可靠的;它们从不或者很少和网络断开,而被
指派为邮件的集中点.当邮件要被发送到一个关机的机器的时候,邮件被
发到中继,在那里它被缓存为以后的发送,而不是在原来的机器上缓存.
当目的机器恢复运行的时候,就由中继而不是源机器来负责发送该邮件.
邮件就可以即使的被发送到目的机器.
这种层次方案还提供了管理上的便利.例如,如果一个机器持续down乐很
长的时间,或者仅仅是不能接受邮件,这种情况在有一个集中的邮件队列的
时候很容易检测到.一个管理员可以检测中继上的邮件队列来查看到哪个
机器没有接受邮件.如果没有中继,发送到down下来的机器的邮件将被网络
中的各个机器所缓存,问题就很难被发现乐.
所有的机器都在engr.fictitious.com域下.在次网络中的机器名字是engr1,
engr2,和engr3.邮件中继是engr1.网络中的其他机器是用engr1而不是直接
发送邮件.
每个非中继的机器用相同的sendmail.cf设置文件.在中继engr1上的sendmail.cf
文件在D类的定义上略有不同.
例如,用configmail脚本,在中继机器engr1上设置邮件:
/usr/etc/configmail set directdomains engr.fictitious.com
/usr/etc/configmail set localdomain engr.fictitious.com
/usr/etc/configmail set forwarder NULL
/usr/etc/configmail set rootdomain engr.fictitious.com
用configmail脚本,在engr.fictitious.com域中其他的机器上设置mail.
注意direcrtdomains参数在所有除乐中继engr1上的机器都设定为NULL
/usr/etc/configmail set directdomains NULL
/usr/etc/configmail set localdomain engr.fictitious.com
/usr/etc/configmail set forwarder NULL
/usr/etc/configmail set rootdomain engr.fictitious.com
如果你要手动设置sendmail.cf文件,要对以下的宏和类做调整:
D宏和类
在所有的机器上,要D宏包括engr.fictitious.com域名.
在中继engr1上,要确定D类包括engr.fictitious.com域名因此
engr1可以直接向engr.fictitious.com中的所有机器发送邮件.
在剩下的机器上,要确定D类为空,因此它们不直接向其他机器
发送邮件.(它们要把邮件发送到engr1)
F宏和类
确定F宏和类为空.
T宏
在所有机器上,改变T宏以包括engr.fictitious.com域名
engr1要被识别为邮件中继站,特殊的中继站名字"relay"(在R宏中定义)
必须是engr1的一个别名.在/etc/hosts文件中把relay别名设定给engr1
或者是在DNS或者是NIS之类的东西中设定.
带多个域的层次(Hierarchical)(中继)网络
在这个例子中,层次模型被扩展到多个子域.这种环境是前一个的逻辑上的
扩展,也是当网络中的机器数量增多的时候或许最简单的一种扩展方式.环
境需要邮件寻址有使用域名.
整个居于域称为corp.ficititious.com.在corp.fictitious.com域下有一个
子域:fin.corp.fictitious.com.在corp.fictitious.com域中的机器是corp1,
corp2,和corp3.在fin.corp.fictitious.com域下的机器是fin1,fin2和fin3.
corp3是corp.fictitious.com域的中继;fin3是fin.corp.fictitious.com的
中继.
在这两个域(corp.fictitious.com和fin,corp.fictitious.com)中的机器
和前面讲的设置很类似.
用configmail脚本,在中继corp3上设置邮件:
/usr/etc/configmail set directdomains corp.fictitious.com
/usr/etc/configmail set localdomain corp.fictitious.com
/usr/etc/configmail set forwarder NULL
/usr/etc/configmail set rootdomain corp.fictitious.com
用configmail脚本,在中继站fin3上设置邮件:
/usr/etc/configmail set directdomains fin.corp.fictitious.com
/usr/etc/configmail set localdomain fin.corp.fictitious.com
/usr/etc/configmail set forwarder NULL
/usr/etc/configmail set rootdomain corp.fictitious.com
用configmail脚本,在corp.fictitious.com域中其他非中继站的机器上设置
邮件.注意在非中继站的机器上参数directdomains被设置为NULL
/usr/etc/configmail set directdomains NULL
/usr/etc/configmail set localdomain corp.fictitious.com
/usr/etc/configmail set forwarder NULL
/usr/etc/configmail set rootdomain corp.fictitious.com
用configmail脚本,在fin.corp.fictitious.com域中其他非中继站的机器上
设置邮件.注意在非中继站的机器上参数directdomains被设置为NULL.
/usr/etc/configmail set directdomains NULL
/usr/etc/configmail set localdomain fin.corp.fictitious.com
/usr/etc/configmail set forwarder NULL
/usr/etc/configmail set rootdomain corp.fictitious.com
如果你要手动设置sendmail.cf文件,需要对下列宏和类做调整:
D宏:
对corp.fictitious.com域中的的所有机器,改变D宏使之包含
corp.fictitious.com域名.
对所有fin.corp.fictitious.com域中的机器,改变D宏使之包含
fin.corp.fictitious.com域名.
D类:
在中继站corp3上,要确定D类包含corp.fictitious.com域名因此
corp3将把邮件直接发送到corp.fictitious.com中的各个机器上.
在中继站fin3上,要确定D类包含fin.corp.fictitious.com域名因此
fin3将把邮件直接发送到fin.corp.fictitious.com中的各个机器上.
在网络中其他的机器上,确定D类为空,这样它们就不直接发送邮件
到其他机器.
F宏和类:
确定F宏和类为空.
T宏:
在每个机器上,改变T宏使之包括corp.fictitious.com域名.
对中继站corp3和fin3要象这样被公认,他们必须有特殊的中继名"relay"(
象R宏定义的那样)做别名.在/etc/hosts文件中只能有一个中继别名.
下面是怎样设置每个别名:
对corp3,别名relay.corp.fictitious.com(或者是"relay")应当
被包括在/etc/hosts的条目或者是相应的DNS或者是NIS中.
对fin3,别名relay.fin.corp.fictitious.com应当
被包括在/etc/hosts的条目或者是相应的DNS或者是NIS中.
当你完成这个过程之后,继续"修改别名数据库"
--
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.78.167]
BBS水木清华站∶精华区