上面简要地列出操作符的类型,现在对它们进行详细介绍。
· D操作符
宏类似于shell变量,当为一个宏定义了值后,可以在配置文件的后面对它进行引用,宏将会被它的值所取代。例如,一个配置文件可能有多个行包含假设的邮件中心mailer.somedomain.gov,为了避免一次次地输入这一名字,可以像下面这样为它定义一个宏R(代表中继邮件发送器): DRmailer.somedomain.gov
当sendmail在sendmail.cf中遇到$ R时,sendmail将把它替换为字符串mailer.somedomain.gov。
宏的名字通常是一个单字符。sendmail定义有许多宏,这些宏不应该被再次定义,否则将会出现一些问题。sendmail使用小写字母来定义自己的宏;大写字母可以被自由地使用。
· C和F操作符
类与宏类似,但是在改写规则中用于不同目的。与宏一样,类的名字也是一个单字符,小写字母由sendmail使用,大写字母用于由用户定义的类。一个类包含有一个或多个单词。例如,可以像下面这样定义一个包含本地域中所有主机的类H:
CH host1 host2 host3
为了方便起见,大型的类可以续行定义。下面对类H的定义与前面定义的结果相同:
CH host1
CH host2
CH host3
另外,还可以通过从某个文件中读取它的单词来定义一个类:
CF/usr/usr/localhosts
如果/usr/localhosts文件包含host1、host2和host3,并且是每行包含一个,那么这一定义与前面的两个定义等价。
使用宏和类最主要的优点是它们可以集中配置文件中信息。在上面的例子中,如果决定把邮件中心由mailer.somedomain.gov改变为mail1.somedomain.gov,只需要改变宏$ R的定义就可以了,配置文件仅需作很少的改动。否则名字mailer.somedomain.gov散布在文件的各处,那么可能会在某些位置忘记对它们进行修改。另外,集中的重要信息,可以在单独的一个位置详细地对它进行注释。由于配置文件一般比较难于理解,因此如果很长一段时间之后对自己所做的某种修改感到迷惑时,在配置文件中添加详细的注释是很有帮助的。
· H操作符
一般情况下,不需要对V8 sendmail的配置文件所提供的邮件头进行修改,因为它们已经遵从了公认的标准。下面是一些邮件头的示例:
H? D? Date:$ a
H? F? Resent-From:$ q
H? F? From:$ q
H? x? Full-Nnme:$ x
可以看出,在邮件头的定义中可以使用宏。当插入到某封信中时,这些宏将被扩充,由它相应的值取代。例如,在上面的例子中,用于邮件头定义Full-Name:中的宏$ x将被取代为寄件人的全名。在邮件头的定义中,可选的?mailerflag?结构用来通知sendmail只有在被选择的邮件发送器具有这一邮件发送器标志时才插入邮件头。
假如在用户的本地邮件发送器的定义中具有一个标志Q,并且sendmail选择了这一邮件发送器来投递某一信件,如果配置文件包含一个像下面这样的邮件头定义,那么sendmail将把这一邮件头插入到通过本地邮件发送器被传递的信件中,并利用相应的值来取代宏$ F:
H? Q? It-is-a-wonderful-day:$ F
为什么要使用?mailerflag这一特性呢?这是因为不同的协议可能会需要不同的邮件头。另外,由于它们也需要不同的邮件发送器,因此可以通过在邮件发送器定义中定义相应的邮件发送器标志并使用邮件头定义中的?mailerflag?结构,来通知sendmail是否要插入相应的邮件头。
·0操作符
sendmail具有许多选项,这些选项用来改变sendmail的操作或者用来通知所使用的文件的位置。大部分选项既可以通过命令行提供,也可以在配置文件中给出。例如,用户既可以在命令行也可以在配置文件中指定别名文件的位置;要是在命令行上指定别名文件,可以使用-o选项:
$ sendmail-oA/etc/aliases[other arguments...]
要是在配置文件指定别名文件,可在配置文件中添加如下一行代码:
OA/etc/aliases
这两种方法是等价的。但由于像别名文件的位置这种选项很少改变,因此人们通常在配置文件sendmail.cf中设置它们。V8 sendmail的所有选项在SIOG中有详细的说明。
·P操作符
用户可以在邮件中包含用来指示邮件的相对重要性的标题,sendmail可以根据这些标题来确定信件的优先级。假设为V8 sendmail提供的优先级如下:
Pemergent=100
Pimportant=0
Pnormal=-30
如果用户在他们的信息中含有标题Drecedence:normal,那么sendmail为这些邮件提供的优先级要低于利用标题Precedence:importangt的邮件。
·V操作符
随着V8 sendmail的发展,许多Linux爱好者不断地为它添加新的特性。 V操作符能够使V8 sendmail知道在配置文件中它可以找到哪些特性。老版本的sendmail不能够识别这一命令。在SIOG中,对配置文件的版本级别有详细的说明。