FreeBSD China Community FAQ --New
Q:10.5. 我在 rc.conf 还是某个起动档案里犯了错误, 因为档案系统变成唯读的,我无法去编辑它。我该怎么办?
A:当电脑问你 shell 完整路径名时,只要按 ENTER ,然後执行 mount / 以读写模式 重新挂载根档案系统。你也许需要执行 mount -a -t ufs ,将你惯用的文字编辑器所在的档案系统挂载上来。如果 你惯用的文字编辑器在网路档案系统上的话,你必须先手动将网路设定 起来,以便将网路档案系统挂载上来,或是使用本地端档案系统上的 编辑器,例如 ed(1)。
如果你想要使用像 vi(1) 或是 emacs(1) 等的全萤幕 文字编辑器的话,你也需要执行 export TERM=cons25 ,以便让这些编辑器能够从 termcap(5) 资料库里读取正确的资料。
当你已经完成了这些步骤後,你可以照你平常修改文法错误的方式 去编辑 /etc/rc.conf 档案。在核心 (kernel) 启动时所显示的错误讯息,能够告诉你档案中哪一行有错误。
Q: 10.6. 为什么我没办法设定我的印表机?
A:请参考一下 Handbook 中,有关列印的部份。它应该能够解决 你大部份的问题。请参考 Handbook 中的列印部份。
有些印表机需要主机支援的驱动程式 (host-based driver) 才能 执行任何列印功能。FreeBSD 本身并不支援这些所谓的 ``WinPrinters''。 如果你的印表机无法在 DOS 或 Windows NT 4.0 下执行,那它大概就是一台 WinPrinter。你唯一能使用 这样的印表机的希望,就是试试 print/pnm2ppa 支不支援它了。
Q: 10.7. 我要怎么样修正我的系统所使用的键盘对映 (keyboard mapping)?
A:请参考 Handbook 中的 using localization 章节,尤其是 console setup 章节。
Q:10.8. 为什么我在系统启动时,得到 ``unknown: <PNP0303> can't assign resources'' 的讯息?
A:以下是从 freebsd-current 通信论坛的一篇文章中节录出来的。
``无法指派资源 (can't assign resources)'' 讯息表示 那些装置是传统的 ISA 装置,而核心中已经编入不认得 PNP 的驱动程 式。这些装置包括键盘控制器,可程式化岔断控制晶片,还有几个标准 设备。资源无法指派给这些装置,是因为早已有驱动程式使用那些位址 了。
--Garrett Wollman <wollman@FreeBSD.org>, 2001 年四月 24 日
Q: 10.9. 为什么我无法让 user quotas 正常工作?
A:#
不要在 / 打开 quotas,
#
把 quotas 档放在它必须强迫置入的档案系统内,举例:
档案系统 Quota 档
/usr /usr/admin/quotas
/home /home/admin/quotas
... ...
Q: 10.10. FreeBSD 支持 System V IPC 格式指令集?
A:是的,FreeBSD 支援 System V-style IPC。这包括共享记忆体, 讯息跟信号。你需要在你的核心设定档内加入下列几行以启动它们。
options SYSVSHM # enable shared memory
options SYSVSEM # enable for semaphores
options SYSVMSG # enable for messaging
Note: 在 FreeBSD 3.2 以及之後的版本,这些选项已经是 GENERIC 核心的一部份,也就是说它们已 经编进了你的系统中。
重新编译并安装。
Q: 10.11. 我该如何让 sendmail 透过 UUCP 来递送邮件?
A:跟随 FreeBSD 套装而来的 sendmail 设定是适合那些直接连上网际网路 的站台。想透过 UUCP 交换邮件的站台必须另外安装 sendmail 的设定档案。
手动修改 /etc/sendmail.cf 是绝对必要的。 第 8 版的 sendmail 提供一个全新的入口以透过一些像 m4(1) 的处理就能产生设定档,这事实上是一个高层概念等级的技巧性设定。 你应该可以在 /usr/src/usr.sbin/sendmail/cf 以下里使用它:
假如你不是用 full sources 方式安装系统,那么 sendmail 设定项目可能已经分散成好几个来源分布档在等著你,假设你已经 mount 光碟机,做以下动作:
# cd /cdrom/src
# cat scontrib.?? | tar xzf - -C /usr/src contrib/sendmail
别惊慌,这只有数十万个位元组的大小。在 cf 目录里的 README 可以提供一个 m4 设定法的基 本介绍。
以 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 虚拟网域位址的主机名称;通常,你只需要在这 里填入你 ISP 的信件回覆处 (mail replay)。
你已经做到这里了,你还需要这个叫 /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 邻居(UUCP neighbor)取代 的特殊情形,这是为了 ``缩短''递送的路径。下一行处理到 本地乙太网路网域的信件让它可以使用 SMTP 来递送。最後,UUCP 邻居提到 .UUCP 虚拟网域的记载,允许一个 uucp-neighbor !recipient 推翻 内定规则。最後一行则以一个单独的句点做结束,以 UUCP 递送到提供当 你全世界性邮件闸门的UUCP 邻居。所有在 uucp-dom: 关键字里的节点名称必须都是有效的 UUCP 邻居,你可以用 uuname 命令去确认。
提醒你这个档案在使用前必须被转换成 DBM 资料库档案,最好在 mailertable 最上面用注解写出命令列来完成这个工作。当你每次更换你 的 mailertable 後你总是需要执行这个命令。
最後提示:如果你不确定某些特定的信件路径可用,记得把 -bt 选项加到 sendmail。这会将 sendmail 启动在 address test mode;只要按下 0,接著输入你希望测试的信件路径位址。 最後一行告诉你使用内部的信件代理程式,代理程式的会通知目的主机, 以及(可能转换的)位址。要离开此模式请按 Control-D。
% sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 foo@example.com
canonify input: foo @ example . com
..
parse returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . >
> ^D
Q: 10.12. 当我用拨接连上网路时该怎么设定信件递送?
A:如果你已经有一个固定的 IP 数字,你不需要调整任何内定值。设好 你要指定的网路名称,其他的 sendmail 都会帮你做完。
如果你拿到的是动态配置的 IP 数字而使用拨接 ppp 连接到网际网 路,你可能已经在你的 ISP 信件主机上有一个信箱。假设你的 ISP 网域 是 example.net,你的使用者名 称是 user。亦假设你称自己的主机名称是 bsd.home 而你的 ISP 告诉你可以使用 relay.example.net 当作信件回覆处。
为了从你的信箱接收信件,你将需要安装取信程式以便从信箱取回信件。 Fetchmail 是一个不错的选择,因为它支 援许多不同的通讯协定,通常你的 ISP 会提供 POP3。如果你选择使用 user-ppp,你可以在连线到网路成功後自动抓取你的信件,只要在 /etc/ppp/ppp.linkup里面设定以下这项:
MYADDR:
!bg su user -c fetchmail
假使你正使用 sendmail (如下所示) 传送信件到非本地帐号,置入以下命令:
!bg su user -c "sendmail -q"
在上面那项命令之後。这会强迫 sendmail 在连接上网路後马上开始处理 mailqueue。
我假设你在 bsd.home 机器上有一个 user 的帐号。在 bsd.home 机器上 user 的家目录里建立一个 .fetchmailrc 的档案:
poll example.net protocol pop3 fetchall pass MySecret
无须赘言,这个档除了 user 外不应该被任 何人读取,因为它包含 MySecret 这个密码。
为了在寄信时有正确的抬头 from:,你必须告诉 sendmail 使用 user@example.net 而非 user@bsd.home。你可能会希望告诉 sendmail 从 relay.example.net 送出所有信件, 加快信件传送。
以下的 .mc 档应能满足你的要求:
VERSIONID(`bsd.home.mc version 1.0')
OSTYPE(bsd4.4)dnl
FEATURE(nouucp)dnl
MAILER(local)dnl
MAILER(smtp)dnl
Cwlocalhost
Cwbsd.home
MASQUERADE_AS(`example.net')dnl
FEATURE(allmasquerade)dnl
FEATURE(masquerade_envelope)dnl
FEATURE(nocanonify)dnl
FEATURE(nodns)dnl
define(`SMART_HOST', `relay.example.net')
Dmbsd.home
define(`confDOMAIN_NAME',`bsd.home')dnl
define(`confDELIVERY_MODE',`deferred')dnl
如何转换这个 .mc 档案到 sendmail.cf 档的详细细节,请参考上一节。 另外,在更新 sendmail.cf 以後不要忘记重新启动 sendmail。
Q: 10.13. 除了 Sendmail 外,还有哪些邮件伺服器可以使用呢?
A:
Sendmail 是 FreeBSD 预设使用的邮件伺服器,但是你还是可以很容易地以其它 邮件伺服器 (例如,从 port 安装的邮件伺服器) 取代之。
port 里有很多可供选择的邮件伺服器,像 mail/exim、 mail/postfix、 mail/qmail、 mail/zmailer 等, 就是几个很受欢迎的选择。
多样选择是好事,而且大家有许多邮件伺服器可以使用也被认为是 好事;所以请避免在通信论坛里问像 ``Sendmail 有比 Qmail 好吗?'' 这样的问题。如果你真的很想问的话,请先到通信论坛 archive 里找一下。每一个邮件伺服器的优点与缺点,以前大概就已经 讨论好几次了。












文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面