首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Unix/Linux 系统自动化管理 邮件系统篇(2)

Unix/Linux 系统自动化管理 邮件系统篇(2)

发送邮件代理配置及自动化发送Linux 的 sendmail 配置配置文件
在 Linux 系统中,Sendmail 包括如下配置文件:
  • /etc/sendmail.cf
  • /etc/mail/access
  • /etc/mail/aliases
  • /etc/mail/local-host-names
  • /etc/mail/mailertable
  • /etc/mail/virtusertable
  • /etc/mail/domaintable
  • ~/.forward
我们将会 在下面的章节中详细介绍这些配置文件。
/etc/sendmail.cf
/etc/sendmail.cf 是 sendmail 的主配置文件。该文件存储了正在运行的 mailer 程序的类型信息,定义了重写邮件地址的规则和 sendmail 命令的操作环境。因为 sendmail.cf 的语法比较复杂,我们一般不建议手动修改该配置文件。安装了 sendmail 的 UNIX/Linux 系统都会带有 sendmail.cf,而且该配置文件在大多数情况下都不需要修改就可以使用。如果用户确实需要修改 sendmail.cf 配置文件 , 一般建议用户基于 sendmail.mc 宏文件,利用 m4 程序来生成新的 sendmail.cf 文件。
在 RedHat Linux 系统中,sendmail.mc 宏文件位于 /etc/mail/ 目录。
而 SuSE Linux 系统并没有 sendmail.mc 文件,相应的,它提供了 /etc/mail/linux.mc ( 或者 /etc/mail/linux.nullclient.mc) 替代 sendmail.mc。/etc/mail/linux.mc 是 SuSEconfig 使用 /etc/rc.config 和 /etc/rc.config.d/sendmail.rc.config (SuSE <= 7.3) 或者 /etc/sysconfig/sendmail (SuSE >= 8.0) 的参数而生成的宏文件。SuSEconfig 执行 /sbin/conf.d/SuSEconfig.sendmail 脚本来构建 .mc 文件,并执行 m4 来生成 sendmail.cf 配置文件。用户可以依照清单 1 所示的 SuSEconfig.sendmail 命令来生成配置文件。
清单 1. 使用 SuSEconfig.sendmail 命令生成配置文件
1
/ sbin/conf.d/SuSEconfig.sendmail -m4 > sendmail.mc




在 sendmail.mc 配置文件中经常出现如下的 m4 命令:
define:
用于定义配置文件中变量的值
divert:
用于定向 m4 进程的输出。
divert 被设置为 -1 时 , 取消输出。如果 divert(-1) 在一个文本块的前面出现,这段文本将不会再 sendmail.cf 中出现 . divert 被设置为 0 时来定向数据流的输出,如 sendmail.cf,
VERSIONID:
配置文件定义版本控制信息。
dnl:
注释掉后面的所有字符。
dnl 出现在行尾,表示将清除掉不想要的空白行;dnl 出现在行首,表示这一行将被当成注释。
DOMAIN:
选择传输邮件的域。
FEATURE:
识别配置文件中一个特性 (Feature)。
MAILER:
识别包含在 sendmail.cf 一套邮件传输方法。
OSTYPE:
定义宏所使用的操作系统,它允许 m4 程序增加同相关操作系统相关的文件。
undefine:
清除配置文件中的变量值。
需要注意的是,m4 宏处理器生成的 sendmail.cf 文件必须放在 /etc/ 目录 , 而非 /etc/mail。具体的操作如清单 2 所示。
清单 2.m4 命令生成配置文件 sendmail.cf
1
2
cp /etc/sendmail.cf  /etc/sendmail.cf.bak
m4  sendmail.mc > sendmail.cf




在用户修改完成 sendmail.cf 配置文件以后,最后一步操作是重新启动 sendmail 服务,具体的操作如清单 3 所示:
清单 3. 重启 sendmail 服务
1
service sendmail restart




/etc/mail/access 和 access.db
access 数据库是由 sendmail V8.9 版本引入的特性, 并在 V8.10 重得到很好的发展。它提供了一个单一集中管理的访问规则数据库;它可以基于发信者的姓名、地址或者 IP 来判断是否接受 (OK)、转发 (RELAY)、拒绝 (REJECT) 或者取消 (DISCARD)。sendmail 会在接收邮件时进行规则判断,默认情况下只接受本机发送的邮件。
对本地设置来说,/etc/mail/access 和 access.db 并不是必需的;只有在建立中央邮件集中服务器来处理所有邮件的时候才需要这两个文件。
access 数据库的配置主要有三个步骤,具体操作如下所示。
  • 修改 /etc/mail/access 文件;修改后的内容如清单 4 所示。                        清单 4./etc/mail/access 文件内容
    1
    2
    3
    4
    localhost.localdomain   RELAY
    localhostRELAY
    127.0.0.1RELAY
    192.168.1RELAY




  • 利用 /etc/mail/access 创建数据库映射文件 access.db,命令如清单 5 所示。
    清单 5. 生成数据库映射文件 access.db
    1
    makemap hash /etc/mail/access.db < /etc/mail/access




  • 重启 sendmail, 读取 access.db,具体的命令如清单 3 所示。                                       
    1
    service sendmail restart




/etc/mail/aliases 和 aliases.db
         aliases 是 sendmail 邮件系统的别名数据库。它可以定义邮递列表,在机器之间转发邮件,或者允许用多个名字指定一个用户。因为 Aliases 别名处理的规则是递归的,所以一个别名指向的目的地也可以是别名。对于每个信封,sendmail 都会在别名文件中查找本地用户的收件人名称。由于 Sendmail 的可能要在 aliases 文件中搜索数以千计的收件人名称,所以一个以 DB 数据库格式存储的 aliases 文件副本被创建,并用来提高查询的速度。
同样,这两个配置文件也不是必需的。如果 sendmail 是使用中央服务器的邮件处理中心处理所有邮件的话,安装在邻居服务器或客户机的 aliases 和 aliases.db 文件就不需要了。 aliases 数据库的配置主要有三个步骤,如下所示。
1.修改 /etc/mail/aliases。修改后的内容如清单 6 所示。
清单 6. 修改后的 aliases 文件
1
2
3
# Basic system aliases that MUST be present.
postmaster:     root
mailer-daemon:  postmaster




1
2
# amavis
virusalert:     root




2.根据 /etc/mail/ aliases 来创建数据库映射文件 aliases.db,该命令如清单 7 所示。
清单 7.         创建数据库映射文件 aliases.db
1
makemap hash /etc/mail/aliases.db < /etc/mail/aliases




3.重启 sendmail,读取 aliases.db,具体的命令如清单 3 所示。
1
service sendmail restart




其他配置文件
除了上文中介绍的配置文件以外,sendmail 还使用了其他的一些配置文件,本节将逐一介绍这些配置文件。
/etc/mail/local-host-names
设置服务器提供服务的域名,即本地主机名的主机名列表。该文件被修改后,sendmail 必须重新启动来更新设置;
/etc/mail/virtusertable 和 virtusertable.db
virtusertable 数据库用于映射虚拟域到新的地址。这个特性可以使网络上的虚拟域邮件被投递到本地系统、远程系统或者单一用户地址。/etc/mail/virtusertable 被修改以后,我们可以使用 makemap 命令来生成 /etc/mail/virtusertable.db。 同样,该文件被修改后,sendmail 必须重新启动来更新设置。
/etc/mail/domaintable 和 domaintable.db
domaintable 数据库用于映射旧域名到新域名。这个特性使得网络上多个域名可以由旧域名重写到新域名中。/etc/mail/domaintable 文件被修改后,我们可以利用 makemap 命令来生成 /etc/mail/domaintable.db。同样,该文件被修改后,sendmail 必须重新启动来更新设置。
/etc/mail/mailertable 和 mailertable.db
mailertable 数据库通过一种特殊的邮寄程序,把寻址到特定主机(或域)的邮件重定向到替代的目的地。这个特性使得网络上的邮件可以通过特殊的投递代理被投递到一个新的本地域名或远程域名。/etc/mail/mailertable 被修改后,我们可以利用 makemap 命令生成 /etc/mail/mailertable.db。同样,该文件被修改后,sendmail 必须重新启动来更新设置。
~/.forward
普通用户可以通过主目录下的 .forward 文件来实现邮件的别名和转发等功能。
验证 sendmail 服务
我们可以通过 telnet 程序来访问 localhost 的 25 端口,从而可以验证 sendmail 服务是否正常启动。如果能够登陆成功,则说明 sendmail 服务已经成功启动。具体的验证过程如清单 8 所示。
清单 8. 验证 sendmail 服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
linux:~ # telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 linux ESMTP Sendmail 8.13.6/8.13.6/SuSE Linux 0.8; Sat, 12 Sep 2009 14:37:24 -0700
ehlo localhost
250-linux Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP

返回列表