Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

Sendmail第三章 Sendmail扮演的角色

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

3. sendmail扮演的角色

  sendmail程序扮演着多种不同的角色,最主要的角色就是传递电子邮件。它监听来自网络的电子邮件,传送电子邮件到另一台机器,通过本地传送,将本地信件传给本地程序。它能够在邮件中附加上文件,也能够使用管道将邮件发给其它程序。它能够维护一个邮件队列,有序地将邮件发送出去,还可以理解接收者的邮件别名,将其发送到真正的目标用户当中去。

3.1在文件系统中的角色

  sendmail程序的角色(位置)在本地文件系统中,就象一个倒置的树,如图3-1。当sendmail运行时,首先读取/etc/sendmail.cf配置文件。在这个配置文件中,能够指出sendmail所需要的其它文件与目录的位置。

sendmail-3-1

  图3-1 sendmail.cf的层次结构

  安全起见,在配置文件/etc/sendmail.cf中指定的文件、目录名一般都使用绝对路径,例如:使用/var/spool/mqueue,而不使用mqueue。在我们讲解这些文件之前,首先运行如下命令以收集一个文件列表:

% grep = /  /etc/sendmail.cf 

  注:如果你使用的是V8.7以上版本的sendmail,则你需要查找的应该改为”/[^0-9].*/”.

  这个命令将会出现类似如下的结果:


O AliasFile=/etc/aliases
#O ErrorHeader=/etc/sendmail.oE
O HelpFile=/usr/lib/sendmail.hf
O QueueDirectory=/var/spool/mqueue
O StatusFile=/etc/sendmail.st
#O UserDatabaseSpec=/etc/userdb
#O ServiceSwitchFile=/etc/service.switch
#O HostsFile=/etc/hosts
#O SafeFileEnvironment=/arch
Mlocal,P=/bin/mail, F=lsDFMAw5:/|@rmn, S=10/30, R=20/40,
Mprog,  P=/bin/sh, F=lsDFMoeu, S=10/30, R=20/40, D=$z:/,

  请注意,有些行是以字母O开始,有些行是以字母M开始,有些行是以#开始的。以字母O开始的行是配置选项。字母O后面紧跟着选项的名字。选项的值指出了sendmail使用的文件。例如,AliasFile定义了本地的aliases数据库文件。以M开始的行则定义了分发代理。以#开始的行就是注释。

  首先我们考察以O开始的选项行。然后再分析以M开始的分发代理选项。

3.1.1 aliases文件

  aliasing就是将接收者的名字转换另一个名字。一种情况下是将一些通用名字(如root、webmaster)转换成真正的用户名。另一种情况下是将一个名字转换成多个名字的列表(如使用邮件列表)。

  Aliases文件在sendmail.cf文件中的AliasFile选项中指定,例如:

O AliasFile=/etc/aliases

  以下是一个aliases文件的简要实例:


# Mandatory aliases.
postmaster: root
MAILER-DAEMON: postmaster
# The five forms of aliases
  John_Adams:  adamj
  xpres: ford,carter,bush
  oldlist: :include: /usr/local/oldguys
  nobody: /dev/null
ftphelp:  |/usr/local/bin/sendhelp

  你的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文件中有五种类型:


John_Adams:  adamj
xpres: ford,carter,reagan,bush
oldlist: :include: /usr/local/oldguys
nobody: /dev/null
ftphelp: |/usr/local/bin/sendhelp

  首先我们看一下第一行,这一行的格式与我们前面的例子相似,这一句让sendmail程序将发给John_Adams的信都给真实用户adamj。

  xpres那一行则象大家演示了如何将一个名字扩展到一组名字,发给xpres的信件将扩展为ford、carter、reagan、bush,并使用这些名字进行aliases处理,直到无匹配为止。然后将信件的副本分发给每一个。

  而oldlist这行,则象大家演示了如何从一个文件中读取一组名字,本例中就是让sendmail将发给oldlist的信息扩展为在/usr/local/oldguys文件里的用户列表。请记住它的格式,在文件绝对路径名前需加上“:include:”。

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:Sendmail第二章 获取Sendmail v8   下一篇:Sendmail第四章:如何运行sendmail

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号