22.2. 使用电子邮件

邮件交换可以分为 5 部分。它们是: 用户端程序服务端守护进程DNS远程或本地的邮箱、 当然,还有邮件主机自己

22.2.1. 用户端程序

这包括一些基于命令行的程序,例如 muttpineelmmail,以及类似 balsaxfmail 这样的 GUI 程序。 此外,还有我们更“熟悉的”WWW 浏览器这样的程序。 这些程序简单地通过调用服务守护进程把邮件事务交给本地的 “邮件主机”,或者通过 TCP 把邮件发出去。

22.2.2. 邮件主机上使用的服务程序

FreeBSD 默认情况下采用 sendmail, 但它也支持为数众多的其它邮件服务程序, 这其中包括:

邮件服务器后台守护程序通常有两个功能 -- 接收外面发来的邮件和把邮件传送出去。 但它 负责使用类似 POPIMAP 这样的协议来帮您阅读邮件, 也不负责连接到本地的 mbox 或 Maildir 信箱。 您可能需要其它的 服务程序 来完成这些任务。

Warning较早版本的 sendmail 有一些严重的安全问题, 他们可能导致攻击者从本地和/或远程操作您的电脑。 您应该确认自己使用的是最新版本以避免这些问题。 另外, 也可以从 FreeBSD Ports Collection 来安装其它的 MTA

22.2.3. Email 和 DNS

域名系统 (DNS) 及其服务程序 named 在email的投递过程当中扮演着很重要的角色。 为了能够从您的站点向其它的站点传递邮件, 服务程序需要通过 DNS 查找接收邮件的远程站点的位置。 类似地, 在远程站点向您的主机投递邮件时也会发生这样的查找。

DNS 负责将主机名映射为 IP 地址, 同时, 也需要保存递送邮件时所需要的信息, 这些信息称作 MX 记录。 MX (Mail eXchanger,邮件交换) 记录指定了哪个, 或哪些主机能够接收特定域下的邮件。 如果您没有为主机名或域名设置 MX 记录, 则邮件将被直接递交给主机名对应 IP 所在的主机。

您可以通过 host(1) 命令来查找任何域或主机名对应的 MX 记录, 如下面的例子所示:

% host -t mx FreeBSD.org
FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org

22.2.4. 接收邮件

为您的域接收邮件是通过邮件服务器来完成的。 它收集发送给您的域的那些邮件,并保存到 mbox (存储邮件默认的方法) 或 Maildir 格式, 这取决于您采用的配置。 一旦邮件被保存下来, 就可以在本地通过类似 mail(1)mutt 这样的程序, 或在远程通过 POPIMAP 这样的协议来读取了。 简单地说, 如果您只在本地阅读邮件,那就没有必要安装 POPIMAP 服务。

22.2.4.1. 通过 POPIMAP 访问远程的邮件

如果希望在远程访问邮箱, 就需要访问 POPIMAP 服务器。 这些协议允许用户从远程方便地访问他们的信箱。 尽管 POPIMAP 都允许用户从远程访问信箱, 但 IMAP 有很多优点, 这包括:

  • IMAP 既可以从远程服务器上抓取邮件, 也可以把邮件放上去。

  • IMAP 支持并发更新。

  • IMAP 对于使用低速网络的用户尤为有用, 因为它能够让这些用户把邮件的结构下载下去, 而无需立即下载整个邮件。 它还可以在服务器端执行类似查找这样的操作, 以减少客户机和服务器之间的通讯量。

您可以按照下面的步骤来安装和配置 POPIMAP 服务器:

  1. 选择一个最符合需要的 IMAPPOP 服务器。 下列 POPIMAP 服务器是最著名的, 而且都有很多成功案例:

    • qpopper;

    • teapop;

    • imap-uw;

    • courier-imap;

  2. 通过 ports collection 安装 POPIMAP 服务。

  3. 根据需要修改 /etc/inetd.conf 来加载 POPIMAP 服务。

Warning此外还应注意的是 POPIMAP 传递的信息, 包括用户名和口令等等, 通常都是明文的。 这意味着如果您希望加密传输过程中的信息, 可能需要考虑使用 ssh(1) 隧道。 关于如何实施隧道在 Section 14.12.7 中进行了详细阐述。

22.2.4.2. 操作本地的信箱

信箱可以在邮件服务器本地直接用 MUA 来进行操作。 这通常是通过 muttmail(1) 这样的用用程序实现的。

22.2.5. 邮件服务器

邮件服务器是通过服务器给的一个名字,这也正是它能在您的主机和网络上发送和接收邮件的原因.