From 555f89fb498ca96d2cc66dd1aab0d590a77310b7 Mon Sep 17 00:00:00 2001 From: Xin LI Date: Wed, 6 Apr 2005 11:22:37 +0000 Subject: [PATCH] MFen 1.121 -> 1.127, plus several translation completion/improvements. Local revisions: 1.1.1000.2-1.1.1000.12 (delphij) Obtained from: The FreeBSD Simplified Chinese Project CVS --- zh_CN.GB2312/books/handbook/mail/chapter.sgml | 655 +++++++++++++++--- 1 file changed, 577 insertions(+), 78 deletions(-) diff --git a/zh_CN.GB2312/books/handbook/mail/chapter.sgml b/zh_CN.GB2312/books/handbook/mail/chapter.sgml index 704674ee18..3911ce2601 100644 --- a/zh_CN.GB2312/books/handbook/mail/chapter.sgml +++ b/zh_CN.GB2312/books/handbook/mail/chapter.sgml @@ -2,7 +2,7 @@ The FreeBSD Documentation Project The FreeBSD Chinese Documentation Project - Original Revision: 1.121 + Original Revision: 1.127 $FreeBSD$ --> @@ -30,7 +30,6 @@ 概述 email - 电子邮件 电子邮件,或通常所说的 email,是现今使用最广泛的通信方式之一。 本章将对如何在 &os; 上运行邮件服务,以及如何使用 &os; 来收发电子邮件作基本的介绍; @@ -382,7 +381,7 @@ FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org /etc/mail/virtusertable - + @@ -453,12 +452,12 @@ FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org 将拒绝所有的邮件连接。如果带有 选项的主机将被允许通过这个邮件服务器发送邮件到任何地方。 - - 配置<application>sendmail</application> - 访问数据库 + + 配置 <application>sendmail</application> + 的访问许可数据库 - cyberspammer.com 550 We don't accept mail from spammers -FREE.STEALTH.MAILER@ 550 We don't accept mail from spammers + cyberspammer.com 550 We do not accept mail from spammers +FREE.STEALTH.MAILER@ 550 We do not accept mail from spammers another.source.of.spam REJECT okay.cyberspammer.com OK 128.32 RELAY @@ -496,22 +495,21 @@ bit.bucket: /dev/null procmail: "|/usr/local/bin/procmail" - 文件格式比较简单:邮箱名在冒号左边,右边是扩展的目标。 - 第一个例子简单的扩展邮箱 root - 到邮箱 localuser,它可以在别名数据库中被找到。 - 如果没有找到匹配的,那么这个信息会被发送给本地用户 - localuser。接下来的例子显示了一个邮件列表。 - 发送到 ftp-bugs 邮箱的邮件会被扩展为三个本地邮箱 - joe、 - ericpaul。注意 - 一个远程邮箱可以用 user@example.com 的形式指定。 - 下个例子显示将邮件写到 /dev/null 文件。 - 最后一个例子向您展示了传送邮件到一个程序,在这个例子里邮件通过 - &unix; 管道被写到 /usr/local/bin/procmail - 标准输入里。 + 这个文件的格式很简单; 冒号左边的邮箱名, 会被展开成右边的形式。 + 第一个例子简单地将 root + 邮箱扩展为 localuser, 之后将继续在别名数据库中进行查找。 + 如果没有找到匹配的记录, 则邮件会被发给本地用户 + localuser。 第二个例子展示了一个邮件列表。 + 发送到 ftp-bugs 的邮件会被展开成 joe, + ericpaul 这三个邮箱。 + 注意也可以通过 user@example.com 这样的形式来指定远程的邮箱。 + 接下来的例子展示了如何把邮件写入到文件中, 这个例子中是 + /dev/null。 最后一个例子展示了如何将邮件发给一个程序, + 具体而言是通过 &unix; 管道发到 /usr/local/bin/procmail + 的标准输入。 - 当这个文件被升级时, 您必须在/etc/mail/运行 - make来升级数据库. + 更新此文件时, 您需要在 /etc/mail/ 中使用 + make 来更新数据库。 <filename>/etc/mail/local-host-names</filename> @@ -565,19 +563,17 @@ postmaster@example.com postmaster@noc.example.net @example.com joe - 在上面这个例子里,我们映射了一个域 + 在上面这个例子中, 我们映射了一个域 example.com。 - 这个文件用一个最初匹配的文件处理。第一项映射 - root@example.com 到本地邮箱 - root。下一项映射 - postmaster@example.com 到 - noc.example.net 主机的 - postmaster 邮箱。最后,如果域 - example.com - 没有被什么匹配,它将与最后一个映射匹配,在 - example.com - 域,每个其它邮件信息地址到某一个主机被匹配。 - 在这里被映射到本地邮箱 joe + 这个文件是按照从上到下, 首个匹配的方式来处理的。 第一项将 + root@example.com 映射到本地邮箱 root。 + 下一项则将 + postmaster@example.com 映射到位于 + noc.example.netpostmaster。 + 最后, 如果没有来自 example.com + 的匹配, 则将使用最后一条映射, 它表示将所有的其它邮件发给 + example.com 域的某个人。 + 这样, 将映射到本地信箱 joe @@ -1066,10 +1062,10 @@ example.FreeBSD.org &prompt.root; host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX - 如果您看到这些,直接使用 - yourlogin@example.FreeBSD.org 应该没有问题 - (假定 sendmail 已经 - 正确的运行在 example.FreeBSD.org)。 + 如果您看到这些, 则直接发往 + yourlogin@example.FreeBSD.org + 应该已经可以正常工作了 (假设 sendmail + 已经在 example.FreeBSD.org 上正确启动了)。 如果您看到这些: @@ -1302,9 +1298,72 @@ parse returns: $# uucp-dom $@ your.uucp.relay - Setting Up to Send Only ** 翻译进行中 ** + 只发送邮件的配置 + + 许多时候, 可能只希望通过转发服务器来发送邮件。 + 典型的情况包括: + + + + 使用桌面机, 但希望通过类似 &man.send-pr.1; + 这样的程序发送邮件。 这样就需要使用 ISP 的邮件转发服务器。 + + + + 不在本地处理邮件的服务器, + 但它需要把邮件交给转发服务器来进行处理。 + + + + 几乎任何一个 MTA 都能够胜任这样的工作。 + 然而不幸的是, 要把一个全功能的 MTA + 正确地配置为只把邮件交给其他服务器是一件很困难的事情。 使用 + sendmail 以及 + postfix 这样的程序, + 多少有些杀鸡用牛刀的感觉。 + + 此外, 如果您使用典型的 Internet 访问服务, + 您的协议可能会包含禁止运行 + 邮件服务器 的条款。 + + 满足这些需要最简单的办法是安装 + mail/ssmtp port。 + 以 root 身份执行下面的命令: + + &prompt.root; cd /usr/ports/mail/ssmtp +&prompt.root; make install replace clean + + 一旦装好, + mail/ssmtp 就可以用四行 + /usr/local/etc/ssmtp/ssmtp.conf 来配置: + + root=yourrealemail@example.com +mailhub=mail.example.com +rewriteDomain=example.com +hostname=_HOSTNAME_ + + 请确认您为 + root 使用了真实的电子邮件地址。 + 用您的 ISP 提供的外发邮件转发服务器名称, + 替换掉 mail.example.com (某些 ISP + 可能将其称为 外发邮件服务器 或 + SMTP 服务器)。 + + 接下来确认禁用了 sendmail, + 这可以通过将 sendmail_enable="NONE" + 加入 /etc/rc.conf 来完成。 + + mail/ssmtp 也提供了一些其他选项。 + 请参见在 + /usr/local/etc/ssmtp 中的示例配置, 或者 + ssmtp + 的联机手册来得到一些例子和更多的其他信息。 + + 以这种方式配置 ssmtp, + 能够让您计算机上的任何需要发送邮件的软件都正常运转, + 而不必冒违反 ISP 的使用政策, + 或使您的电脑被劫持用于发送垃圾邮件的风险。 - @@ -1324,7 +1383,7 @@ parse returns: $# uucp-dom $@ your.uucp.relay为了从邮箱收取邮件, 需要安装一个收信代理。 fetchmail 是一个能够支持许多种不同协议的不错的选择。 - 这个程序可以通过 package 或 ports collection (mail/fetchmail) 来安装。 通常, 您的 ISP 会提供 POP。 如果您使用用户 PPP,您还可以在 Internet 连接建立时自动地抓取邮件, @@ -1334,32 +1393,37 @@ parse returns: $# uucp-dom $@ your.uucp.relayMYADDR: !bg su user -c fetchmail - 如果您正使用sendmail (如下所示) - 传送邮件到非本地帐户,这会强迫 - sendmail 在连接网络后马上处理邮件进程队列,它在 - /etc/ppp/ppp.linkup 文件执行 - fetchmail 命令。 + 如果您正使用 sendmail (如下所示) + 来为非本地用户传送邮件, + 则可能需要让 sendmail 在您的 + Internet 连接建立时立即传送邮件队列。 + 要完成这项工作, 应该把下面的命令放到 + /etc/ppp/ppp.linkup 中的 + fetchmail 之后 - !bg su user -c "sendmail -q" + !bg su user -c "sendmail -q" - 假设您有一个 - user 帐户,在 bsd.home机器上。在 bsd.home - 机器上的 user 目录里建立一个 - .fetchmailrc文件: + 假设您在 bsd.home 上有一个 + user 用户。 在 bsd.home 上的 + user 主目录中创建一个 + .fetchmailrc 文件: - poll example.net protocol pop3 fetchall pass MySecret + poll example.net protocol pop3 fetchall pass MySecret - 这个文件除了 user 外不应该被任何人读取, - 因为它包含了 MySecret 这个密码。 + 因为包含了密码 MySecret, 这个文件应该只有 + user 可读。 - 为了在发信时有正确的抬头 - from:,您必须告诉 - sendmail 使用 - user@example.net 而非 - user@bsd.home。您可能会希望告诉 - sendmailrelay.example.net 发送所有邮件,加快邮件的传送。 + 要使用正确的 + from: 头来发送文件, 您必须告诉 + sendmail 使用 + user@example.net 而不是i + user@bsd.home。 + 另外, 您可能也需要要求 + sendmail 通过 relay.example.net 来发送邮件, + 以便更快地传送它们。 以下的 .mc 文件应该可以满足您的需求: @@ -1515,30 +1579,333 @@ sasl_pwcheck_program="/usr/local/sbin/pwcheck" - Mail User Agents ** 翻译进行中 ** + 邮件用户代理 - Mail User Agents ** 翻译进行中 ** + 邮件用户代理 - + 邮件用户代理 (MUA) 是一个用于收发邮件的应用程序。 + 更进一步, 随着电子邮件的 + 演化 并愈发复杂, + MUA 在和电子邮件相结合方面变得日趋强大; + 这为用户提供了更多的功能和灵活性。 &os; + 包含了对于众多邮件用户代理的支持, 所有这些都可以通过 + FreeBSD Ports Collection 来轻松安装。 + 用户可以选择类似 + evolution 以及 + balsa 这样的图形界面程序, + 也可以选择类似 + muttpine + 或 mail 这样的控制台程序, + 或者某些大型机构使用的 web 界面。 - mail ** 翻译进行中 ** + mail - + &man.mail.1; 是 &os; 中默认的邮件用户代理 + (MUA)。 + 它是一个基于控制台的 MUA, + 提供了所有用于收发文本形式的电子邮件所需的基本功能, + 虽然它处理附件的能力有限, 而且只支持本地的信箱。 + + 虽然 mail 没有内建的 POP 或 + IMAP 服务器支持, 然而这些信箱可以通过类似 + fetchmail 这样的应用程序, + 来下载到本地的 mbox 文件中。 + 这一应用程序在本章的稍后部分 () 进行了介绍。 + + 要收发邮件, 只需简单地使用 + mail 命令, + 如下所示: + + &prompt.user; mail + + 用户保存在 + /var/mail + 中的信箱的内容会被 mail 程序自动地读取。 + 如果信箱是空的, 程序会退出并给出一个消息表示没有邮件。 + 一旦读完了信箱, 将启动应用程序的界面, + 并列出邮件。 所有的邮件会被自动编号, + 类似下面的样子: + + Mail version 8.1 6/6/93. Type ? for help. +"/var/mail/marcs": 3 messages 3 new +>N 1 root@localhost Mon Mar 8 14:05 14/510 "test" + N 2 root@localhost Mon Mar 8 14:05 14/509 "user account" + N 3 root@localhost Mon Mar 8 14:05 14/509 "sample" + + 现在, 您通过使用 mailt + 命令, 并给出邮件的编号, 就可以看到邮件了。 在这个例子中, + 我们将阅读第一封邮件: + + & t 1 +Message 1: +From root@localhost Mon Mar 8 14:05:52 2004 +X-Original-To: marcs@localhost +Delivered-To: marcs@localhost +To: marcs@localhost +Subject: test +Date: Mon, 8 Mar 2004 14:05:52 +0200 (SAST) +From: root@localhost (Charlie Root) + +This is a test message, please reply if you receive it. + + 正如在上面的例子中所看到的, t + 键将显示完整的邮件头。 要再次查看邮件的列表, + 可以使用 h 键。 + + 如果需要回复邮件, 也可以使用 + mail 来完成, 方法是使用 + Rr + 这两个 mail键。 + R 键会要求 + mail 只回复发送邮件的人, + 而 r 不仅回复发送邮件的人, + 而且也会将回复抄送给原来邮件的其他接收者。 + 如果需要, 也可以在这些命令后面指定邮件的编号。 + 做完这些之后, 就可以输入回复了, + 在邮件的最后应该有一个只有一个 . + 的行, 例如: + + & R 1 +To: root@localhost +Subject: Re: test + +Thank you, I did get your email. +. +EOT + + 要发出新邮件, 可以使用 m, + 后面接收件人的邮件地址。 多个收件人之间, + 应该使用 , 隔开。 接下来需要输入邮件的主题, + 然后是正文。 同样的, 在邮件最后需要一个只有 . + 的空行表示结束。 + + & mail root@localhost +Subject: I mastered mail + +Now I can send and receive email using mail ... :) +. +EOT + + mail 工具中, 可以用 + ? 来显示帮助, + 而参考 &man.mail.1; 联机手册则可以获得更多关于 mail + 的帮助信息。 + + + 正如前面所提到的那样, &man.mail.1; 命令在设计时没有考虑到要处理附件, + 因而在这方面他的功能很弱。 新的 MUA, 如 + mutt, 能够更好地处理附件。 + 但如果您仍然希望使用 + mail 命令, 那么 converters/mpack port + 则是一个值得考虑的附加工具。 + - mutt ** 翻译进行中 ** + mutt - + mutt 是一个短小精悍的邮件用户代理, + 它提供了许多卓越的功能, 包括: + + + + 能够按线索阅读邮件; + + + + 支持使用 PGP 对邮件进行数字签名和加密; + + + + 支持 MIME; + + + + 支持 Maildir; + + + + 高度可定制。 + + + + 所有这些特性, 都使得 + mutt + 得以跻身于目前最先进的邮件用户代理的行列。 请参考 + 以了解更多关于 mutt 的资料。 + + 稳定版本的 mutt + 可以通过 mail/mutt port 来安装, + 而开发版本, 则可以通过使用 mail/mutt-devel port 安装。 + 通过 port 安装之后,可以通过下面的命令来启动 + mutt + + &prompt.user; mutt + + mutt 会自动读取 /var/mail 中的用户信箱, + 并显示其内容。 如果用户信箱中没有邮件, 则 + mutt 将等待来自用户的命令。 + 下面的例子展示了 mutt + 列出邮件的情形: + + + + + + + + 要阅读邮件, 只需用光标键选择它, + 然后按 Enter 键。 以下是 + mutt 显示邮件的例子: + + + + + + + + 和 &man.mail.1; 类似, + mutt 允许用户只回复发件人, + 或者回复所有人。 如果只想回复发信任, 使用 + r 快捷键。 要回复所有人 (group reply), + 可以用 g 快捷键。 + + + mutt 会使用 + &man.vi.1; 命令作为编辑器, 用于创建和回复邮件。 + 这一行为可以通过建立用户自己的 .muttrc + 文件来订制, 方法是修改 + editor 变量。 + + + 要撰写新邮件, 需要首先按 + m。 在输入了有效的邮件主题之后, + mutt 将启动 &man.vi.1;, + 您可以在其中撰写邮件。 写好邮件的内容之后, + 存盘并退出 vi, 则 + mutt 将继续, + 并显示一些关于将发出的邮件的摘要信息。 + 要发送邮件, 只需按 y。 + 下面给出了摘要信息的一个例子: + + + + + + + + mutt 也提供了相当详尽的帮助, + 在绝大多数菜单中, 都可以使用 ? 键将其呼出。 + 屏幕顶行中也会给出常用的快捷键。 - pine ** 翻译进行中 ** + pine - + pine 主要是针对初学者设计的, + 但也提供了一些高级功能。 + + + 过去, pine 软件被发现有许多远程漏洞, + 这些漏洞会允许远程的攻击者在用户的本地系统上, + 通过发送精心炮制的邮件来执行任意的代码。 所有的 + 已知 问题都已经被修正了, 但 + pine 的代码是以很不安全的风格编写的, + 并且 &os; 安全官相信仍然有一些尚未被发现的安全漏洞。 + 您应当考虑并承担安装 + pine 可能带来的风险。 + + + 最新版本的 pine + 可以通过使用 mail/pine4 port 来安装。 + 装好之后, pine + 可以通过下面的命令启动: + + &prompt.user; pine + + 第一次启动 pine 时, + 它会显示出一个欢迎页, 并给出简要的介绍, + 以及 pine 开发小组要求用户匿名发送一封邮件, + 以便帮助他们了解有多少用户在使用他们开发的客户程序的请求。 + 要发送这封匿名的邮件, 请按 Enter, + 您也可以按 E 退出, + 而不发送匿名邮件。 下面是欢迎页的一个例子: + + + + + + + + 接下来展现给用户的将是主菜单, + 可以很容易地通过光标键在上面进行选择。 + 这个主菜单提供了用于撰写新邮件、 浏览邮件目录, + 甚至管理地址簿等等的快捷方式。 + 主菜单下面是完成各种功能的快捷键说明。 + + pine + 打开的默认目录是 inbox。 + 要查看邮件所以in, 应按 + I, 或选择下面所示的 MESSAGE INDEX + 选项: + + + + + + + + 邮件索引展示了当前目录下的邮件, + 可以使用光标键翻阅。 按 + Enter 键阅读高亮选定的邮件。 + + + + + + + + 在上面的截屏中, 使用 + pine 显示了一封示例邮件。 + 在屏幕底部也显示了快捷键供参考。 其中的一个例子是 r 键, + 它告诉 MUA 回复正显示的邮件。 + + + + + + + + pine 中回复邮件, + 是通过 pico 编辑器完成的, + 后者默认情况下会随 pine 一起安装。 + 而 pico 工具使得浏览邮件变得更加简单, + 并且要比 &man.vi.1; 或 &man.mail.1; 更能容忍误操作。 + 回复写好之后, 可以用 + CtrlX + 来发出它。 此前, pine + 程序会要求确认。 + + + + + + + + pine 程序可以通过使用主菜单中的 + SETUP 选项来进行定制。 + 请参考 + 来了解更多信息。 @@ -1553,13 +1920,84 @@ sasl_pwcheck_program="/usr/local/sbin/pwcheck" - Using fetchmail ** 翻译进行中 ** + 使用 fetchmail - Using fetchmail + fetchmail - + fetchmail 是一个全功能的 + IMAPPOP 客户程序, + 它允许用户自动地从远程的 + IMAPPOP 服务器上下载邮件, + 并保存到本地的信箱中; 这样, 访问这些邮件就变得更方便了。 + fetchmail 可以通过 + mail/fetchmail port 安装, + 它提供了许多有用的功能, 其中包括: + + + + 支持 POP3、 + APOPKPOP、 + IMAPETRN 以及 + ODMR 协议。 + + + + 通过 SMTP 转发邮件, + 这使得过滤、 转发, 以及邮件别名能够正常工作。 + + + + 能够以服务程序的方式运行, 并周期性地检查邮件。 + + + + 能够从多个信箱收取邮件, 并根据配置, + 将这些邮件转发给不同的本地用户。 + + + + 尽管介绍全部 fetchmail 的功能超出了本书的范围, + 但这里仍然介绍了其基本的功能。 + fetchmail 工具需要一个名为 + .fetchmailrc 的配置文件才能正常工作。 + 这个文件中包含了服务器信息, 以及登录使用的凭据。 + 由于这个文件包含敏感内容, 建议将其设置为只有属主所有, + 使用下面的命令: + + &prompt.user; chmod 600 .fetchmailrc + + 下面的 .fetchmailrc 提供了一个将某一用户的信箱通过 + POP 下载到本地的例子。 它告诉 + fetchmail 连接到 example.com, 并使用用户名 + joesoap 和口令 + XXX。 这个例子假定 + joesoap 同时也是本地的系统用户。 + + poll example.com protocol pop3 username "joesoap" password "XXX" + + 下一个例子将连接多个 POP + 和 IMAP 服务器, 并根据需要转到不同的本地用户: + + poll example.com proto pop3: +user "joesoap", with password "XXX", is "jsoap" here; +user "andrea", with password "XXXX"; +poll example2.net proto imap: +user "john", with password "XXXXX", is "myth" here; + + 另外, fetchmail 也可以通过指定 + 参数, 并给出 fetchmail + 在轮询 .fetchmailrc 文件中列出的服务器的时间间隔, + 来以服务程序的方式运行。 下面的例子会让 fetchmail + 每 60 秒轮询一次: + + &prompt.user; fetchmail -d 60 + + 更多关于 fetchmail 的资料, + 可以在 找到。 @@ -1572,13 +2010,74 @@ sasl_pwcheck_program="/usr/local/sbin/pwcheck" - Using procmail ** 翻译进行中 ** + 使用 procmail - Using procmail + procmail - + procmail 是一个强大得惊人的过滤进入邮件的应用程序。 + 它允许用户定义 规则, 并用这些规则来匹配进入的邮件, + 进而执行某些特定的功能, 或将这些邮件转发到其他信箱和/或邮件地址。 + procmail 可以通过 + mail/procmail port 来安装。 + 装好之后, 可以直接把它集成到绝大多数 + MTA 中; 请参考您使用的 MTA + 的文档了解具体的作法。 另外, + procmail + 可允许通过把下面的设置加入到用户主目录中的 .forward + 文件中, 来启用 + procmail 功能: + + "|exec /usr/local/bin/procmail || exit 75" + + 接下来我们将介绍一些基本的 + procmail 规则, 以及它们都是做什么的。 + 各种各样的规则, 都应该写到 .procmailrc + 文件中, 而这个文件则必须放在用户的主目录下。 + + 主要的规则, 也可以在 + &man.procmailex.5; 联机手册中找到。 + + 将所有来自 user@example.com 的邮件, + 转发到外部地址 goodmail@example2.com + + :0 +* ^From.*user@example.com +! goodmail@example2.com + + 转发所有不超过 1000 字节的邮件到外部地址 + goodmail@example2.com + + :0 +* < 1000 +! goodmail@example2.com + + 把所有发送到 alternate@example.com + 的邮件放到信箱 alternate 中: + + :0 +* ^TOalternate@example.com +alternate + + 将所有标题为 Spam 的邮件发到 + /dev/null + + :0 +^Subject:.*Spam +/dev/null + + 将收到的所有 &os;.org 邮件列表的邮件, + 转发到各自的信箱: + + :0 +* ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG +{ + LISTNAME=${MATCH} + :0 + * LISTNAME??^\/[^@]+ + FreeBSD-${MATCH} +}