📄 sendmail.cf生成器说明(1).htm
字号:
唯一可与nullclient一起使用的其他特性是"nocanonify"(这样可以
使非完全地址可通过SMTP连接进行发送;通常情况下地址将使用伪装
名字转变为完全邮件名称,此伪装名字默认值为邮件HUB主机的名字)。
在此特性使用是不应定义任何邮差。当然也不进行别名处理或转寄。
local_procmail 使用procmail作为本地邮差。这个邮差可以使用"user+indicator@
local.host"格式;通常情况下+indicator将被丢掉,但在默认情况下
将用-a参数传递给procmail. 此特性的参数是procmail的路径名,此
路径的默认值是PROCMAIL_MAILER_PATH。应注意的是这一特性对本地
邮差并不使用PROCMAIAL_MAILER_FLAGS或PROCMAIL_MAILER_ARGS;相
反它使用LOCAL_MAILER_FLAGS和LOCAL_MAILER_ARGS.
bestmx_is_local Accept mail as though locally addressed for any host that lists
us as the best possible MX record. 这会产生一些额外的DNS传输,
但对于小到中等信息流量的主机来说完全能正常工作。这一特性与使用通
配符的MX记录不相兼容。如果你对自己网域内的所有主机使用了通配符(*)
MX记录,则不应使用这一特性。
smrsh 对到程序的邮件使用使用sendmail发行版所带的SendMail Restricted SHell
(smrsh)而不是/bin/sh。这可以提高本地系统管理员控制对那些通过邮件
(方式)而运行程序的能力。如果对此特性加参数的话通常是smrsh的路
径;否则假设为/usr/local/etc/smrsh.
六、Hacks
某些功能我们不能称这为特性,为了与特性进行区别,将其放到hack子目录下并通
过HACK宏来调用。通常这些均与你的特定场合有关。本发行版包含了一个与BERKELEY
域有关的HACK "cssubdomain"(这使sendmail可以Berkeley.EDU或cs.Berkeley.EDU两种
方式来接收本地邮件;如将一个主机短时间内移到子域时即可使用此功能)。
七、特定场合配置:Site Configuration
注:这一部分内容实际上已相对陈旧,只所以保留本部分内容是为了向后兼容。如果
你执行新的安装则应使用mailertables. 应特别强调的是,对于新形式的UUCP_mailers
如uucp_uudom本部分内容并不工作。
八、调整规则集合:Tweaking Rulesets
对于更为复杂的配置,你可以定义特定的规则。宏LOCAL_RULE_3将产生用于规范名字
的一组规则。在此所作的任何修改均会在邮件头上反映出来。
一个常见的情况是将老的UUCP地址使用宏UUCPSMTP转换为SMTP地址。示例如下:
LOCAL_RULE_3
UUCPSMTP(decvax, decvax.dec.com)
UUCPSMTP(research, research.att.com)
将使"decvax!user"和"research!user"的地址分别转换为"user@decvax.dec.com"
和"user@research.att.com"。
同样这一定义也可以用于在数据库映象中查找主机:
LOCAL_RULE_3
R$* < @ $+ > $* $: $1 < @ $(hostmap $2 $) > $3
此镜象应在LOCAL_CONFIG部分进行定义,示例如后面所示。
与规则3类似,可用LOCAL_RULE_0引入一个新的地址解析规则。比如你可以根据需
要加入新的规则用以解析通过MX记录所接收的主机名。如下所示:
LOCAL_RULE_0
R$+ <@ host.dom.ain.> $#uucp $@ cnmat $: $1 < @ host.dom.ain.>
当有对cnmat.Berkeley.EDU的MX记录指向此主机时你可能需要上面的规则;这个
规则将捕捉到此域的信息并将其通过UUCP转发到目的地。
同样你也可以用LOCAL_RULE_1和LOCAL_RULE_2修改规则1和2,通常情况下这两个
规则集是空的。
此外还有一个很类似的宏LOCAL_CONFIG.这个宏可在固定选项设置之后但在规则定
义之前加入一些定义,可用于声用本地数据库镜像或其他任何东西。如下所示:
LOCAL_CONFIG
Khostmap hash /etc/hostmap.db
Kyplocal nis -m hosts.byname
九、伪装及中继:Masquerading and Relaying
可以使用如下行将你的主机伪装为另一个主机:
MASQUERADE_AS(host.domain)
这使得人此主机发出的信件将被标上来源于指定的主机host.domain,而不是$j.
常见的伪装是将自己的主机伪装为自己的子域(比如,我不可能伪装为一个MIT的域)。
这个行为可以被若干特性所修改;特别是masquerade_envelope,allmasquerade,
limited_masquerade和masquerade_entire_domain.
所伪装成的名字不进行正常的验证,因此很重要的一点是你的一个真实名称,也就
是说是一个完整的主机名而不是别名(CNAME).但是如果使用了一个别名(CNAME),则接收
方可以对其进行完整性验证,因此不能通过这种方式来欺骗CNAME镜像。
通常被伪装的地址只是那些来源于此主机的地址(也就是说是非完全名称或者是在
$=w中所给出的本地域名)。可以通过如下方式扩大此列表:
MASQUERADE_DOMAIN(otherhost.domain)
如上定义的作用是虽然所有到user@otherhost.domain的信件不会在本地进行发送,
但所有包含user@otherhost.domain的信件被中继时其地址将被重写为含有MASQUERADE_AS
的地址。在此定义中的参数可以是以空格分开的名字列表。
如果这些主机名是在一个文件中,则可以使用如下定义从此文件中读取主机名列表:
MASQUERADE_DOMAIN_NAME(filename)
通常情况下只有邮件头的地址将被伪装。如还希望将信封地址进行伪装,则应使用:
FEATURE(masquerade_envelope)
但总是有一些用户不应被伪装--也就是说,应该使用其内部名而不应是伪装后的地址。
Root即是一例。可以用如下定义增加此用户列表:
EXPOSED_USER(usernames)
这将加入用户到类E中;同时你有可能需要如下行:
FE/etc/sendmail.cE
你也可以将所有的非完全名字(不合格的,即那些不含@host的名字)中继到一个
中继主机上去。比如当你有一个中心邮件服务器时,你可以将其中继到此主机上,这样
用户就不用建立自己的.forward文件或别名。可以通过如下行实现此功能:
define("LOCAL_RELAY",mailer:hostname)
当mailer为默认值"relay"时可以省略此参数。此外如果有一些用户你不想他们的邮
件被中继,如当你对其建有本地别名时就不希望对其邮件进行中继。root即是最常见的
一例,因为通常root被作为本地别名处理。可用如下行增加此用户列表:
LOCAL_USER(usernames)
上面一行向类L中加入用户;实现类似功能也可用下行:
FL/etc/sendmail.cL
在使用共享邮件缓冲区/var/spool/mail时,你可能需要所有进来的邮件都发往一个
中心邮件HUB上,对此可使用下行:
define('MAIL_HUB',mailer:hostname)
与上面一样,"mailer"为默认值"relay"时可以省略。如果你同时定义了LOCAL_RELAY
和MAIL_HUB且使用了FEATURE(stickhost),使用非完全名称的邮件将发往LOCAL_RELEY
而其他用本地名称的邮件将发往MAIL_HUB. 在$=L中的所有邮件名将会在本地进行发送,
因此对这些用户你必须建立.forward文件或使用别名。
假设你在主机mastodon.CS.Berkeley.EDU上并且使用了FEATURE(stickyhost),则如下
组合的设置将会有如下效果:
email sent to.... eric eric@mastodon.CS.Berkeley.EDU
LOCAL_RELAY set to mail.CS.Berkeley.EDU (delivered locally)
mail.CS.Berkeley.EDU (no local aliasing) (aliasing done)
MAIL_HUB set to mammoth.CS.Berkeley.EDU mammoth.CS.Berkeley.EDU
mammoth.CS.Berkeley.EDU (aliasing done)
(aliasing done)
Both LOCAL_RELAY and mail.CS.Berkeley.EDU mammoth.CS.Berkeley.EDU
MAIL_HUB set as above (no local aliasing) (aliasing done)
如果未使用FEATURE(stickhost)设置则LOCAL_RELAY和MAIL_HUB作用相同,只是
MAIL_HUB优先处理而已。
如果希望所有发出去的信件均通过一个中央中继节点统一处理的话,也可以定义
SMART_HOST。总结如下:
.LOCAL_RELAY用于那些非完整的名字(如"eric")
.MAIL_HUB用于那些由本地主机名组成的完全名称(如"eric@mastodon.CS.Berkeley.EDU")
.SMART_HOST用于使用其他主机形成的完全名称。
但是我们应该清楚其他的中继(如UUCP_RELAY,BITNET_RELAY,DECNET_RELAY以及
FAX_RELAY)的处理要比SMART_HOST优先级高,因此如果你真的希望一切邮件均通过
一个独立的中央节点时则不应定义其他的中继--更好的方法是找到或建立一个能达到
此功能的最小配置文件。
为了防止不必要的主机名重复,保持邮件系统正常工作,最好在指定主机名时以
点结束。如下:
define(`MAIL_HUB', `host.domain.')
注意结尾处的点 ---^
十、加入新的邮差和规则集(Adding New Mailers or Rulesets)
有时你可能需要加入一个全新的邮差(Mailer)或规则集(ruleset).对此二者的定义
则应分别使用结构MAILER_DEFINITIONS和LOCAL_RULESETS。如下所示:
MAILER_DEFINITIONS
Mmymailers,...
...
LOCAL_RULESETS
Scheck_relay
...
十一、非基于SMTP的配置
主要如于如UUCP-ONLY或UUCP_primarily节点,本部分略。
12. 主机名定义:Who Am I
通常情况下宏$j自动定义为所在主机的完整网域名称(Fully Qualified Domain
Name, FQDN). Sendmail 先调用gethostname然后再调用gethostbyname以得到你的主
机名。比如在有些情况下gethostname只返回主机名的基本部分(如"foo");而gethostbyname
返回FQDN("foo.bar.com"). 但有时(实际上很少如此),gethostbyname不能返回FQDN.
此时你应该用confDOMAIN_NAME来定义你的完整网域名称FQDN.通常其定义格式如下:
Dmbar.com
define(`confDOMAIN_NAME', `$w.$m')dnl
13. 定义邮差表(Mailertable)
如要使用FEATURE(mailertable),你必须创建一个外部的数据库,此数据库中含有
到不同网域的路由信息。 比如文本格式的mailertable文件内容如下:
.my.domain xnet:%1.my.domain
uuhost1.my.domain suucp:uuhost1
.bitnet smtp:relay.bit.net
通常此文件存在/etc/mailertable中,而其实际的邮差数据库则通过如下方式建立:
makemap hash /etc/mailertable.db < /etc/mailertable
其语法很简单。所有左过的(LHS,Left Hand Side)不是以点开头的记录匹配所指定
的完整主机名,而以点开始的则指任何以此域名结尾的地址--即同以通配符*开始一样。
此匹配是按所能匹配的多少来完成的--比如说,在如上示例中虽然先列出了.my.domain
,但"uuhost1.my.domain"却要使用第二个进行匹配,因为后者更清淅。
----未完待续-----
--
[m[1;34m※ 来源:.碧海青天 bbs.dlut.edu.cn.[FROM: helius.dlut.edu.][m
</PRE></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -