Sendmail第三章 Sendmail扮演的角色3. sendmail扮演的角色 sendmail程序扮演着多种不同的角色,最主要的角色就是传递电子邮件。它监听来自网络的电子邮件,传送电子邮件到另一台机器,通过本地传送,将本地信件传给本地程序。它能够在邮件中附加上文件,也能够使用管道将邮件发给其它程序。它能够维护一个邮件队列,有序地将邮件发送出去,还可以理解接收者的邮件别名,将其发送到真正的目标用户当中去。 3.1在文件系统中的角色 sendmail程序的角色(位置)在本地文件系统中,就象一个倒置的树,如图3-1。当sendmail运行时,首先读取/etc/sendmail.cf配置文件。在这个配置文件中,能够指出sendmail所需要的其它文件与目录的位置。
图3-1 sendmail.cf的层次结构 安全起见,在配置文件/etc/sendmail.cf中指定的文件、目录名一般都使用绝对路径,例如:使用/var/spool/mqueue,而不使用mqueue。在我们讲解这些文件之前,首先运行如下命令以收集一个文件列表:
注:如果你使用的是V8.7以上版本的sendmail,则你需要查找的应该改为”/[^0-9].*/”. 这个命令将会出现类似如下的结果:
请注意,有些行是以字母O开始,有些行是以字母M开始,有些行是以#开始的。以字母O开始的行是配置选项。字母O后面紧跟着选项的名字。选项的值指出了sendmail使用的文件。例如,AliasFile定义了本地的aliases数据库文件。以M开始的行则定义了分发代理。以#开始的行就是注释。 首先我们考察以O开始的选项行。然后再分析以M开始的分发代理选项。 3.1.1 aliases文件 aliasing就是将接收者的名字转换另一个名字。一种情况下是将一些通用名字(如root、webmaster)转换成真正的用户名。另一种情况下是将一个名字转换成多个名字的列表(如使用邮件列表)。 Aliases文件在sendmail.cf文件中的AliasFile选项中指定,例如:
以下是一个aliases文件的简要实例:
你的aliases文件可能更长、更复杂的,不过,以上这个示例也显示了aliases所有可能的构成。 以#开始的行,是注释行。空行被忽略不计。第一行就是一个注释行,它指出了2、3两行是每一个aliases文件被必须强制拥有的。所有的别名格式都是一样的,一个名字(别名)和一个要改为成的名字(原名)。别名在“:”号的左边,原名在“:”号的右边。名字是不区分大小写。例如:POSTMASTER,Postmaster以及postmaster都是相同的。 如果信封上列出的接收者名字是本地用户的话,sendmail程序就会查找aliases文件。如果sendmail发现接收者名字如果与aliases文件中的“:”号左边的名字相匹配,就将接收者名字替换为“:”号右边的名字。例如:发给本地的postmaster的信,会被转变成为发给root的信。 在一个名字被替换后,会使用这个被替换后的名字继续查找,直到没有匹配的名字为止。如MAILER-DAEMON首先被转变为postmatser,然后postmaster又被改被为root。由于没有一个以root开始的别名项,所以转换过程到此结束,信件最后被传送到root的信箱中去。 任何一个aliases文件必须有一个将postmaster转变成实际用户的别名项。因为当邮件出现问题时,总是会生成一个错误报告的信,发给postmaster。所以最好将这样的信发给邮件的系统管理员。 当电子邮件被退回时,将会发给MAILER-DAEMON。所以这个别名是必须的。没有这个设置的话,退回的信将会在发件人与收件人之间不断来回传送。 Aliases文件中有五种类型:
首先我们看一下第一行,这一行的格式与我们前面的例子相似,这一句让sendmail程序将发给John_Adams的信都给真实用户adamj。 xpres那一行则象大家演示了如何将一个名字扩展到一组名字,发给xpres的信件将扩展为ford、carter、reagan、bush,并使用这些名字进行aliases处理,直到无匹配为止。然后将信件的副本分发给每一个。 而oldlist这行,则象大家演示了如何从一个文件中读取一组名字,本例中就是让sendmail将发给oldlist的信息扩展为在/usr/local/oldguys文件里的用户列表。请记住它的格式,在文件绝对路径名前需加上“:include:”。 上一篇:Sendmail第二章 获取Sendmail v8 下一篇:Sendmail第四章:如何运行sendmail 更多相关文章
|
推荐文章
精彩文章
|