你可能会发现主机实际上是在另外一个域里面 ; 例如,如果你是在 foo.bar.edu里,而你要找一台叫 mumble的主机,它在bar.edu域里, 你就必须用完整的域名mumble.bar.edu, 而不是用mumble.
传统上,这在BSD BIND resolvers中是可行的. 然而目前随FreeBSD附带的 BIND 已不为同一域外提供缩写服务 . 所以,这个不完整的主机名mumble必须以 mumble.foo.bar.edu这种形式才能被找到, 或者将在根域中搜索它.
这跟以前的处理是不同的, 以前版本将会继续寻找 mumble.bar.edu, 和mumble.edu. 如果你想要了解这种方式是否是好,或者它有什么安全方面的漏洞,请参阅RFC 1535文档.
如果你想要一个好的工作环境, 你可以使用如下行:
search foo.bar.edu bar.edu替换先前旧的版本:
domain foo.bar.edu把这行放在你的/etc/resolv.conf文件中. 然而,请一定要确定这样的搜寻顺序不会造成RFC 1535里提到的``boundary between local and public administration'', 问题.
下面是 sendmail FAQ中的回答:
我得到了如下的信息: 553 MX list for domain.net points back to relay.domain.net 554 <[email protected]>... Local configuration error 我如何解决这个问题? 你已经通过MX记录指定把发送给特定的域(例如,domain.net)的邮件 被转寄到指定的主机(在这个例子中,relay.domain.net),而这台机 器并不认为它自己是domain.net。请把domain.net添加到 /etc/mail/local-host-names文件中[在8.10版之前是 /etc/sendmail.cw] (如果你使用FEATURE(use_cw_file)的话)或者在/etc/mail/sendmail.cf 中添加``Cw domain.net''。
sendmail 的 FAQ 可以在 http://www.sendmail.org/faq/ 找到,如果你想要对你的邮件做任何的 ``调整'' 则推荐首先看一看它。
你想要把局域网上的FreeBSD主机连接到互连网上,而这台 FreeBSD主机将会成为这个局域网的邮件网关,这个拨号连接不必一直保持在联接状态.
最少有两种方法可以满足你的要求. 一种方法就是使用UUCP.
另一种方法是找到一个专职的服务器来为你的域提供副MX主机服务 . 例如, 如果你公司的域名是 example.com你的互连网服务提供者把 example.net作为你域的副MX服务 :
example.com. MX 10 example.com. MX 20 example.net.
只有一台主机被指定当做你的最终收信主机 (在example.com主机的/etc/mail/sendmail.cf文件中添加Cw example.com ).
当sendmail试图分发邮件的时候,它会尝试通过modem连接到你(example.com). 因为你并不在线,所以总是会得到一个超时的错误. sendmail将会把邮件发送到副 MX主机, 也就是说. 你的互连网服务提供者(example.net). 副MX主机将周期性的尝试连接并发送邮件到你的主机(example.com).
你也许想要使用下面的这个登陆脚本:
#!/bin/sh # Put me in /usr/local/bin/pppmyisp ( sleep 60 ; /usr/sbin/sendmail -q ) & /usr/sbin/ppp -direct pppmyisp
如果你想要为一个用户建立一个分开登陆的脚本, 你可以使用sendmail -qRexample.com 替换上面的脚本. 这样将使所有的邮件按照你的example.com队列立即被处理.
更深入的方法可以参考下面这段:
这段信息是从FreeBSD Internet service provider's 邮件列表拿来的.
> 我们为用户提供副MX主机服务. 用户每天都会上线好几次 > 并且自动把信件取回主MX主机 > (当有他们的邮件时我们并没有通知他们 > ). 我们的mailqueue程序每30分钟清一次邮件队列.那段时间他们 > 就必须上线30分钟以确保他们的信件送达他们的主MX主机. > > > 有任何指令可以用sendmail寄出所有邮件么? > 普通用户在我们的机器上当然没有root权限. 在sendmail.cf的``privacy flags''部分, 有这样的设定 Opgoaway,restrictqrun 移除restrictqrun可以让非root用户启动队列处理的程序. 你可能也要重新安排你的MX设定. 我们是用户的MX主机 ,而且我们还设定了这个: # If we are the best MX for a host, try directly instead of generating # local config error. OwTrue 这样的话远程机器会直接把信送给你,而不会尝试连接你的用户的机器 . 然后你就可以把邮件发送到你的用户. 这个设定只对 ``主机''有效,所以你必须要让你的用户在DNS中把他们的邮件主机设置为 ``customer.com''或者 ``hostname.customer.com''. 只要为``customer.com''在DNS里添加一个A记录就可以了.
默认的 FreeBSD 安装中, sendmail 会配置为只发送来自它所在主机上的邮。 例如,如果有可用的 POP 服务器,则用户将可以从学校、 公司或其他什么别的地方检察邮件,但他们仍然无法从远程直接发送邮件。 通常,在几次尝试之后, MAILER-DAEMON 将发出一封饱含 ``5.7 Relaying Denied'' 错误信息的邮件。
有很多方法可以避免这种现象。 最直截了当的方法是把你的 ISP 的地址放到 /etc/mail/relay-domains 文件中。 完成这项工作的简单的方法是:
# echo "your.isp.example.com" > /etc/mail/relay-domains
建立或编辑这个文件以后你必须重新启动 sendmail. 如果你是一个管理员并且不希望在本地发送邮件,或者想要在其它的机器甚至其它的ISP上使用一个客户端系统,这个方法是很方便的. 如果你仅有一到两个邮件帐户它也非常的有用 . 如果有大量的地址需要添加 , 你可以很简单的使用你喜欢的文本编辑器打开这个文件添加域名,每行一个:
your.isp.example.com other.isp.example.net users-isp.example.org www.example.org
现在邮件可以通过你的系统传送, 这个列表中存在的主机(前提是用户在你的系统上已经有一个帐户)将可以成功的发送. 这是一个允许正常的远程用户从你的系统发送邮件并且阻止其它非法用户通过你系统发送垃圾邮件的好方法.