sendmail 的配置,在 FreeBSD 中已经配置好为您的站点直接的连接 Internet。 如果站点希望他们的邮件通过 UUCP 交换,则必须安装其它的 sendmail 配置文件。
手工的配置 /etc/mail/sendmail.cf 是一个高级主题。sendmail 8 版本通过 m4(1) 预处理生成一个配置文件,实际上这个配置发生在一个比较高的抽象层。 m4(1) 配置文件可以在 /usr/src/usr.sbin/sendmail/cf 下找到。
如果您没有在系统上安装全部源码,则可以从单独的压缩文件中提取 sendmail 配置文件。假定您的 FreeBSD 源码 CDROM 已经被 mount:
# cd /cdrom/src # cat scontrib.?? | tar xzf - -C /usr/src/contrib/sendmail
这个提取只有几百 K 字节。cf 目录中的 README 文件能够为您提供一个到 m4(1) 配置的基本的介绍。
最好的支持 UUCP 传送的方法是使用 mailertable 的特点。建立一个资料库让 sendmail 可以使用它自己的路由决策。
首先,您必须建立您自己的 .mc 文件。 /usr/src/usr.sbin/sendmail/cf/cf 目录包含一些例子。 假定您已经命名自己的文件叫做 foo.mc, 您要做的只是把它转换成一个有效的 sendmail.cf:
# cd /usr/src/usr.sbin/sendmail/cf/cf # make foo.cf # cp foo.cf /etc/mail/sendmail.cf
一个典型的 .mc 文件看起来可能象这样:
VERSIONID(`Your version number') OSTYPE(bsd4.4) FEATURE(accept_unresolvable_domains) FEATURE(nocanonify) FEATURE(mailertable, `hash -o /etc/mail/mailertable') define(`UUCP_RELAY', your.uucp.relay) define(`UUCP_MAX_SIZE', 200000) define(`confDONT_PROBE_INTERFACES') MAILER(local) MAILER(smtp) MAILER(uucp) Cw your.alias.host.name Cw youruucpnodename.UUCP
accept_unresolvable_domains、 nocanonify 和 confDONT_PROBE_INTERFACES 特性将避免在传送邮件时使用DNS的机会。UUCP_RELAY 项是支持 UUCP 传送所必须的。简单的放入一个 Internet 上可以处理 UUCP 虚拟域地址的主机名。通常,您在这里填入您 ISP 邮件的回复处。
一旦您做完这些,您还需要这个 /etc/mail/mailertable 文件。 如果您只有一个用来传递所有邮件的对外通道的话, 以下的文件就足够了:
# # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable . uucp-dom:your.uucp.relay
一个更复杂点的例子象这样:
# # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom:
头三行处理域地址邮件,不应该被传送出默认的路由, 而由某些 UUCP 邻居取代的特殊情况,这是为了走“捷径”。 下一行处理本地网的邮件让它可以使用 SMTP 来传送。 最后,UUCP 邻居提起。UUCP 虚拟域的记载, 允许一个 uucp-neighbor !recipient 推翻默认规则。最后一行则以一个单独的句点最为结束, 以 UUCP 传送到提供您所有的邮件网关的 UUCP 邻居。 所有在 uucp-dom: 关键字里的节点名称必须是有效的 UUCP 邻居,您可以用 uuname 去确认。
提醒您这个文件在使用前必须被转换成 DBM 数据库文件。最好在 mailertable 最上面用注解写出命令行来完成这个工作。 当您每次更换您的 mailertable 后您总是需要执行这个命令。
最后提示:如果您不确定某个特定的路径可用, 记得把 -bt 选项加到 sendmail。这会将 sendmail 启动在 地址检测模式。只要按下 3,0,接着输入您希望测试的邮件路径位置。 最后一行告诉您使用邮件代理程序, 代理程序会通知目的主机以及 (可能转换) 地址。 要离开此模式请按 Ctrl+D。
% sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,0 [email protected] canonify input: foo @ example . com ... parse returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . > > ^D