JavaScript is required to for searching.
跳过导航链接
退出打印视图
在 Oracle Solaris 11.1 中管理 sendmail 服务     Oracle Solaris 11.1 Information Library (简体中文)
为本文档评分
search filter icon
search icon

文档信息

前言

1.  邮件服务(概述)

2.  邮件服务(任务)

3.  邮件服务(参考信息)

Oracle Solaris 版本的 sendmail

编译 sendmail 时使用和未使用的标志

MILTER(用于 sendmail 的邮件过滤器 API)

替代 sendmail 命令

配置文件的版本

邮件服务的软件和硬件组件

软件组件

邮件用户代理

邮件传输代理

本地传送代理

邮件程序与 sendmail

简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 邮件程序

UNIX 对 UNIX 复制程序 (UNIX-to-UNIX Copy Program, UUCP) 邮件程序

邮件地址

域和子域

名称服务域名和邮件域名

邮件地址的典型格式

与路由无关的邮件地址

邮箱文件

邮件别名

硬件组件

邮件主机

邮件服务器

邮件客户机

邮件网关

邮件服务的程序和文件

vacation 实用程序的增强功能

/usr/bin 目录的内容

/etc/mail 目录的内容

/etc/mail/cf 目录的内容

/usr/lib 目录的内容

用于邮件服务的其他文件

邮件程序的交互

sendmail 程序

sendmail 及其重新路由机制

sendmail 功能

sendmail 配置文件

邮件别名文件

.mailrc 别名

/etc/mail/aliases 文件

NIS aliases 映射

.forward 文件

应避免的情况

.forward 文件的控制

.forward.hostname 文件

.forward+detail 文件

/etc/default/sendmail 文件

邮件地址和邮件路由

sendmail 与名称服务的交互

sendmail.cf 和邮件域

sendmail 和名称服务

邮件域和名称服务域

名称服务的要求

NIS 与 sendmail 的交互

sendmail 与 NIS 和 DNS 的交互

sendmail 版本 8.14 中的更改

sendmail 版本 8.13 中的更改

sendmail 版本 8.13 支持运行 SMTP 时使用 TLS

用于在运行 SMTP 时使用 TLS 的配置文件选项

用于在运行 SMTP 时使用 TLS 的宏

用于在运行 SMTP 时使用 TLS 的规则集

与运行 SMTP 时使用 TLS 相关的安全注意事项

sendmail 版本 8.13 中新增的命令行选项

sendmail 版本 8.13 中新增和修订的配置文件选项

sendmail 版本 8.13 中新增和修订的 FEATURE() 声明

sendmail 版本 8.12 中的更改

sendmail 版本 8.12 支持 TCP 包装

sendmail 版本 8.12 中的配置文件 submit.cf

可区分 sendmail.cfsubmit.cf 的功能

sendmail 版本 8.12 中功能的更改

sendmail 版本 8.12 中新增或过时的命令行选项

sendmail 版本 8.12 中新增的用于 PidFileProcessTitlePrefix 选项的参数

sendmail 版本 8.12 中新增的已定义宏

sendmail 版本 8.12 中新增的宏

sendmail 版本 8.12 中新增的 MAX

sendmail 版本 8.12 中新增和修订的 m4 配置宏

sendmail 版本 8.12 中对 FEATURE() 声明的更改

sendmail 版本 8.12 中对 MAILER() 声明的更改

sendmail 版本 8.12 中新增的传送代理标志

sendmail 版本 8.12 中新增的用于传送代理的等式

sendmail 版本 8.12 中新增的队列功能

sendmail 版本 8.12 中对 LDAP 的更改

sendmail 版本 8.12 中对内置邮件程序的更改

sendmail 版本 8.12 中新增的规则集

sendmail 版本 8.12 中对文件的更改

sendmail 版本 8.12 和配置中的 IPv6 地址

索引

请告诉我们如何提高我们的文档:
过于简略
不易阅读或难以理解
重要信息缺失
错误的内容
需要翻译的版本
其他
Your rating has been updated
感谢您的反馈!

您的反馈将非常有助于我们提供更好的文档。 您是否愿意参与我们的内容改进并提供进一步的意见?

邮件服务的软件和硬件组件

本节介绍了邮件系统的软件和硬件组件。

软件组件

每种邮件服务都至少包括以下软件组件之一。

本节还介绍了以下软件组件。

邮件用户代理

邮件用户代理是用户与邮件传输代理之间用作接口的程序。sendmail 程序是一个邮件传输代理。Oracle Solaris 操作系统提供了以下邮件用户代理。

邮件传输代理

邮件传输代理负责邮件的路由以及邮件地址的解析。此代理也称为邮件传输代理。用于 Oracle Solaris 操作系统的传输代理是 sendmail。该传输代理可执行以下功能。

本地传送代理

本地传送代理是实现邮件传送协议的程序。Oracle Solaris 操作系统附带了以下本地传送代理。

sendmail 版本 8.12 中的更改提供了有关以下相关主题的信息。

邮件程序与 sendmail

邮件程序是特定于 sendmail 的术语。sendmail 使用邮件程序来识别定制的本地传送代理或定制的邮件传输代理的特定实例。至少需要在 sendmail.cf 文件中指定一个邮件程序。有关任务信息,请参阅第 2 章更改 sendmail 配置。本节对以下两种类型的邮件程序进行了简短说明。

有关邮件程序的其他信息,请参见 http://www.sendmail.org/m4/readme.html/etc/mail/cf/README

简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 邮件程序

SMTP 是在 Internet 中使用的标准邮件协议。此协议定义了以下邮件程序。

UNIX 对 UNIX 复制程序 (UNIX-to-UNIX Copy Program, UUCP) 邮件程序

应尽可能避免使用 UUCP。有关说明,请参阅 http://www.sendmail.org/m4/uucp_mailers.html 或在 /etc/mail/cf/README 中搜索以下字符串:USING UUCP MAILERS

UUCP 定义了以下邮件程序。

uucp-old

属于 $=U 类的名称将发送至 uucp-olduucp 是此邮件程序的废弃名称。uucp-old 邮件程序在头中使用叹号地址。

uucp-new

属于 $=Y 类的名称将发送至 uucp-new。如果知道接收 UUCP 邮件程序可在一次传输中管理多个收件人,请使用此邮件程序。suucp 是此邮件程序的废弃名称。uucp-new 邮件程序在头中也使用叹号地址。

如果配置中还指定了 MAILER(smtp),则还需定义另外两个邮件程序。

uucp-dom

此邮件程序使用域样式地址,并且基本上应用 SMTP 重写规则。

uucp-uudom

属于 $=Z 类的名称将发送至 uucp-uudomuucp-uudomuucp-dom 使用相同的头地址格式,即域样式地址。


注 - 由于 smtp 邮件程序会修改 UUCP 邮件程序,因此在 .mc 文件中应始终将 MAILER(smtp) 放在 MAILER(uucp) 的前面。


邮件地址

邮件地址包含邮件传送到的收件人和系统的名称。管理不使用名称服务的小型邮件系统时,对邮件进行寻址很容易。登录名可以唯一标识用户。如果管理的邮件系统中存在多个具有邮箱的系统,或者该邮件系统有一个或多个域,则情况会变得很复杂。如果与网络之外的服务器之间建立了 UUCP(或其他)邮件连接,则会进一步增加复杂性。以下各节中的信息有助于理解邮件地址的各个部分及其复杂性。

域和子域

电子邮件地址会使用域。是用于网络地址命名的目录结构。一个域可以包含一个或多个子域。地址的域和子域与文件系统的分层结构类似。正如我们认为子目录位于其上面的目录之内,同样可以认为邮件地址中的每个子域位于其右侧的位置之内。

下表显示了一些顶层域。

表 3-7 顶层域

说明
com
商业站点
edu
教育站点
gov
美国政府机构
mil
美国军事机构
net
联网组织
org
其他非赢利组织

域不区分大小写。在地址的域部分中,可以使用大写、小写或大小写混合的字母,而不会产生任何错误。

名称服务域名和邮件域名

使用名称服务域名和邮件域名时,请记住以下几点。

有关更多信息,请参阅sendmail 与名称服务的交互

邮件地址的典型格式

通常,邮件地址具有以下格式。有关详细信息,请参阅与路由无关的邮件地址

user@subdomain. ... .subdomain2.subdomain1.top-level-domain

@ 符号左侧的地址部分是本地地址。本地地址可以包含以下内容。


注 - 接收邮件程序负责确定地址的本地部分的含义。有关邮件程序的信息,请参阅邮件程序与 sendmail


@ 符号右侧的地址部分显示域的级别,它是本地地址驻留的位置。每个子域之间用点分隔。地址的域部分可以是一个组织、物理地区或地理区域。此外,域信息的顺序是分层的,即子域的本地性越明显,该子域距离 @ 符号越近。

与路由无关的邮件地址

邮件地址可以与路由无关。与路由无关的寻址要求电子邮件的发件人指定收件人的名称以及最终目标。高速网络(如 Internet)可使用与路由无关的地址。与路由无关的地址可以具有以下格式。

user@host.domain

用于 UUCP 连接的与路由无关的地址可以具有以下地址格式。

host.domain!user

随着计算机的域分层命名方案越来越受欢迎,与路由无关的地址也越来越普遍。实际上,最常见的与路由无关的地址会省略主机名,并依赖域名服务来正确识别电子邮件的最终目标。

user@domain

通过搜索 @ 符号可首先读取与路由无关的地址。然后,从右(最高层)向左(@ 符号右侧的地址中最具体的部分)读取域分层结构。

邮箱文件

邮箱是指作为电子邮件的最终目标的文件。邮箱的名称可以是用户名或特定功能的标识,如邮件管理员。邮箱位于 /var/mail/ username 文件中,该文件可以存在于用户的本地系统或远程邮件服务器上。在任一情况中,邮箱都位于邮件传送到的系统中。

应始终将邮件传送到本地文件系统,以便用户代理可从邮件缓冲池中提取邮件,并轻松将其存储在本地邮箱中。请勿使用已挂载 NFS 的文件系统作为用户邮箱的目标。具体来说,请勿将邮件定向至要从远程服务器挂载 /var/mail 文件系统的邮件客户机。在此情况下,应将用户的邮件发往邮件服务器而非客户机主机名。已挂载 NFS 的文件系统会导致在邮件传送和处理中出现问题。

/etc/mail/aliases 文件和名称服务(如 NIS)提供了为电子邮件地址创建别名的机制。因此,用户无需知道用户邮箱的准确本地名称。

下表显示了一些针对专用邮箱的常见命名约定。

表 3-8 针对邮箱名称格式的约定

格式
说明
username
用户名通常与邮箱名称相同。
Firstname. Lastname Firstname_ Lastname Firstinitial. Lastname Firstinitial_ Lastname
可将用户名标识为用点(或下划线)分隔名和姓的全名。或者,也可以通过用点(或下划线)分隔首字母和姓来标识用户名。
postmaster
用户可以向 postmaster 邮箱发送并报告邮件系统的问题。每个站点和域都应该有一个 postmaster 邮箱。
MAILER-DAEMON
sendmail 会自动将发往 MAILER-DAEMON 的所有邮件路由至邮件管理员。

aliasname-request

-request 结尾的名称是分发列表的管理地址。此地址应将邮件重定向至维护分发列表的人员。

owner-aliasname

owner- 开头的名称是分发列表的管理地址。此地址应将邮件重定向至处理邮件错误的人员。

owner-owner

当不存在错误返回到的 owner-aliasname 别名时,可使用此别名。此地址应将邮件重定向至处理邮件错误的人员。在维护大量别名的所有系统中,也都应定义此地址。
local %domain
百分比符号 (%) 用来标记邮件到达其目标时扩展的本地地址。大多数邮件系统都会将带有 % 符号的邮箱名称解释为完整邮件地址。% 将用 @ 替换,并相应地重定向邮件。尽管许多人都使用 % 约定,但此约定并不是正式标准。此约定称为 "percent hack"。通常可以使用此功能来帮助调试邮件问题。

sendmail 版本 8 开始,如果存在所有者别名,则发送至组别名的邮件的信封发件人地址将更改为由所有者别名扩展所得的地址。通过此更改,可将所有邮件错误都发送至别名所有者,而不是返回给发件人。进行此更改后,用户会注意到,在传送发送至别名的邮件时,邮件看似来自别名所有者。以下别名格式有助于解决与此更改关联的一些问题。

mygroup: :include:/pathname/mygroup.list
owner-mygroup: mygroup-request
mygroup-request: sandys, ignatz

在本示例中,mygroup 别名是组的实际邮件别名。owner-mygroup 别名用来接收错误消息。应将 mygroup-request 别名用于管理请求。此结构意味着,在发送至 mygroup 别名的邮件中,信封发件人地址会更改为 mygroup-request

邮件别名

别名是替代名称。对于电子邮件,可以使用别名来指定邮箱位置或定义邮件列表。有关任务列表,请参阅第 2 章管理邮件别名文件(任务列表)。另外,还可以参阅本章邮件别名文件

对于大型站点,邮件别名通常用来定义邮箱的位置。提供邮件别名类似于在有多个房间的大公司内为个人提供房间号作为地址的一部分。如果不提供房间号,邮件将传送至中心地址。如果没有房间号,则需要花费额外的精力来确定邮件传送到该建筑内的地址。因此,更容易出现错误。例如,在同一建筑内有两个人名为 Kevin Smith,则仅有其中一个人可获取该邮件。为改正此问题,每个 Kevin Smith 都应在其地址中添加一个房间号。

创建邮件列表时,请尽可能使用与域和位置无关的地址。要提高别名文件的可移植性和灵活性,请尽可能使邮件列表中的别名项可以通用并与系统无关。例如,如果域 example.com 中的系统 mars 上有一个名为 ignatz 的用户,则应创建别名 ignatz@example 而非 ignatz@mars。如果用户 ignatz 更改了其系统名称但仍处于 example 域中,则无需更新别名文件即可反映系统名称的更改。

创建别名项时,请在每一行中键入一个别名。应该仅有一项包含用户的系统名称。例如,可为用户 ignatz 创建以下各项。

ignatz: iggy.ignatz
iggyi: iggy.ignatz
iggy.ignatz: ignatz@mars

可为本地名称或域创建别名。例如,如果用户 fred 在系统 mars 中具有一个邮箱并且该用户位于 planets 域中,则 NIS 别名映射中可包含该用户的别名项。

fred: fred@planets

如果创建的邮件列表中包括域外面的用户,请使用用户名和域名来创建别名。例如,如果域 example.com 中的系统 privet 上有一个名为 smallberries 的用户,可创建别名为 smallberries@example.com。现在,向用户域之外发送邮件时,发件人的电子邮件地址会自动转换为全限定域名。

以下列表介绍了创建和管理邮件别名文件的方法。

硬件组件

可在同一系统中提供三种必需的邮件配置元素,也可通过单独的系统来提供这些元素。

当用户要与域之外的网络通信时,还必须添加第四个元素,即邮件网关。有关更多信息,请参阅邮件网关。以下各节介绍了每个硬件组件。

邮件主机

邮件主机是在网络中指定作为主邮件计算机的计算机。站点中的其他系统会将无法传送的邮件转发给邮件主机。通过在本地 /etc/hosts 文件中的 IP 地址右侧添加 mailhost 一词,可在 hosts 数据库中将某个系统指定为邮件主机。或者,也可以用类似的方法向名称服务的主机文件中添加 mailhost 一词。有关任务列表,请参阅第 2 章管理邮件别名文件(任务列表)

合适的候选邮件主机是配置作为您的网络和 Internet 全局网络之间的路由器的系统。有关更多信息,请参阅《在 Oracle Solaris 11.1 中使用 UUCP 和 PPP 管理串行网络》中的第 1  章 "Solaris PPP 4.0(概述)"《在 Oracle Solaris 11.1 中使用 UUCP 和 PPP 管理串行网络》中的第 10  章 "UUCP(概述)"《配置和管理 Oracle Solaris 11.1 网络》中的"配置 IPv4 路由器"。如果本地网络中没有系统具有调制解调器,请指定一个系统作为邮件主机。

有些站点在分时配置中会使用未联网的独立计算机。特别需要指出的是,独立计算机将为连接到其串行端口的终端提供服务。通过将独立系统指定为单系统网络的邮件主机,可为此配置设置电子邮件。“硬件组件概述”提供的图中显示了典型的电子邮件配置。

邮件服务器

邮箱是包含特定用户的电子邮件的单个文件。邮件会传送到用户邮箱驻留的系统,这可以是本地计算机或远程服务器。邮件服务器是可在其 /var/mail 目录中维护用户邮箱的任何系统。有关任务信息,请参阅第 2 章如何设置邮件服务器

邮件服务器会路由来自客户机的所有邮件。客户机发送邮件时,邮件服务器会将该邮件放入队列进行传送。邮件进入队列后,用户可以重新引导或关闭客户机,而不会丢失这些邮件。收件人从客户机获取邮件时,邮件的 From 行中的路径包含了邮件服务器的名称。如果收件人做出响应,该响应将转到用户的邮箱。合适的候选邮件服务器是为用户提供起始目录的系统或定期备份的系统。

如果邮件服务器不是用户的本地系统,则使用 NFS 软件的配置中的用户可以使用 /etc/vfstab 文件来挂载 /var/mail 目录,前提是用户具有 root 访问权限。或者,用户也可以使用自动挂载程序。如果未提供 NFS 支持,用户可以登录到服务器来阅读其邮件。

如果网络中的用户发送其他类型的邮件(如音频文件或来自桌面发布系统的文件),则需要在邮件服务器中为邮箱分配更多空间。

通过为所有邮箱建立一个邮件服务器,可以简化进行备份的过程。如果邮件分散在多个系统中,则很难进行备份。在一台服务器中存储许多邮箱的缺点是该服务器会成为许多用户的单点故障。但是,可提供良好备份的优点则通常值得冒这个风险。

邮件客户机

邮件客户机是一个在邮件服务器上具有邮箱的邮件服务用户。此外,邮件客户机在指向邮箱位置的 /etc/mail/aliases 文件中还具有邮件别名。有关任务信息,请参阅第 2 章如何设置邮件客户机

邮件网关

邮件网关是一台计算机,用于处理运行不同通信协议的网络之间的连接或在使用相同协议的不同网络之间进行通信。例如,邮件网关可能会将 TCP/IP 网络连接到运行系统网络体系结构 (Systems Network Architecture, SNA) 协议集的网络。

要设置的最简单的邮件网关是连接使用相同协议或邮件程序的两个网络的网关。此系统可以处理 sendmail 在域中无法根据其地址找到收件人的邮件。如果存在邮件网关,sendmail 将使用网关来发送和接收域外面的邮件。

可在使用不匹配邮件程序的两个网络之间设置邮件网关,如下图所示。要支持此配置,必须在邮件网关系统中定制 sendmail.cf 文件,这可能是一个很困难并且耗时的过程。

图 3-1 不同通信协议之间的网关

image:图中显示了使用不匹配邮件程序的两个邮件网关。

如果有一台计算机与 Internet 建立连接,则可将该计算机配置为邮件网关。配置邮件网关之前,请仔细考虑站点的安全需求。您可能需要在公司网络与其他网络之间创建防火墙网关,并将该网关设置为邮件网关。有关任务信息,请参阅第 2 章如何设置邮件网关