22.5. 构建和调整 Sendmail

现在我们的宏配置文件sendmail.mc已创建,我们可以使用以下命令从这些语句构建 sendmail 配置文件sendmail.cf
           [root@deep] /# cd /var/tmp/sendmail-version/cf/cf/
           [root@deep ]/cf# m4 ../m4/cf.m4 sendmail.mc > /etc/mail/sendmail.cf
           

Note: 这里,../m4/cf.m4告诉 m4 程序在哪里查找其默认配置文件信息。

22.5.1. Thenull.mc文件

由于我们的本地客户端机器永远不会直接从外部世界接收邮件,而是通过邮件中心服务器中继,发送所有邮件,我们将创建一个名为null.mc的特殊文件,该文件在稍后处理后,将创建一个定制的sendmail.cf配置文件,以响应我们的邻居或本地服务器客户端机器的这种特殊设置。 这个 m4 宏文件创建和配置起来很简单,因为它不需要很多功能,就像中央邮件中心服务器的配置文件-sendmail.mc,一样。

Caution

这个null.mc文件仅适用于本地或邻居客户端和服务器机器

  1. 创建null.mc文件,touch/var/tmp/sendmail-version/cf/cf/null.mc并添加以下行
                 OSTYPE(`linux')dnl                        (1)
               DOMAIN(`generic')dnl                        (2)
               FEATURE(`nullclient',`mail.openna.com')dnl  (3)
               undefine(`ALIAS_FILE')dnl                   (4)
               

    (1)
    此配置选项指定 Sendmail 将运行的默认操作系统,在我们的例子中是linux系统。 此项目是mc文件所需的最小信息之一。
    (2)
    此配置选项将指定并描述适合您环境的特定域。
    (3)
    此 m4 宏设置您的客户端机器永远不会直接接收邮件,而是将邮件发送到中央邮件中心,并通过该服务器中继所有邮件,而不是直接发送。 此功能创建了一个精简的配置文件,其中仅包含通过基于本地 SMTP 的网络将所有邮件转发到邮件中心的支持。 参数`mail.openna.com'包含在此功能中是该邮件中心的规范名称。 您当然应该更改此规范名称以反映您的邮件中心服务器,例如FEATURE(`nullclient',` my.mailhub.com').
    (4)
    此配置选项可防止 Sendmail 的 nullclient 版本尝试访问/etc/mail/aliases/etc/mail/aliases.db文件。 在.mc文件中添加此行后,您无需在所有内部邻居客户端 Sendmail 机器上都拥有一个aliases文件。 别名文件仅在中央邮件中心服务器上需要,用于网络上的所有服务器和客户端别名。

    Tip: 我们建议在这种配置下,不应定义任何邮件程序,并且不应进行任何别名或转发。

  2. 现在我们的宏配置文件null.mc已创建,我们可以使用以下命令在我们所有的邻居服务器和客户端机器上从这些语句构建 Sendmail 配置文件sendmail.cf
               [root@deep] /# cd /var/tmp/sendmail-version/cf/cf/
               [root@deep ]/cf# m4 ../m4/cf.m4 null.mc > /etc/mail/sendmail.cf
               

  3. 邮件永远不应再次传递到您的本地计算机。 由于没有传入邮件连接,您不再需要在您的邻居或本地服务器、客户端机器上运行 Sendmail 守护程序。 要停止在您的邻居或本地服务器或客户端机器上运行 Sendmail 守护程序,请编辑或创建/etc/sysconfig/sendmail文件并更改/添加读取的行
               DAEMON=yes
               To read:
               DAEMON=no
               And:
               QUEUE=1h
               

    Note: QUEUE=1h/etc/sysconfig/sendmail文件下的会导致 Sendmail 每 1 小时处理一次队列。 我们保留该行是因为 Sendmail 仍然需要定期处理队列,以防邮件中心发生故障。

  4. 从您的系统中删除以下文件,请使用以下命令
               [root@client /]# rm  -f  /usr/bin/newaliases
               [root@client /]# rm  -f  /usr/man/man1/newaliases.1
               [root@client /]# rm  -f  /usr/man/man5/aliases.5
               

    Note: 本地计算机永远不会使用别名、访问或其他映射数据库。 由于所有映射文件数据库都位于中央邮件中心服务器上并用于网络上的所有本地计算机,因此我们可以安全地从我们所有的本地计算机中删除以下命令和手册页。

    • /usr/bin/newaliases

    • /usr/man/man1/newaliases.1

    • /usr/man/man5/aliases.5

  5. 从您的整个本地 Sendmail 服务器或客户端中删除不必要的 Procmail 程序。 由于本地机器将所有内部和传出邮件发送到邮件中心服务器以供将来传递,因此我们不需要使用像 Procmail 这样复杂的本地传递代理程序来完成这项工作。 相反,我们可以使用默认的/bin/mail程序。 要从您的系统中删除 Procmail,请使用以下命令
               [root@client ]# rpm -e procmail