⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 network-sendmail_cf.html

📁 学习linux的工具书
💻 HTML
字号:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
   <meta name="Author" content="Edward Fu">
   <meta name="GENERATOR" content="Mozilla/4.05 [zh-CN] (X11; I; Linux 2.1.127 i686) [Netscape]">
   <title>Freesoft Linux FAQ -- 关于sendmail.cf的介绍</title>
</head>
<body>
以下信息主要摘自杜毅编著的《UNIX系统组网技术》,由<a href="http://www.phei.com.cn">电子工业出版社</a>出版。
<br>这本书主要针对SCO Unix,不过对于Unix世界的初学者它值得一读,既然引用了
<br>人家的东西就要为它做的广告:-) 但愿没人找我麻烦。
<br>在整理的过程中,我发现书上所写与Redhat带的sendmail略有不同和缺漏,未
<br>经作者同意自行加上,文字也不是完全照搬。
<br>sendmail.cf的详细信息,请自己去/usr/doc/sendmail/下找op.ps,其中第5章
<br>把下列内容讲得很详细。
<p>关于sendmail.cf的简单解释:
<br>配置文件sendmail.cf中的信息仍旧是以行为单位。如果行首的第一个字符为“#”,则表
<br>示该行为注释,如果第一个字符为空格则表示该行为上一行的延续。此外,行首的第一个
<br>字符均为命令,但是命令同变量或值之间没有间隔。这种格式便于sendmail进行分析,但
<br>令我们很难阅读。下面我们将介绍sendmail.cf配置文件中的命令:
<br>&nbsp;
<br>1 D,定义宏
<br>&nbsp; 命令D定义宏并为其赋值。当宏被定义之后,它就负责提供提供其存储的值给sendmail.cf
<br>文件中其他的命令使用或者直接提供给sendmail使用。宏的名字可以是任何单字符,小写的
<br>用于sendmail内部宏,用户创建的宏只能使用大写字母作为名字。一些sendmail的内部宏也
<br>在sendmail.cf文件里定义。例如下面两行定义了宏D和内部宏n:
<br><font color="#3333FF">DDcs.mit.edu</font>
<br><font color="#3333FF">DnMAILER-DEAMON</font>
<br>则宏D的值为cs.mit.edu,宏n的值为MAILER-DEAMON.要使用宏的值时,必须在宏的名字前面
<br>加上符号"$",以这种形式来引用它的值。例如:
<br><font color="#3333FF">#my official host name</font>
<br><font color="#3333FF">Dj$w.$D</font>
<br>如果宏w的值为主机名moon,此时宏j的值就为moon.cs.mit.edu,这便是本主机的全称名(FQDN).
<br>&nbsp;
<br>2 C与F,定义类
<br>&nbsp; 命令C与F都是用来定义sendmail的类。所谓类,实际上就是由处理方式相同的多个变量组
<br>成的数组。与宏一样,类也使用单字符名字,大小写规则也一样。类可以定义在一行之中,
<br>也可以分多行定义,例如,下面的示范为内部类w赋值为系统的主机名,而系统可以有多个名字:
<br><font color="#3333FF">Cwmoon sun</font>
<br><font color="#3333FF">Cwearth</font>
<br><font color="#3333FF">Cwlocalhost</font>
<br>&nbsp; 命令F是从文件中获取类的值,例如,可以把moon,sun,earth保存在sendmail.cw之中,然后
<br>用F命令便可以实现同上述命令完全相同的结果:
<br><font color="#3333FF">Fw/etc/sendmail.cw</font>
<br>对类的引用与宏的引用完全一样,事实上宏就是一种类。两者的唯一区别在于,宏只能有一个
<br>唯一的值,而类可以有多个值,当然也可以只有一个值。
<br>&nbsp;
<br>3 O,设置选项
<br>&nbsp; 命令O是为sendmail的选项赋值,赋给选项的值可以是字符串、整数或布尔值,所有的选项值
<br>都是直接由sendmail来使用。需要注意的是,这里所说的选项与sendmail使用的命令行参数不
<br>一样。通常情况下,不需要修改这些选项。
<br>&nbsp;
<br>4 T,定义可信任的用户
<br>&nbsp; 命令T用来定义一组用户列表,这组用户可以使用sendmail带-f参数来修改用户发出的邮件地
<br>址。一般情况下,包含root,daemon和uucp。管理员最好不要随意添加其他的用户,否则这种权
<br>限在某些用户手中可能会对系统安全构成威胁。可信任的用户可以在一行或多行中定义,但是被
<br>定义的用户必须是/etc/passwd中的合法用户。缺省是:
<br><font color="#3333FF">Troot</font>
<br><font color="#3333FF">Tdaemon</font>
<br><font color="#3333FF">Tuucp</font>
<br>&nbsp;
<br>5 P,设置优先级
<br>&nbsp; sendmail使用命令P定义不同的优先级来处理进入出局缓冲区的电子邮件。命令P定义的值越
<br>高,则优先级也越高,缺省的优先级为0。负优先级的电子邮件是不产生错误信息的,因此在
<br>批量发送邮件是应该定义较底的优先级。常用的优先级为:
<br><font color="#3333FF">Pfirst-class=0</font>
<br><font color="#3333FF">Pspecial-delivery=100</font>
<br><font color="#3333FF">Plist=30</font>
<br><font color="#3333FF">Pbulk=-60</font>
<br><font color="#3333FF">Pjunk=-100</font>
<br>如果用户在发送邮件是需要指定优先级,则需要在邮件的首部中添加Precedence,例如:
<br><font color="#3333FF">Precedence:bulk</font>
<br>&nbsp;
<br>6 K,Key File Declaration
<br>特殊的映射可以定义成:
<br><font color="#3333FF">Kmapname mapclass arguments</font>
<br>mapname是可重写规则中使用这个映射的句柄,mapclass是映射类型的名字,arguments
<br>的解释依赖与映射类型,通常是包含映射的文件名。
<br>&nbsp;
<br>7 V,Configuration Version Level
<br>&nbsp; 提供与老版本配置文件的兼容性能。
<br>&nbsp;
<br>8 M,定义邮件传输程序
<br>&nbsp; 命令M定义邮件传输程序(mailer)的规格/详细参数,其形式如下:
<br><font color="#3333FF">Mname, {field=value}</font>
<br>sendmail并不是直接发送各种各样的电子邮件,它首先将要发送的邮件分类,然后交给
<br>相应的mailer来发送,它本身只发送基于SMTP/TCP/IP的邮件。其中[IPC]表示使用
<br>sendmail通过smtp来传送邮件。关于IPC mailer,在sendmail的文档里有一段有趣的特殊
<br>解释:当规则集0解析到IPC mailer时会处理一些特殊的过程。比如直接用IP地址发送邮
<br>件可以用[128.32.149.78]的形式,若用[ucbvax.berkeley.edu]将会怎么样呢?它会被作
<br>为字符串传递,用这样的方法用户可以构造一个特殊的邮件地址,使自己的邮件按指定的
<br>路线发送,而通常用户是不关心也不知道自己的邮件的发送路线的。
<br>&nbsp;
<br>9 H,定义邮件的首部格式
<br>&nbsp; 命令H定义sendmail插进电子邮件首部的行的格式。
<br>&nbsp;
<br>10 R,定义重写规则
<br>&nbsp; 重写规则是sendmail配置文件的核心内容,每一重写规则由命令R定义,其形式如下:
<br><font color="#3333FF">Rpattern&nbsp;&nbsp;&nbsp; transformation&nbsp;&nbsp;&nbsp;
comment</font>
<br>命令R中的字段由制表符进行分隔,系统处理时忽略注释字段(comment),模式字段(pattern)
<br>与改写字段(transformation)为该命令的核心。
<br>重写规则将输入地址与模式进行匹配,如果匹配,则将该地址用规则中改写字段的规则重写
<br>为新的格式。每一规则可以多次处理同一地址,这是因为地址在重写之后,仍要再次同该模
<br>式进行匹配,如果仍旧匹配则再次改写,直到不再匹配为止(使用"$:"可以避免无限循环)。
<br>在Linux中格式的表达应该是:
<br><font color="#3333FF">Rlhs rhs comment</font>
<br>lhs--left hand side&nbsp; rhs--right hand side
<br>&nbsp;
<br>11 S,设置重写规则<font color="#CC0000">集</font>
<br>&nbsp; 规则集是一组可以用数字来引用的相关重写规则。命令S是规则集的开始并赋予它一个数字
<br>以便由邮件传输程序来调用。规则集可以被看作用来处理电子邮件地址的子程序或函数。具有
<br>特殊功能并可由sendmail直接调用的规则集有5个:
<br>&nbsp; 规则集3:为最大最复杂的规则集,也是用于地址的第一个规则集。它将地址转化为正规形式
<br>如:user@host.domain。
<br>&nbsp; 规则集0:应用于传输邮件的地址。必须在规则集3之后使用,并仅用于实际邮件传输中接收
<br>者的地址。它可以将地址解析成(mailer,host,user)的形式,由邮件传输者、接收方主机和接
<br>收用户的名字组成。
<br>&nbsp; 规则集1:应用于消息中所有发送者地址。
<br>&nbsp; 规则集2:应用于消息中所有接收者地址。
<br>&nbsp; 规则集4:应用于消息中所有地址并将内部地址格式转化为外部地址格式。
<br>&nbsp; 下图说明了消息和地址通过这些规则集的流程(原书有误):
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+---+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-->+ 0 +---> resolved address
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/&nbsp;&nbsp; +---+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+---+&nbsp;&nbsp; +---+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -->+ 1 +-->+
S +---
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;
+---+&nbsp;&nbsp; +---+&nbsp;&nbsp; \
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+---+&nbsp; /&nbsp; +---+&nbsp;&nbsp;&nbsp; /&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
\&nbsp;&nbsp;&nbsp; +---+
<br>&nbsp;&nbsp;&nbsp;&nbsp; addr --->+ 3 +---->+ D +---&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
--->| 4 +---> msg
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+---+&nbsp;&nbsp;&nbsp;&nbsp; +---+&nbsp;&nbsp;&nbsp; \&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/&nbsp;&nbsp;&nbsp; +---+
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
\&nbsp;&nbsp; +---+&nbsp;&nbsp; +---+&nbsp;&nbsp; /
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-->+ 2 +-->+ R +---
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+---+&nbsp;&nbsp; +---+
<br>&nbsp;&nbsp;&nbsp; 图中,D--sender domain addition
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S--mailer-specific
sender rewriting
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R--mailer-specific
recipient rewriting
<br>&nbsp;
<br>&nbsp;
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -