31.6.高级主题 ============= 本节涵盖了更多的内容,如邮件配置和为整个域设置邮件。 31.6.1.基本配置 --------------- 只要 **/etc/resolv.conf** 配置好了即可开箱即用,或者网络可以访问配置好的 DNS 服务器,就可以向外部主机发送邮件。要让邮件被送到 FreeBSD 主机上的 MTA,请执行以下操作之一: - 运行一个域名的 DNS 服务器。 - 让邮件直接投递到机器的 FQDN 上。 为了让邮件直接送到主机上,它必须有一个永久的静态 IP 地址,而非动态 IP 地址。如果系统在防火墙后面,它必须被配置为允许 SMTP 流量。要在主机上直接接收邮件,必须配置以下两个中的一个: - 确保 DNS 中编号最低的 MX 记录指向该主机的静态 IP 地址。 - 确保在 DNS 中没有该主机的 MX 条目。 上述任何一项都将允许在主机上直接接收邮件。 试试这个: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session v# hostname example.FreeBSD.org # host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX 在这个例子中,假设 Sendmail 在 ``example.FreeBSD.org`` 上正常运行,直接发送到 yourlogin@example.FreeBSD.org 的邮件应该没有问题。 对于这个例子: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX example.FreeBSD.org mail is handled (pri=10) by nevdull.FreeBSD.org 所有发往 ``example.FreeBSD.org`` 的邮件都会被收集到 ``hub`` 上的同一个用户名下,而不是直接发往你的主机。 上述信息是由 DNS 服务器处理的。携带邮件路由信息的 DNS 记录是 MX 条目。如果没有 MX 记录,邮件将通过其 IP 地址直接送到主机上。 ``freefall.FreeBSD.org`` 的 MX 条目曾经是这样的: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX example.FreeBSD.org mail is handled (pri=10) by nevdull.FreeBSD.org ``freefall`` 有许多 MX 条目。最低的 MX 号码是直接接收邮件的主机,如果有的话。如果它由于某种原因不能访问,下一个较低编号的主机将暂时接受邮件,并在较低编号的主机可用时将其传递。 备用 MX 站点应该有独立的互联网连接,以便发挥最大作用。你的 ISP 可以提供这种服务。 31.6.2.域名邮件 --------------- 当为一个网络配置 MTA 时,任何发送到其域内主机的邮件都应该被转移到 MTA,以便用户可以在主邮件服务器上收到他们的邮件。 为了使生活变得更简单,在 MTA 和带有 MUA 的系统上都应该存在一个具有相同 *username* 的用户账户。使用 `adduser(8) `__ 来创建用户账户。 MTA 必须是网络上每个工作站的指定邮件交换器。这可以在 DNS 配置中通过 MX 记录来完成: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session example.FreeBSD.org A 204.216.27.XX ; Workstation MX 10 nevdull.FreeBSD.org ; Mailhost 这将使工作站的邮件重定向到 MTA,无论 A 记录指向哪里。邮件会被发送到 MX 主机上。 这必须在 DNS 服务器上进行配置。如果网络没有运行自己的 DNS 服务器,请与 ISP 或 DNS 提供商沟通。 下面是一个虚拟电子邮件托管的例子。假设一个域名为 ``customer1.org`` 的客户,\ ``customer1.org`` 的所有邮件都应该被发送到 ``mail.myhost.com``\ 。其 DNS 条目应该是这样的: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session customer1.org MX 10 mail.myhost.com ``customer1.org`` *不* 需要 ``A`` 记录,以便只处理该域名的电子邮件。然而,除非有 ``A`` 记录存在,否则对 ``customer1.org`` 运行 ``ping`` 将不工作。 告诉 MTA 它应该接受哪些域名和/或主机名的邮件。以下两种方法都适用于 Sendmail: - 在使用 ``FEATURE(use_cw_file)`` 时,将主机添加到 **/etc/mail/local-host-names**\ 。 - 在 **/etc/sendmail.cf** 中添加 ``Cwyour.host.com`` 一行。