规划邮件系统
第13 章• 邮件服务(任务) 253
图13–2 采用UUCP连接的本地邮件配置
在此配置中,可以假定邮件客户机从邮件主机中的/var/mail 挂载其邮件文件。要设置此类
邮件配置,您需要满足以下条件:
在每个邮件客户机系统上提供缺省的/etc/mail/sendmail.cf 文件。此文件无需进行任
何编辑。
指定一台服务器为邮件主机。如果运行的是NIS 或NIS+,则可通过为邮件主机中的
/etc/hosts 文件添加mailhost.domain_name 来进行指定。如果运行的是其他名称服务
(如DNS 或LDAP),则必须在/etc/hosts 文件中提供其他信息。请参见第259 页中的
“如何设置邮件主机”。
如果使用的是NIS 或NIS+ 以外的名称服务,则需要匹配具有本地邮箱的任何系统上的
/etc/mail/aliases 文件。
邮件服务器的/var/mail 需要具有足够的空间来存储客户机邮箱。
有关设置邮件服务的任务信息,请参阅第255 页中的“设置邮件服务”。如果要查找与邮
件服务设置相关的特定过程,请参阅第254 页中的“设置邮件服务(任务列表)”。
设置邮件服务(任务列表)
下表介绍了设置邮件服务的过程。
任务说明参考
设置邮件服务器用于启用服务器以路由邮件的步骤第255 页中的“如何设置邮件服务器”
设置邮件客户机用于使用户接收邮件的步骤第257 页中的“如何设置邮件客户机”
设置邮件服务(任务列表)
254 系统管理指南:网络服务• 2006 年8 月
任务说明参考
设置邮件主机用于建立可解析电子邮件地址的邮件主
机的步骤
第259 页中的“如何设置邮件主机”
设置邮件网关用于管理与域外部网络之间的通信的步
骤
第261 页中的“如何设置邮件网关”
使用DNS 和sendmail 用于启用DNS 主机查找的步骤第262 页中的“如何使用DNS
和sendmail”
设置虚拟主机用于为主机指定多个IP 地址的步骤第263 页中的“设置虚拟主机”
设置邮件服务
如果站点不提供与公司外部的电子邮件服务的连接,或者公司位于单个域中,则您可以轻
松设置邮件服务。
对于本地邮件,邮件需要两种类型的配置。有关这些配置的说明,请参阅第253 页中的“
仅本地邮件”中的图13–1。对于与域外部网络之间的通信,邮件需要两种以上的配置。有
关这些配置的说明,请参阅第249 页中的“硬件组件概述”中的图12–1,或第253 页中的
“本地邮件和远程连接”中的图13–2。可以在同一系统上合并这些配置,也可以在不同系
统上提供这些配置。例如,如果邮件主机和邮件服务器功能位于同一系统上,请按照本节
中的指示将该系统设置为邮件主机。然后,按照本节中的指示将同一系统设置为邮件服务
器。
注– 以下用于设置邮件服务器和邮件客户机的过程在邮箱挂载了NFS 的情况下适用。但是,
邮箱通常保存在本地挂载的/var/mail 目录中,因此无需执行以下过程。
请参阅以下内容:
第255 页中的“如何设置邮件服务器”
第257 页中的“如何设置邮件客户机”
第259 页中的“如何设置邮件主机”
第261 页中的“如何设置邮件网关”
第262 页中的“如何使用DNS 和sendmail”
第263 页中的“设置虚拟主机”
如何设置邮件服务器
设置仅为本地用户提供邮件服务的邮件服务器时,无需采取任何特殊步骤。在口令文件或
名称空间中,必须包含用户项。另外,对于要传送的邮件,用户应具有用于检查
~/.forward 文件的本地起始目录。为此,通常会将起始目录服务器设置为邮件服务器。有
关邮件服务器的更多信息,请参阅第14 章中的第308 页中的“硬件组件”。
该邮件服务器可以路由许多邮件客户机的邮件。此类型的邮件服务器必须为客户机邮箱提
供足够的假脱机空间。
设置邮件服务
第13 章• 邮件服务(任务) 255
注– 首次传送消息时,mail.local 程序会自动在/var/mail 目录中创建邮箱。因此,无需为
邮件客户机创建单独的邮箱。
对于访问其邮箱的客户机,/var/mail 目录应可用于远程挂载。或者,可使用该服务器提供
的邮局协议(Post Office Protocol, POP) 或Internet 消息访问协议(Internet Message Access
Protocol, IMAP) 等服务。以下任务说明了如何通过/var/mail 目录设置邮件服务器。提供
POP 或IMAP 配置指南超出了本文档范围。
对于以下任务,请确保/etc/dfs/dfstab 文件会显示已导出/var/mail 目录。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
停止sendmail。
# svcadm -t disable network/smtp:sendmail
检查/var/mail 目录是否可用于远程访问。
# share
如果列出了/var/mail 目录,请转到步骤5。
如果未列出/var/mail 目录或没有显示列表,请继续执行相应的子步骤。
a. (可选的)如果未显示列表,请启动NFS 服务。
按照过程第78 页中的“如何设置自动文件系统共享”,使用/var/mail 目录启动NFS 服
务。
b. (可选的)如果列表中未包含/var/mail 目录,请将该目录添加到/etc/dfs/dfstab。
将以下命令行添加到/etc/dfs/dfstab 文件中。
share -F nfs -o rw /var/mail
使文件系统可进行挂载。
# shareall
确保已启动名称服务。
a. (可选的)如果运行的是NIS,请使用以下命令。
# ypwhich
有关更多信息,请参阅ypwhich(1) 手册页。
1
2
3
4
5
设置邮件服务
256 系统管理指南:网络服务• 2006 年8 月
b. (可选的)如果运行的是NIS+,请使用以下命令。
# nisls
有关更多信息,请参阅nisls(1) 手册页。
c. (可选的)如果运行的是DNS,请使用以下命令。
# nslookup hostname
hostname 使用您的主机名。
有关更多信息,请参阅nslookup(1M) 手册页。
d. (可选的)如果运行的是LDAP,请使用以下命令。
# ldaplist
有关更多信息,请参阅ldaplist(1) 手册页。
重新启动sendmail。
# svcadm enable network/smtp:sendmail
如何设置邮件客户机
邮件客户机是一个在邮件服务器上具有邮箱的邮件服务用户。此外,邮件客户机在指向邮
箱位置的/etc/mail/aliases 文件中还具有邮件别名。
注– 通过邮局协议(Post Office Protocol, POP) 或Internet 消息访问协议(Internet Message Access
Protocol, IMAP) 等服务,还可以执行邮件客户机设置任务。但是,提供POP 或IMAP 配置
指南超出了本文档范围。
成为邮件客户机系统的超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
停止sendmail。
# svcadm -t disable network/smtp:sendmail
6
1
2
设置邮件服务
第13 章• 邮件服务(任务) 257
确保邮件客户机系统上存在/var/mail 挂载点。
该挂载点应已在安装过程中创建。您可以使用ls 来确保此文件系统存在。以下示例显示了
在未创建此文件系统时收到的响应。
# ls -l /var/mail
/var/mail not found
确保/var/mail 目录中没有任何文件。
如果此目录中存在邮件文件,则应移动这些文件,以便在通过服务器挂载/var/mail 目录时
不会覆盖它们。
通过邮件服务器挂载/var/mail 目录。
您可以自动挂载或在引导时挂载该邮件目录。
a. (可选的)自动挂载/var/mail。
将如下所示的项添加到/etc/auto_direct 文件中。
/var/mail -rw,hard,actimeo=0 server:/var/mail
server 使用指定的服务器名。
b. (可选的)在引导时挂载/var/mail。
将以下项添加到/etc/vfstab 文件中。此项允许指定的邮件服务器中的/var/mail 目录
挂载本地/var/mail 目录。
server:/var/mail - /var/mail nfs - no rw,hard,actimeo=0
重新引导系统时,会自动挂载客户机邮箱。如果不重新引导系统,请键入以下命令挂载
客户机邮箱。
# mountall
注意– 为正常使用邮箱锁定和邮箱访问,必须在从NFS 服务器挂载邮件时包含actimeo=0
选项。
更新/etc/hosts。
编辑/etc/hosts 文件,并为邮件服务器添加项。如果使用名称服务,则无需此步骤。
# cat /etc/hosts
#
# Internet host table
#
3
4
5
6
设置邮件服务
258 系统管理指南:网络服务• 2006 年8 月
..
IP_address mailhost mailhost mailhost.example.com
IP_address 使用指定的IP 地址。
example.com 使用指定的域。
mailhost 使用指定的邮件主机。
有关更多信息,请参阅hosts(4) 手册页。
将客户机项添加到其中一个别名文件。
有关管理邮件别名文件的任务列表,请参阅第275 页中的“管理邮件别名文件(任务列
表)”。请注意,首次传送消息时,mail.local 程序会自动在/var/mail 目录中创建邮箱。
因此,无需为邮件客户机创建单独的邮箱。
重新启动sendmail。
# svcadm enable network/smtp:sendmail
如何设置邮件主机
邮件主机用于解析电子邮件地址并在域内重新路由邮件。合适的邮件主机候选系统是可为
网络提供远程连接或将网络连接到父域的系统。以下过程说明了如何设置邮件主机。
成为邮件主机系统的超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
停止sendmail。
# svcadm -t disable network/smtp:sendmail
验证主机名配置。
运行check-hostname 脚本,验证sendmail 是否可以识别此服务器的全限定主机名。
% /usr/sbin/check-hostname
hostname phoenix OK: fully qualified as phoenix.example.com
如果此脚本无法成功识别全限定主机名,则需要将该全限定主机名作为主机的第一个别名
添加到/etc/hosts 中。
7
8
1
2
3
设置邮件服务
第13 章• 邮件服务(任务) 259
更新/etc/hosts 文件
选择适合您的步骤。
a. (可选的)如果使用的是NIS 或NIS+,请在要作为新邮件主机的系统上编辑
/etc/hosts。
在IP 地址和邮件主机系统的系统名之后,添加单词mailhost 和mailhost.domain。
IP_address mailhost mailhost mailhost.domain loghost
IP_address 使用指定的IP 地址。
mailhost 使用邮件主机系统的系统名。
domain 使用扩展的域名。
现在,系统即被指定为邮件主机。domain 应与以下命令输出中指定为子域名的字符串相
同。
% /usr/lib/sendmail -bt -d0 Version 8.13.1+Sun
Compiled with: LDAPMAP MAP_REGEX LOG MATCHGECOS MIME7TO8 MIME8TO7
NAMED_BIND NDBM NETINET NETINET6 NETUNIX NEWDB NIS
NISPLUS QUEUE SCANF SMTP USERDB XDEBUG
============ SYSTEM IDENTITY (after readcf) ============
(short domain name) $w = phoenix
(canonical domain name) $j = phoenix.example.com
(subdomain name) $m = example.com
(node name) $k = phoenix
========================================================
有关hosts 文件应如何检查这些更改,请参见以下示例。
# cat /etc/hosts
#
# Internet host table
4
设置邮件服务
260 系统管理指南:网络服务• 2006 年8 月
#
172.31.255.255 localhost
192.168.255.255 phoenix mailhost mailhost.example.com loghost
b. (可选的)如果未使用NIS 或NIS+,请在网络中的所有系统上编辑/etc/hosts 文件。创
建以下项。
IP_address mailhost mailhost mailhost.domain loghost
重新启动sendmail。
# svcadm enable network/smtp:sendmail
测试邮件配置。
有关说明,请参见第292 页中的“如何测试邮件配置”。
注– 有关邮件主机的详细信息,请参见第14 章中的第308 页中的“硬件组件”。
如何设置邮件网关
邮件网关用于管理与域外部网络之间的通信。发送邮件网关中的邮件程序可以与接收系统
中的邮件程序匹配。
适合作为邮件网关的系统是指连接到以太网和电话线的系统,此外,还可以是配置为
Internet 路由器的系统。可以将邮件主机或其他系统配置为邮件网关。您可能会选择为域配
置多个邮件网关。如果使用UNIX 对UNIX 复制程序(UNIX-to-UNIX Copy Program, UUCP)
连接,则应将采用UUCP连接的系统配置为邮件网关。
成为邮件网关的超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
停止sendmail。
# svcadm -t disable network/smtp:sendmail
验证主机名配置。
运行check-hostname 脚本,验证sendmail 是否可以识别此服务器的全限定主机名。
# /usr/sbin/check-hostname
5
6
1
2
3
设置邮件服务
第13 章• 邮件服务(任务) 261
hostname phoenix OK: fully qualified as phoenix.example.com
如果此脚本无法成功识别全限定主机名,则需要将该全限定主机名作为主机的第一个别名
添加到/etc/hosts 中。如果需要有关此步骤的帮助,请参阅第259 页中的“如何设置邮件
主机”中的步骤4。
确保已启动名称服务。
a. (可选的)如果运行的是NIS,请使用以下命令。
# ypwhich
有关更多信息,请参阅ypwhich(1) 手册页。
b. (可选的)如果运行的是NIS+,请使用以下命令。
# nisls
有关更多信息,请参阅nisls(1) 手册页。
c. (可选的)如果运行的是DNS,请使用以下命令。
# nslookup hostname
hostname 使用您的主机名。
有关更多信息,请参阅nslookup(1M) 手册页。
d. (可选的)如果运行的是LDAP,请使用以下命令。
# ldaplist
有关更多信息,请参阅ldaplist(1) 手册页。
重新启动sendmail。
# svcadm enable network/smtp:sendmail
测试邮件配置。
有关说明,请参见第292 页中的“如何测试邮件配置”。
注– 有关邮件网关的更多信息,请参阅第14 章中的第308 页中的“硬件组件”。
如何使用DNS 和sendmail
DNS 名称服务不支持单个别名。此名称服务支持使用邮件交换器(Mail Exchanger, MX) 记录
和CNAME 记录的主机或域的别名。您可以在DNS 数据库中指定主机名、域名或同时指定这
两个名称。有关sendmail 和DNS 的更多信息,请参见第14 章中的第325 页中的
“sendmail 与名称服务的交互” 或参见《System Administration Guide: Naming and Directory
Services (DNS, NIS, and LDAP)》。
4
5
6
设置邮件服务
262 系统管理指南:网络服务• 2006 年8 月
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
启用DNS 主机查找(仅限NIS+)。
编辑/etc/nsswitch.conf 文件,并从包含dns 标志的hosts 定义中删除#。如下例所示,主
机项必须包含dns 标志,以便使用DNS 主机别名。
# grep hosts /etc/nsswitch.conf
#hosts: nisplus [NOTFOUND=return] files
hosts: dns nisplus [NOTFOUND=return] files
检查mailhost 和mailhost.domain 项。
使用nslookup 确保DNS 数据库中存在mailhost 和mailhost.domain 项。有关更多信息,请
参阅nslookup(1M) 手册页。
设置虚拟主机
如果需要为主机指定多个IP 地址,请参见以下Web 站点
:。此站点完整介绍了如何使用sendmail
设置虚拟主机。但是,在“Sendmail 配置”部分中,不会执行步骤3b,如以下所示。
# cdsend mail-VERSION/cf/cf
# ./Buildmailserver.cf
# cp mailserver.cf /etc/mail/sendmail.cf
相反,对于Solaris 操作系统,会执行以下步骤。
# cd/etc/mail/cf/cf
# /usr/ccs/bin/make mailserver.cf
# cp mailserver.cf /etc/mail/sendmail.cf
mailserver 使用.cf 文件的名称。
第264 页中的“生成sendmail.cf 配置文件”中将这相同的三个步骤作为生成过程的一部分
进行了概述。
生成/etc/mail/sendmail.cf 文件后,可以继续执行以下步骤创建虚拟用户表。
1
2
3
设置邮件服务
第13 章• 邮件服务(任务) 263
生成sendmail.cf 配置文件
第264 页中的“如何生成新的sendmail.cf 文件”说明了如何生成该配置文件。尽管您仍可
使用旧版本的sendmail.cf 文件,但最佳做法是使用新格式。
有关更多详细信息,请参阅以下内容。
/etc/mail/cf/README 完整说明了配置过程。
概述了有关sendmail 配置的信息。
第14 章中的第302 页中的“配置文件的版本”和第319 页中的“sendmail 配置文件”
提供了一些指南。
第342 页中的“sendmail 版本8.12 中新增和修订的m4 配置宏”也很有帮助。
如何生成新的sendmail.cf 文件
以下过程说明了如何生成新的配置文件。
注– /usr/lib/mail/cf/main-v7sun.mc 现在是/etc/mail/cf/cf/main.mc。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
停止sendmail。
# svcadm -t disable network/smtp:sendmail
复制要更改的配置文件。
# cd/etc/mail/cf/cf
# cp sendmail.mc myhost.mc
myhost 选择.mc 文件的新名称。
根据需要,编辑新配置文件(如myhost.mc)。
例如,添加以下命令行以启用域伪装。
# cat myhost.mc
..
MASQUERADE_AS(‘host.domain’)
host.domain 使用所需的主机名和域名。
1
2
3
4
生成sendmail.cf 配置文件
264 系统管理指南:网络服务• 2006 年8 月
在此示例中,MASQUERADE_AS 将已发送邮件标记为来自host.domain,而不是$j。
使用m4 生成配置文件。
# /usr/ccs/bin/make myhost.cf
使用-C 选项指定新文件,以测试新配置文件。
# /usr/lib/sendmail -C myhost.cf -v testaddr 当此命令显示消息时,将会向testaddr 发送一条消息。如果不重新启动系统中的sendmail
服务,则只能对外发邮件进行测试。对于尚未处理邮件的系统,请使用第292 页中的“如何
测试邮件配置”所介绍的完整测试过程。
复制原始配置文件后,安装新配置文件。
# cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.save
# cp myhost.cf /etc/mail/sendmail.cf
重新启动sendmail 服务。
# svcadm enable network/smtp:sendmail
设置SMTP以使用TLS
从Solaris 10 1/06 发行版开始,SMTP 可在sendmail 8.13 版中使用传输层安全性(Transport
Layer Security, TLS)。此服务面向SMTP 服务器和客户机,通过Internet 提供专用的、认证的
通信,并且可保护系统免受窃听者和攻击者的侵害。请注意,缺省情况下不会启用此服
务。
如何设置SMTP以使用TLS
以下过程使用样例数据说明如何设置证书,以便sendmail 使用TLS。有关更多信息,请参
见第330 页中的“sendmail 版本8.13 支持运行SMTP 时使用TLS”。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
停止sendmail。
# svcadm -t disable network/smtp:sendmail
5
6
7
8
1
2
设置SMTP 以使用TLS
第13 章• 邮件服务(任务) 265
设置相应证书,以便sendmail 使用TLS。
a. 完成以下命令:
# cd/etc/mail
# mkdir -p certs/CA
# cdcerts/CA
# mkdir certs crl newcerts private
# echo "01" > serial
# cp /dev/null index.txt
# cp /etc/sfw/openssl/openssl.cnf .
b. 使用您选择的文本编辑器,将openssl.cnf 文件中的dir 值从/etc/sfw/openssl 更改为
/etc/mail/certs/CA。
c. 使用openssl 命令行工具实现TLS。
请注意,以下命令行会生成交互式文本。
# openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem -days 365 \
-config openssl.cnf
Generating a 1024 bit RSA private key
.....................................++++++
.....................................++++++
writing new private key to ’private/cakey.pem’
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
3
设置SMTP 以使用TLS
266 系统管理指南:网络服务• 2006 年8 月
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ’.’, the field will be left blank.
-----
Country Name (2 letter code) []:US
State or Province Name (full name) []:California
Locality Name (eg, city) []:Menlo Park
Organization Name (eg, company) [Unconfigured OpenSSL Installation]:Sun Microsystems
Organizational Unit Name (eg, section) []:Solaris
Common Name (eg, YOUR name) []:somehost.somedomain.example.com
Email Address []:someuser@example.com
req 此命令用于创建和处理证书请求。
-new 此req 选项用于生成一个新的证书请求。
-x509 此req 选项用于创建一个自签名证书。
-keyout private/cakey.pem 此req 选项允许将private/cakey.pem 指定为新建的私钥
的文件名。
-out cacert.pem 此req 选项允许将cacert.pem 指定为输出文件。
-days 365 此req 选项允许确保证书有效期为365 天。缺省值为
30。
-config openssl.cnf 此req 选项允许将openssl.cnf 指定为配置文件。
请注意,此命令要求您提供以下信息:
Country Name,如US。
State or Province Name,如California。
Locality Name,如Menlo Park。
Organization Name,如Sun Microsystems。
Organizational Unit Name,如Solaris。
Common Name,该名称是计算机的全限定主机名。有关更多信息,请参见
check-hostname(1M) 手册页。
Email Address,如。
设置SMTP 以使用TLS
第13 章• 邮件服务(任务) 267
(可选的)如果需要新的安全连接,请创建新证书并使用证书颁发机构签名。
a. 创建新证书。
# cd/etc/mail/certs/CA
# openssl req -nodes -new -x509 -keyout newreq.pem -out newreq.pem -days 365 \
-config openssl.cnf
Generating a 1024 bit RSA private key
..............++++++
..............++++++
writing new private key to ’newreq.pem’
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ’.’, the field will be left blank.
-----
Country Name (2 letter code) []:US
State or Province Name (full name) []:California
Locality Name (eg, city) []:Menlo Park
Organization Name (eg, company) [Unconfigured OpenSSL Installation]:Sun Microsystems
Organizational Unit Name (eg, section) []:Solaris
Common Name (eg, YOUR name) []:somehost.somedomain.example.com
Email Address []:someuser@example.com
4
设置SMTP 以使用TLS
268 系统管理指南:网络服务• 2006 年8 月
此命令要求您提供的信息与步骤3c 中提供的信息相同。
请注意,在此示例中,证书和私钥位于文件newreq.pem 中。
b. 使用证书颁发机构对新证书进行签名。
# cd/etc/mail/certs/CA
# openssl x509 -x509toreq -in newreq.pem -signkey newreq.pem -out tmp.pem
Getting request Private Key
Generating certificate request
# openssl ca -config openssl.cnf -policy policy_anything -out newcert.pem -infiles tmp.pem
Using configuration from openssl.cnf
Enter pass phrase for /etc/mail/certs/CA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Jun 23 18:44:38 2005 GMT
Not After : Jun 23 18:44:38 2006 GMT
Subject:
countryName = US
stateOrProvinceName = California
localityName = Menlo Park
organizationName = Sun Microsystems
organizationalUnitName = Solaris
commonName = somehost.somedomain.example.com
设置SMTP 以使用TLS
第13 章• 邮件服务(任务) 269
emailAddress =
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
93:D4:1F:C3:36:50:C5:97:D7:5E:01:E4:E3:4B:5D:0B:1F:96:9C:E2
X509v3 Authority Key Identifier:
keyid:99:47:F7:17:CF:52:2A:74:A2:C0:13:38:20:6B:F1:B3:89:84:CC:68
DirName:/C=US/ST=California/L=Menlo Park/O=Sun Microsystems/OU=Solaris/\
serial:00
Certificate is to be certified until Jun 23 18:44:38 2006 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
# rm -f tmp.pem
在此示例中,文件newreq.pem 包含未签名证书和私钥。文件newcert.pem 包含已签名证
书。
x509 实用程序显示证书信息、将证书转换为各种格式以及对证书请求进行签名
设置SMTP 以使用TLS
270 系统管理指南:网络服务• 2006 年8 月
ca 应用程序用于对各种格式的证书请求进行签名以及生成CRL(certificate
revocation list,证书撤销列表)
在.mc 文件中添加以下行,以便sendmail 使用证书。
define(‘confCACERT_PATH’, ‘/etc/mail/certs’)dnl
define(‘confCACERT’, ‘/etc/mail/certs/CAcert.pem’)dnl
define(‘confSERVER_CERT’, ‘/etc/mail/certs/MYcert.pem’)dnl
define(‘confSERVER_KEY’, ‘/etc/mail/certs/MYkey.pem’)dnl
define(‘confCLIENT_CERT’, ‘/etc/mail/certs/MYcert.pem’)dnl
define(‘confCLIENT_KEY’, ‘/etc/mail/certs/MYkey.pem’)dnl
有关更多信息,请参见第331 页中的“用于在运行SMTP 时使用TLS 的配置文件选项”。
在/etc/mail 目录中重新生成并安装sendmail.cf 文件。
有关详细说明,请参见第264 页中的“生成sendmail.cf 配置文件”。
创建从使用openssl 创建的文件到.mc 文件中定义的文件的符号链接。
# cd/etc/mail/certs
# ln -s CA/cacert.pem CAcert.pem
# ln -s CA/newcert.pem MYcert.pem
# ln -s CA/newreq.pem MYkey.pem
为提高安全性,拒绝对MYkey.pem 的组和其他项目的读取权限。
# chmodgo-r MYkey.pem
使用符号链接将CA证书安装在指定给confCACERT_PATH 的目录中。
# C=CAcert.pem
# ln -s $C ‘openssl x509 -noout -hash < $C‘.0
为确保其他主机的邮件安全,安装相应的主机证书。
a. 将通过其他主机的confCACERT 选项定义的文件复制到
/etc/mail/certs/host.domain.cert.pem。
将host.domain 替换为其他主机的全限定主机名。
5
6
7
8
9
10
设置SMTP 以使用TLS
第13 章• 邮件服务(任务) 271
b. 使用符号链接将CA证书安装在指定给confCACERT_PATH 的目录中。
# C=host.domain.cert.pem
# ln -s $C ‘openssl x509 -noout -hash < $C‘.0
将host.domain 替换为其他主机的全限定主机名。
重新启动sendmail。
# svcadm enable network/smtp:sendmail
Received: 邮件头
以下是使用TLS 的安全邮件的Received: 头示例。
Received: from his.example.com ([IPv6:2001:db8:3c4d:15::1a2f:1a2b])
by her.example.com (8.13.4+Sun/8.13.4) with ESMTP id j2TNUB8i242496
(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK)
for <>; Tue, 29 Mar 2005 15:30:11 -0800 (PST)
Received: from her.example.com (her.city.example.com [192.168.0.0])
by his.example.com (8.13.4+Sun/8.13.4) with ESMTP id j2TNU7cl571102
version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK)
for <>; Tue, 29 Mar 2005 15:30:07 -0800 (PST)
请注意,verify 的值为OK,这表明验证成功。有关更多信息,请参见第333 页中的“用于
在运行SMTP 时使用TLS 的宏”。
以下OpenSSL 手册页:
openssl(1) ()。
req(1) ()。
x509(1) ()。
ca(1) ()。
11
示例13–1
另请参见
设置SMTP 以使用TLS
272 系统管理指南:网络服务• 2006 年8 月
使用备用配置管理邮件传送
为便于传入邮件和外发邮件的传输,sendmail 的新缺省配置使用了守护进程和客户机队列
运行器。如果已禁用守护进程,则应执行以下任务。有关详细说明,请参阅第338 页中的
“sendmail 版本8.12 中的配置文件submit.cf”。
如何使用sendmail.cf 的备用配置管理邮件传送
在sendmail 的缺省配置中,客户机队列运行器必须能够将邮件提交给本地SMTP 端口上的
守护进程。如果该守护进程没有侦听SMTP 端口,邮件将保留在队列中。要避免此问题,
请执行以下任务。有关守护进程和客户机队列运行器的更多信息,以及要了解可能必须使
用此备用配置的原因,请参阅第338 页中的“sendmail 版本8.12 中的配置文件
submit.cf”。
此过程可确保守护进程的运行仅用于接受来自本地主机的连接。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
停止sendmail。
# svcadm -t disable network/smtp:sendmail
复制要更改的配置文件。
# cd/etc/mail/cf/cf
# cp sendmail.mc myhost.mc
myhost 选择.mc 文件的新名称。
编辑新配置文件(例如,myhost.mc)。
在MAILER() 行前添加以下行。
# cat myhost.mc
..
FEATURE(‘no_default_msa’)dnl
DAEMON_OPTIONS(‘NAME=NoMTA4, Family=inet, Addr=127.0.0.1’)dnl
DAEMON_OPTIONS(‘Name=MSA4, Family=inet, Addr=127.0.0.1, Port=587, M=E’)dnl
1
2
3
4
使用备用配置管理邮件传送
第13 章• 邮件服务(任务) 273
注– 请在仅配置了IPv4 地址的计算机上使用这些配置宏。
a. (可选的)如果主机启用了IPv6 本地主机地址,请按如下所示编辑新配置文件。
在MAILER() 行前添加以下行。
# cat myhost.mc
..
FEATURE(‘no_default_msa’)dnl
DAEMON_OPTIONS(‘NAME=NoMTA4, Family=inet, Addr=127.0.0.1’)dnl
DAEMON_OPTIONS(‘Name=MSA4, Family=inet, Addr=127.0.0.1, Port=587, M=E’)dnl
DAEMON_OPTIONS(‘NAME=NoMTA6, Family=inet6, Addr=::1’)dnl
DAEMON_OPTIONS(‘Name=MSA6, Family=inet6, Addr=::1, Port=587, M=E’)dnl
注意– 要添加这些配置宏,必须配置IPv4 和IPv6 地址。
b. (可选的)要查看主机是否启用了IPv6 本地主机地址,请运行以下命令。
# /usr/sbin/ifconfig -a
如果启用了IPv6,将显示以下类似输出。
lo0: flags=2000849
mtu 8252 index 1
inet6 ::1/128
使用m4 生成配置文件。
# /usr/ccs/bin/make myhost.cf
复制原始配置文件后,安装新配置文件。
# cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.save
# cp myhost.cf /etc/mail/sendmail.cf
重新启动sendmail 服务。
# svcadm enable network/smtp:sendmail
5
6
7
使用备用配置管理邮件传送
274 系统管理指南:网络服务• 2006 年8 月
管理邮件别名文件(任务列表)
下表介绍了管理邮件别名文件的过程。有关本主题的更多信息,请参阅第14 章中的第320
页中的“邮件别名文件”。
任务说明参考
管理NIS+ mail_aliases 表中的别名项如果名称服务是NIS+,请使用这些过
程管理mail_aliases 表中的内容。
初始化NIS+ mail_aliases 表。
第276 页中的“如何初始化NIS+
mail_aliases 表”
列出NIS+ mail_aliases 表中的内容。
此过程包含有关如何列出单项以及如何
列出部分匹配项的示例。
第276 页中的“如何列出NIS+
mail_aliases 表中的内容。”
通过命令行向NIS+ mail_aliases 表添
加别名。
第277 页中的“如何通过命令行向
NIS+ mail_aliases 表添加别名”
通过编辑NIS+ mail_aliases 表添加
项。
第278 页中的“如何通过编辑NIS+
mail_aliases 表添加项”
编辑NIS+ mail_aliases 表中的项。
此过程包含有关如何删除项的示例。
第279 页中的“如何编辑NIS+
mail_aliases 表中的项”
设置NIS mail.aliases 映射如果名称服务是NIS,请按照以下说明
简化mail.aliases 映射的别名设置。
第280 页中的“如何设置NIS
mail.aliases 映射”
设置本地邮件别名文件如果未使用名称服务(如NIS 或
NIS+),请按照以下说明简化
/etc/mail/aliases 文件的别名设置。
第281 页中的“如何设置本地邮件别名
文件”
创建加密映射文件使用以下步骤可简化加密映射文件的别
名设置。
第282 页中的“如何创建加密映射文件
”
设置postmaster 别名使用本节中的过程可管理postmaster
别名。您必须使用此别名。
第283 页中的“管理postmaster 别名
”
管理邮件别名文件
邮件别名在域中必须唯一。本节介绍管理邮件别名文件的过程。或者,您可以使用Solaris
Management Console 的邮递列表功能,在别名数据库上执行这些任务。
另外,您还可以使用makemap 为本地邮件主机创建数据库文件。请参阅makemap(1M) 手册
页。使用这些数据库文件不会提供使用NIS 或NIS+ 等名称服务的所有优点。但是,由于不
涉及网络查找,因此可以更快地从这些本地数据库文件检索数据。有关更多信息,请参阅
第325 页中的“sendmail 与名称服务的交互”,以及第14 章中的第320 页中的“邮件别名
文件”。
管理邮件别名文件
第13 章• 邮件服务(任务) 275
请从以下过程中进行选择:
第276 页中的“如何初始化NIS+ mail_aliases 表”
第276 页中的“如何列出NIS+ mail_aliases 表中的内容。”
第277 页中的“如何通过命令行向NIS+ mail_aliases 表添加别名”
第278 页中的“如何通过编辑NIS+ mail_aliases 表添加项”
第279 页中的“如何编辑NIS+ mail_aliases 表中的项”
第280 页中的“如何设置NIS mail.aliases 映射”
第281 页中的“如何设置本地邮件别名文件”
第282 页中的“如何创建加密映射文件”
如何初始化NIS+ mail_aliases 表
您可以使用aliasadm 命令来管理NIS+ 表中的项。要创建表,请按照以下说明操作。有关更
多信息,请参阅aliasadm(1M) 手册页。
成为拥有该表的NIS+ 组的成员或邮件服务器的root,或者承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
初始化NIS+ 表。
# aliasadm -I
将项添加到该表中。
要添加两个或三个别名,请参阅第277 页中的“如何通过命令行向NIS+ mail_aliases
表添加别名”。
要添加两个或三个以上的别名,请参阅第278 页中的“如何通过编辑NIS+ mail_aliases
表添加项”。
如何列出NIS+ mail_aliases 表中的内容。
要查看该表中的完整内容列表,请按照以下说明操作。
成为拥有该表的NIS+ 组的成员或邮件服务器的root,或者承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
按别名字母顺序列出所有项。
# aliasadm -1
1
2
3
1
2
管理邮件别名文件
276 系统管理指南:网络服务• 2006 年8 月
有关更多信息,请参阅aliasadm(1M) 手册页。
列出NIS+ mail_aliases 表中的单项
或者,可以使用aliasadm 命令列出单项。完成此过程的第一步后,请键入以下内容:
# aliasadm -m ignatz
ignatz: # Alias for Iggy Ignatz
该命令仅会匹配完整的别名,而不会匹配部分字符串。不能将* 和? 等元字符与aliasadm
-m 一起使用。
列出NIS+ mail_aliases 表中的部分匹配项
另外,还可以使用aliasadm 命令列出部分匹配项。完成此过程的第一步后,请键入以下内
容:
# aliasadm -l | grep partial_string
将partial_string 替换为搜索所需的字符串。
如何通过命令行向NIS+ mail_aliases 表添加别名
要将两个或三个别名添加到该表中,请按照以下说明操作。如果要添加两个或三个以上的
别名,请参见第278 页中的“如何通过编辑NIS+ mail_aliases 表添加项”。
编辑各个邮件客户机、邮箱位置和邮件服务器系统名称的列表。
成为拥有该表的NIS+ 组的成员或邮件服务器的root,或者承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
(可选的)如有必要,请初始化NIS+ 表。
如果创建的是一个全新的NIS+ mail_aliases 表,则必须首先初始化该表。要完成此任务,
请参阅第276 页中的“如何初始化NIS+ mail_aliases 表”。
将别名添加到该表中。
请参见以下典型项示例。
# aliasadm -a iggy "Iggy Ignatz"
以下列表说明了上面示例的输入。
示例13–2
示例13–3
1
2
3
4
管理邮件别名文件
第13 章• 邮件服务(任务) 277
-a 用于添加别名的选项
iggy 别名的缩写
扩展的别名
"Iggy Ignatz" 使用引号的别名
显示创建的项并确保其正确。
# aliasadm -m alias
alias 创建的项
有关更多信息,请参阅aliasadm(1M) 手册页。
如何通过编辑NIS+ mail_aliases 表添加项
您可以使用aliasadm 命令来管理NIS+ 表中的项。要将两个或三个以上的别名添加到该表
中,请按照以下说明操作。
编辑各个邮件客户机、邮箱位置和邮件服务器系统名称的列表。
成为拥有该表的NIS+ 组的成员或邮件服务器的root,或者承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
显示并编辑该别名表。
# aliasadm -e
此命令将显示该表,并允许您对其进行编辑。所用的编辑器已使用$EDITOR 环境变量进行了
设置。如果未设置此变量,则vi 为缺省编辑器。
使用以下格式在单独一行中键入每个别名。
alias: expanded_alias # ["option" # "comments"]
alias 此列用于别名的缩写。
expanded_alias 此列用于扩展的别名。
option 此列保留供将来使用。
comments 此列用于有关单个别名的注释,如别名的名称。
如果将选项列保留为空,请键入一对空引号("") 并添加注释。
项的顺序对NIS+ mail_aliases 表并不重要。aliasadm -l 命令按字母顺序对列表进行排序
并显示项。
5
1
2
3
4
管理邮件别名文件
278 系统管理指南:网络服务• 2006 年8 月
有关更多信息,请参阅第320 页中的“邮件别名文件”和aliasadm(1M) 手册页。
如何编辑NIS+ mail_aliases 表中的项
要编辑该表中的项,请按照以下说明操作。
成为拥有该表的NIS+ 组的成员或邮件服务器的root,或者承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
显示别名项。
# aliasadm -m alias
将alias 替换为指定的别名。
根据需要编辑别名项。
# aliasadm -c alias expanded_alias [options comments]
alias 如有必要,编辑别名。
expanded_alias 如有必要,编辑扩展的别名。
options 如有必要,编辑选项。
comments 如有必要,编辑此项的注释。
有关更多信息,请参阅aliasadm(1M) 手册页以及第320 页中的“邮件别名文件”。
显示编辑的项并确保其正确。
# aliasadm -m alias
有关更多信息,请参阅aliasadm(1M) 手册页。
删除NIS+ mail_aliases 表中的项
要删除该表中的项,请在完成此过程的第一步后使用以下语法:
# aliasadm -d alias
将alias 替换为要删除的项的别名。
1
2
3
4
示例13–4
管理邮件别名文件
第13 章• 邮件服务(任务) 279
如何设置NIS mail.aliases 映射
使用以下过程可简化NIS mail.aliases 映射的别名设置。
编辑各个邮件客户机、邮箱位置和邮件服务器系统名称的列表。
成为NIS 主服务器的root 或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“ Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
编辑/etc/mail/aliases 文件,并创建以下项。
a. 为每台邮件客户机添加项。
# cat /etc/mail/aliases
..
alias:expanded_alias
alias 使用缩写的别名。
expanded_alias 使用扩展的别名()。
b. 确保具有Postmaster: root 项。
# cat /etc/mail/aliases
..
Postmaster: root
c. 为root 添加别名。使用指定为邮寄主管的人员的邮件地址。
# cat /etc/mail/aliases
..
root:
使用指定的邮寄主管的指定地址。
确保NIS 主服务器正在运行名称服务,以解析每台邮件服务器上的主机名。
转至/var/yp 目录。
# cd/var/yp
1
2
3
4
5
管理邮件别名文件
280 系统管理指南:网络服务• 2006 年8 月
应用make 命令。
# make
/etc/hosts 和/etc/mail/aliases 文件的更改将传播到NIS 从属系统。这些更改至多仅在几
分钟后便会生效。
如何设置本地邮件别名文件
使用以下过程可解析本地邮件别名文件的别名。
编辑各个用户及其邮箱位置的列表。
成为邮件服务器的root 或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
编辑/etc/mail/aliases 文件,并创建以下项。
a. 为每个用户添加项。
user1:
user1 使用新别名。
使用新别名的实际地址。
b. 确保具有Postmaster: root 项。
# cat /etc/mail/aliases
..
Postmaster: root
c. 为root 添加别名。使用指定为邮寄主管的人员的邮件地址。
# cat /etc/mail/aliases
..
root:
使用指定的邮寄主管的指定地址。
重新生成别名数据库。
# newaliases
6
1
2
3
4
管理邮件别名文件
第13 章• 邮件服务(任务) 281
/etc/mail/sendmail.cf 中AliasFile 选项的配置可确定此命令是以二进制格式生成单个文件
/etc/mail/aliases.db,还是生成文件对/etc/mail/aliases.dir 和
/etc/mail/aliases.pag。
执行以下步骤之一,复制生成的文件。
a. (可选的)将/etc/mail/aliases、/etc/mail/aliases.dir 和/etc/mail/aliases.pag 文
件复制到其他各个系统中。
您可以使用rcp 或rdist 命令复制这三个文件。有关更多信息,请参阅rcp(1) 手册页或
rdist(1) 手册页。或者,可以为此创建脚本。
复制这些文件时,无需在其他各个系统上都运行newaliases 命令。但是请记住,每次添
加或删除邮件客户机时,必须更新所有/etc/mail/aliases 文件。
b. (可选的)将/etc/mail/aliases 和/etc/mail/aliases.db 文件复制到其他各个系统
中。
您可以使用rcp 或rdist 命令复制这些文件。有关更多信息,请参阅rcp(1) 手册页或
rdist(1) 手册页。或者,可以为此创建脚本。
复制这些文件时,无需在其他各个系统上都运行newaliases 命令。但是请记住,每次添
加或删除邮件客户机时,必须更新所有/etc/mail/aliases 文件。
如何创建加密映射文件
要创建加密映射文件,请按照以下说明操作。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
创建输入文件。
项可以使用以下语法。
error:nouser No such user here
@olddomain.com
使用以前指定的用户名以及新指定的域。
使用新指定的地址。
使用以前指定的用户名及域。
5
1
2
管理邮件别名文件
282 系统管理指南:网络服务• 2006 年8 月
olddomain.com 使用以前指定的域。
newdomain.com 使用新指定的域。
第一项将邮件重定向到新别名。下一项在使用的别名错误时创建一条消息。最后一项将所
有传入邮件从olddomain 重定向到newdomain。
创建数据库文件。
# /usr/sbin/makemap maptype newmap < newmap
maptype 选择数据库类型,如dbm、btree 或hash。
newmap 使用输入文件名称以及数据库文件名称的第一部分。如果选择dbm 数据库类
型,则会使用.pag 和.dir 后缀创建数据库文件。对于其他两种数据库类型,文
件名后跟.db。
管理postmaster 别名
每个系统都必须能够将邮件发送到postmaster 邮箱。您可以为postmaster 创建NIS 或NIS+
别名,也可在每个本地/etc/mail/aliases 文件中创建该别名。请参阅以下过程。
第283 页中的“如何在每个本地/etc/mail/aliases 文件中创建postmaster 别名”
第284 页中的“如何为postmaster 创建单独的邮箱”
第284 页中的“如何为/etc/mail/aliases 文件中的别名添加postmaster 邮箱”
如何在每个本地/etc/mail/aliases 文件中创建postmaster 别名
如果要在每个本地/etc/mail/aliases 文件中创建postmaster 别名,请按照以下说明操作。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
查看/etc/mail/aliases 项。
# cat /etc/mail/aliases
# Following alias is required by the mail protocol, RFC 2821
# Set it to the address of a HUMAN who deals with this system’s
# mail problems.
Postmaster: root
3
1
2
管理邮件别名文件
第13 章• 邮件服务(任务) 283
编辑每个系统的/etc/mail/aliases 文件。
将root 更改成指定为邮寄主管的人员的邮件地址。
Postmaster: mail_address
mail_address 使用指定为邮寄主管的人员的指定地址。
(可选的)为邮寄主管创建单独的邮箱。
可以为邮寄主管创建单独的邮箱,以便将邮寄主管邮件与个人邮件分开。如果创建单独的
邮箱,请在编辑/etc/mail/aliases 文件时使用该邮箱地址,而不要使用邮寄主管的个人邮
件地址。有关详细信息,请参阅第284 页中的“如何为postmaster 创建单独的邮箱”。
如何为postmaster 创建单独的邮箱
如果要为postmaster 创建单独的邮箱,请按照以下说明操作。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
为指定为postmaster 的人员创建用户帐户。在口令字段中放置一个星号(*)。
有关添加用户帐户的详细信息,请参阅《System Administration Guide: Basic
Administration》中的第5 章,“Managing User Accounts and Groups (Tasks)”。
完成邮件传送后,启用mail 程序读取和写入邮箱名称。
# mail -f postmaster
postmaster 使用指定的地址。
如何为/etc/mail/aliases 文件中的别名添加postmaster 邮箱
如果要为/etc/mail/aliases 文件中的别名添加postmaster 邮箱,请按照以下说明操作。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
为root 添加别名。使用指定为邮寄主管的人员的邮件地址。
# cat /etc/mail/aliases
..
3
4
1
2
3
1
2
管理邮件别名文件
284 系统管理指南:网络服务• 2006 年8 月
root:
使用指定为邮寄主管的人员的指定地址。
在邮寄主管本地系统的/etc/mail/aliases 文件中,创建一个定义别名名称的项。以
sysadmin 为例。另外,还在其中包含指向本地邮箱的路径。
# cat /etc/mail/aliases
..
sysadmin: /usr/somewhere/somefile
sysadmin 为新别名创建名称。
/usr/somewhere/somefile 使用指向本地邮箱的路径。
重新生成别名数据库。
# newaliases
管理队列目录(任务列表)
下表介绍了管理邮件队列的过程。
任务说明参考
显示邮件队列/var/spool/mqueue 的内
容
使用此过程可查看队列中的消息数,以
及从队列中清除消息的速度。
第286 页中的“如何显示邮件队列
/var/spool/mqueue 的内容”
强制对邮件队列/var/spool/mqueue 进
行邮件队列处理
使用此过程可处理向以前无法接收消息
的系统发送的消息。
第286 页中的“如何在邮件队列
/var/spool/mqueue 中强制进行邮件队
列处理”
运行邮件队列/var/spool/mqueue 的子
集
使用此过程可强制处理地址子串(如主
机名)。另外,使用此过程还可强制处
理队列中的特定消息。
第287 页中的“如何运行邮件队列
/var/spool/mqueue 的子集”
移动邮件队列/var/spool/mqueue 使用此过程可移动该邮件队列。第287 页中的“如何移动邮件队列
/var/spool/mqueue”
运行旧邮件队列/var/spool/omqueue 使用此过程可运行旧邮件队列。第288 页中的“如何运行旧邮件队列
/var/spool/omqueue”
3
4
管理队列目录(任务列表)
第13 章• 邮件服务(任务) 285
管理队列目录
本节介绍了一些有助于队列管理的任务。有关仅客户机适用的队列的信息,请参阅第338
页中的“sendmail 版本8.12 中的配置文件submit.cf”。有关其他相关信息,可以参阅第347
页中的“sendmail 版本8.12 中新增的队列功能”。
请参阅以下内容:
第286 页中的“如何显示邮件队列/var/spool/mqueue 的内容”
第286 页中的“如何在邮件队列/var/spool/mqueue 中强制进行邮件队列处理”
第287 页中的“如何运行邮件队列/var/spool/mqueue 的子集”
第287 页中的“如何移动邮件队列/var/spool/mqueue”
第288 页中的“如何运行旧邮件队列/var/spool/omqueue”
如何显示邮件队列/var/spool/mqueue 的内容
显示队列中的消息数以及从队列中清除消息的速度。
键入以下命令:
# /usr/bin/mailq | more
此命令将提供以下信息。
队列ID
消息大小
消息进入队列的日期
消息状态
发件人和收件人
另外,此命令还会立即检查授权属性solaris.admin.mail.mailq。如果检查成功,将执行与
使用sendmail 指定-bp 标志等效的操作。如果检查失败,则会列显一条错误消息。缺省情
况下,对所有用户均会启用此授权属性。通过修改prof_attr 中的用户项,可以禁用该授权
属性。有关更多信息,请参阅prof_attr(4) 和mailq(1) 手册页。
如何在邮件队列/var/spool/mqueue 中强制进行邮
件队列处理
例如,使用此过程可处理向以前无法接收消息的系统发送的消息。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
◗
1
管理队列目录
286 系统管理指南:网络服务• 2006 年8 月
强制进行队列处理,并在清空队列时显示作业进度。
# /usr/lib/sendmail -q -v
如何运行邮件队列/var/spool/mqueue 的子集
例如,使用此过程可强制处理地址子串(如主机名)。另外,使用此过程还可强制处理队
列中的特定消息。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
使用-qRstring 随时运行该邮件队列的子集。
# /usr/lib/sendmail -qRstring
string 使用收件人别名或 的子串(如主机名)。
或者,可使用-qInnnnn 运行该邮件队列的子集。
# /usr/lib/sendmail -qInnnnn
nnnnn 使用队列ID。
如何移动邮件队列/var/spool/mqueue
如果要移动该邮件队列,请按照以下说明操作。
成为邮件主机的root 或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
中止sendmail 守护进程。
# svcadm disable network/smtp:sendmail
现在,sendmail 将不再处理该队列目录。
转至/var/spool 目录。
# cd/var/spool
2
1
2
1
2
3
管理队列目录
第13 章• 邮件服务(任务) 287
将目录mqueue 及其所有内容移动到omqueue 目录中。然后,创建一个名为mqueue 的新的空
目录。
# mv mqueue omqueue; mkdir mqueue
将该目录权限按属主设置为读取/写入/执行,按组设置为读取/执行。另外,将属主和组设
置为daemon。
# chmod750 mqueue; chown root:bin mqueue
启动sendmail。
# svcadm enable network/smtp:sendmail
如何运行旧邮件队列/var/spool/omqueue
要运行旧邮件队列,请按照以下说明操作。
成为root 或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
运行该旧邮件队列。
# /usr/lib/sendmail -oQ/var/spool/omqueue -q
-oQ 标志用于指定备用队列目录。-q 标志用于指示运行该队列中的所有作业。如果要在屏幕
中显示详细输出,请使用-v 标志。
删除该空目录。
# rmdir /var/spool/omqueue
管理.forward 文件(任务列表)
下表介绍了管理.forward 文件的过程。有关更多信息,请参阅第14 章中的第322 页中的
“.forward 文件”。
任务说明参考
禁用.forward 文件例如,如果要阻止自动转发,请使用此
过程。
第289 页中的“如何禁用.forward 文
件”
4
5
6
1
2
3
管理.forward 文件(任务列表)
288 系统管理指南:网络服务• 2006 年8 月
任务说明参考
更改.forward 文件搜索路径例如,如果要将所有.forward 文件移
动到公用目录中,请使用此过程。
第290 页中的“如何更改.forward-文
件搜索路径”
创建和填充/etc/shells 通过此过程,用户可使用.forward 文
件将邮件转发到程序或文件。
第290 页中的“如何创建和填充
/etc/shells”
管理.forward 文件
本节介绍了与.forward 文件管理相关的若干过程。由于用户可以编辑这些文件,因此可能
导致出现问题。有关更多信息,请参阅第14 章中的第322 页中的“.forward 文件”。
请参阅以下过程:
第289 页中的“如何禁用.forward 文件”
第290 页中的“如何更改.forward-文件搜索路径”
第290 页中的“如何创建和填充/etc/shells”
如何禁用.forward 文件
此过程用于阻止自动转发,可禁用特定主机的.forward 文件。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
复制/etc/mail/cf/domain/solaris-generic.m4 或站点特定的域m4 文件。
# cd/etc/mail/cf/d omain
# cp solaris-generic.m4 mydomain.m4
mydomain 使用选择的文件名。
在刚创建的文件中添加以下行。
define(‘confFORWARD_PATH’,‘’)dnl
如果m4 文件中已存在confFORWARD_PATH 的值,请将该值替换为该空值。
生成并安装新的配置文件。
如果需要有关此步骤的帮助信息,请参阅第264 页中的“如何生成新的sendmail.cf 文件
”。
1
2
3
4
管理.forward 文件
第13 章• 邮件服务(任务) 289
注– 编辑.mc 文件时,请记住将DOMAIN(‘solaris-generic’) 更改为DOMAIN(‘mydomain’)。
如何更改.forward-文件搜索路径
例如,如果要将所有.forward 文件放置在公用目录中,请按照以下说明操作。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
复制/etc/mail/cf/domain/solaris-generic.m4 或站点特定的域m4文件。
# cd/etc/mail/cf/d omain
# cp solaris-generic.m4 mydomain.m4
mydomain 使用选择的文件名。
在刚创建的文件中添加以下行。
define(‘confFORWARD_PATH’,‘$z/.forward:/var/forward/$u’)dnl
如果m4 文件中已存在confFORWARD_PATH 的值,请将其替换为该新值。
生成并安装新的配置文件。
如果需要有关此步骤的帮助信息,请参阅第264 页中的“如何生成新的sendmail.cf 文件
”。
注– 编辑.mc 文件时,请记住将DOMAIN(‘solaris-generic’) 更改为DOMAIN(‘mydomain’)。
如何创建和填充/etc/shells
此文件未包含在标准发行版中。如果要允许用户使用.forward 文件将邮件转发到程序或文
件,则必须添加该文件。您可以通过使用grep 标识口令文件中列出的所有shell,手动创建
该文件。然后,可将这些shell 键入到文件中。但是,使用可下载脚本的以下过程更易于使
用。
下载相应脚本。
1
2
3
4
1
管理.forward 文件
290 系统管理指南:网络服务• 2006 年8 月
成为root 或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Security Services》中的“Configuring RBAC (Task Map)”。有关如何使用
主管理员配置文件配置角色,请参见《System Administration Guide: Basic Administration》中
的第2 章,“WorkingWith the Solaris Management Console (Tasks)”。
要生成shell 列表,请运行gen-etc-shells 脚本。
# ./gen-etc-shells.sh > /tmp/shells
此脚本使用getent 命令收集/etc/nsswitch.conf 中列出的口令文件源所包含的shell 名称。
检查并编辑/tmp/shells 中的shell 列表。
使用您选择的编辑器,删除不包含的所有shell。
将文件移动到/etc/shells。
# mv /tmp/shells /etc/shells
邮件服务疑难解答过程和技巧(任务列表)
下表介绍了邮件服务疑难解答过程和技巧。
任务说明参考
测试邮件配置用于测试对sendmail 配置文件的更改
的步骤
第292 页中的“如何测试邮件配置”
检查邮件别名用于确认是否能将邮件传送到指定收件
人的步骤
第292 页中的“如何检查邮件别名”
测试规则集用于检查sendmail 规则集的输入和返
回的步骤
第293 页中的“如何测试sendmail 规
则集”
验证与其他系统的连接用于验证与其他系统的连接的技巧第295 页中的“如何验证与其他系统的
连接”
使用syslogd 程序记录消息用于收集错误消息信息的技巧第295 页中的“记录错误消息”
检查其他源的诊断信息用于从其他源获取诊断信息的技巧第296 页中的“邮件诊断信息的其他源
”
2
3
4
5
邮件服务疑难解答过程和技巧(任务列表)
第13 章• 邮件服务(任务) 291
邮件服务疑难解答过程和技巧
本节介绍了一些可用于解决邮件服务问题的过程和技巧。
如何测试邮件配置
要测试对配置文件所做的更改,请按照以下说明操作。
在包含已修订的配置文件的任何系统上重新启动sendmail。
# svcadm refresh network/smtp:sendmail
从各个系统发送测试消息。
# /usr/lib/sendmail -v names names 指定收件人的电子邮件地址。
此命令会向指定的收件人发送一条空消息,并在监视器上显示该消息的活动。
通过将该消息发送至常规用户名,向您自己或本地系统中的其他人发送邮件。
(可选的)如果已连接到网络,请按三个方向将邮件发送到其他系统中的某个用户。
从主系统到客户机系统
从客户机系统到主系统
从一台客户机系统到另一台客户机系统
(可选的)如果具有邮件网关,请将邮件从邮件主机发送到其他域,以确保中继邮件程序
和主机的配置正确。
(可选的)如果通过电话线设置了与另一台主机的UUCP 连接,请将邮件发送到该主机的某
个用户,并要求该用户回复邮件或在收到消息时与您联系。
要求某用户通过UUCP 连接向您发送邮件。
由于sendmail 程序会将消息传递给UUCP进行传送,因此该程序无法检测消息是否已传
送。
通过不同系统将消息发送到postmaster,并确保消息传送到邮寄主管的邮箱。
如何检查邮件别名
以下示例说明了如何验证别名。
1
2
3
4
5
6
7
8
邮件服务疑难解答过程和技巧
292 系统管理指南:网络服务• 2006 年8 月
% mconnect
connecting to host localhost (127.0.0.1), port 25
connection open
220 your.domain.com ESMTP Sendmail 8.13.6+Sun/8.13.6; Tue, 12 Sep 2004 13:34:13 -0800 (PST)
expn sandy
250 2.1.5 <>
quit
221 2.0.0 your.domain.com closing connection
%
在此示例中,mconnect 程序打开了一个与本地主机上的邮件服务器的连接,并允许您测试
该连接。该程序以交互方式运行,因此可以发出各种诊断命令。有关完整说明,请参见
mconnect(1) 手册页。项expn sandy 提供了扩展地址。因此,您
已验证了使用别名sandy 时可以传送邮件。
使用本地范围和域范围的别名时,请记住避免产生循环和不一致的数据库。尤其要注意,
在系统之间移动用户时应避免创建别名循环。
如何测试sendmail 规则集
要检查sendmail 规则集的输入和返回,请按照以下说明操作。
更改为地址测试模式。
# /usr/lib/sendmail -bt
测试邮件地址。
在最后一个提示符(>) 下提供以下数字和地址。
> 3,0 mail_address
mail_address 使用要测试的邮件地址。
结束会话。
按Control-D 组合键。
1
2
3
邮件服务疑难解答过程和技巧
第13 章• 邮件服务(任务) 293
地址测试模式输出
以下是地址测试模式的输出示例。
% /usr/lib/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter
> 3,0
canonify input: sandy @ phoenix
Canonify2 input: sandy < @ phoenix >
Canonify2 returns: sandy < @ phoenix . example . com . >
canonify returns: sandy < @ phoenix . example . com . >
parse input: sandy < @ phoenix . example . com . >
Parse0 input: sandy < @ phoenix . example . com . >
Parse0 returns: sandy < @ phoenix . example . com . >
ParseLocal input: sandy < @ phoenix . example . com . >
ParseLocal returns: sandy < @ phoenix . example . com . >
Parse1 input: sandy < @ phoenix . example . com . >
MailerToTriple input: < mailhost . phoenix . example . com >
sandy < @ phoenix . example . com . >
MailerToTriple returns: $# relay $@ mailhost . phoenix . example . com
$: sandy < @ phoenix . example . com . >
Parse1 returns: $# relay $@ mailhost . phoenix . example . com
$: sandy < @ phoenix . example . com . >
parse returns: $# relay $@ mailhost . phoenix . example . com
$: sandy < @ phoenix . example . com . >
示例13–5
邮件服务疑难解答过程和技巧
294 系统管理指南:网络服务• 2006 年8 月
如何验证与其他系统的连接
mconnect 程序打开一个与指定主机上邮件服务器的连接,并允许您测试该连接。该程序以
交互方式运行,因此可以发出各种诊断命令。有关完整说明,请参见mconnect(1) 手册页。
以下示例确认发送到用户名sandy 的邮件是可传送的。
% mconnect phoenix
connecting to host phoenix (172.31.255.255), port 25
connection open
220 phoenix.example.com ESMTP Sendmail 8.13.1+Sun/8.13.1; Sat, 4 Sep 2004 3:52:56 -0700
expn sandy
250 2.1.5 <>
quit
如果无法使用mconnect 连接到某个SMTP 端口,请检查以下情况。
系统负载是否太高?
sendmail 守护进程是否正在运行?
系统是否具有相应的/etc/mail/sendmail.cf 文件?
sendmail 使用的端口25 是否处于活动状态?
记录错误消息
邮件服务使用syslogd 程序记录大多数错误消息。缺省情况下,syslogd 程序会将这些消息
发送到一个称为loghost 的系统,该系统可在/etc/hosts 文件中指定。可以将loghost 定义
为保存整个NIS 域的所有日志。如果未指定loghost,则不会报告syslogd 中的错误消息。
/etc/syslog.conf 文件用于控制syslogd 程序转发消息的位置。可以通过编辑
/etc/syslog.conf 文件来更改缺省配置。为使所有更改生效,必须重新启动syslog 守护进
程。要收集有关邮件的信息,可在该文件中添加以下选项。
mail.alert -有关应立即修复的情况的消息
mail.crit -关键消息
mail.warning -警告消息
mail.notice -并非错误,但可能需要注意的消息
mail.info -提示性消息
mail.debug -调试消息
邮件服务疑难解答过程和技巧
第13 章• 邮件服务(任务) 295
/etc/syslog.conf 文件中的以下项会将所有关键消息、提示性消息和调试消息的副本发送
到/var/log/syslog。
mail.crit;mail.info;mail.debug /var/log/syslog
在系统日志中,每一行都包含时间标记、生成该行的系统名称以及消息。syslog 文件可以
记录大量信息。
该日志按级别顺序进行排列。在最低级别,仅记录异常情况。在最高级别,即使最普通和
最不受关注的事件也会被记录。根据约定,10 以下的日志级别被视为“有用”级别。10 以上
的日志级别通常用于调试。有关loghost 和syslogd 程序的信息,请参见《System
Administration Guide: Advanced Administration》中的“Customizing System Message Logging”。
邮件诊断信息的其他源
对于其他诊断信息,请检查以下源。
查看消息头中的Received 行。这些行跟踪中继消息时消息所采用的路由。请记住考虑时
区差异。
查看MAILER-DAEMON 中的消息。这些消息通常会报告传送问题。
检查记录系统组传送问题的系统日志。sendmail 程序始终在系统日志中记录其活动。您
可能需要修改crontab 文件,以便在夜间运行shell 脚本。该脚本在日志中搜索SYSERR 消
息,并将找到的任何消息发送到邮寄主管。
使用mailstats 程序测试邮件类型,并确定传入消息和外发消息的数量。
解析错误消息
本节介绍了如何解析一些与sendmail 相关的错误消息。此外,还可参阅
。
以下错误消息包含两种或多种以下类型的信息。
原因:何种情况可能会导致出现该消息
说明:出现错误消息时用户正在执行哪些操作
解决方案:采取何种措施可解决问题或继续工作
451 timeout waiting for input during source
原因: 当sendmail 从可能超时的任何源(如SMTP连接)进行读取时,该程序会在开始读
取之前将计时器设置为各种Timeout 选项的值。如果在计时器到期之前没有完成读取,
则会出现此消息并且停止读取。通常,这种情况发生在RCPT 过程中。然后,该邮件在队
列中排队以便以后传送。
解析错误消息
296 系统管理指南:网络服务• 2006 年8 月
解决方法: 如果经常显示此消息,请增大/etc/mail/sendmail.cf 文件中各种Timeout 选项
的值。如果已将计时器设置为一个较大的数字,请查找硬件问题(如网络线路或连接不
正确)。
550 hostname... Host unknown
原因: 此sendmail 消息表明,在域名系统(Domain Name System, DNS) 查找过程中,找不
到通过at 符号(@) 后面的地址部分指定的目标主机计算机。
解决方法: 使用nslookup 命令验证在该域或其他域中是否存在此目标主机,可能是由于拼
写有所不同。否则,请与预定收件人联系并请求正确的地址。
550 username... User unknown
原因: 此sendmail 消息表明,在目标主机计算机上,找不到通过at 符号(@) 前面的地址部
分指定的预定收件人。
解决方法: 检查该电子邮件地址并重试,可能是由于拼写有所不同。如果此修正方法无
效,请与预定收件人联系并请求正确的地址。
554 hostname... Local configuration error
原因: 此sendmail 消息通常表明,本地主机正尝试向其本身发送邮件。
解决方法: 检查/etc/mail/sendmail.cf 文件中的$j 宏的值,确保该值为全限定域名。
描述: 当发送系统在SMTPHELO 命令中将其主机名提供给接收系统时,接收系统会将其名
称与发件人名称进行比较。如果这些名称相同,接收系统将发出此错误消息并关闭连
接。HELO 命令中提供的名称即$j 宏的值。
有关其他信息,请参阅。
config error: mail loops back to myself.
原因: 如果设置了MX记录并使主机bar 成为域foo 的邮件交换器,则会出现此错误消
息。但是,配置主机bar 失败,无法了解它即是域foo 的邮件交换器。
此外,另一种可能是发送系统和接收系统都识别为同一个域。
解决方法: 有关说明,请参阅。
host name configuration error
描述: 这是一条旧的sendmail 消息,该消息替换了I refuse to talk to myself,现在则
替换为Local configuration error 消息。
解决方法: 按照为解析错误消息554 hostname... Local configuration error 提供的说明
进行操作。
user unknown
原因: 尝试向某用户发送邮件时,显示了Username... user unknown 错误。该用户位于同
一系统中。
解析错误消息
第13 章• 邮件服务(任务) 297
解决方法: 检查所输入的电子邮件地址是否存在拼写错误。或者,可将该用户的别名设置
为/etc/mail/aliases 或该用户的.mailrc 文件中不存在的电子邮件地址。另外,检查
用户名的大写字符。电子邮件地址最好不要区分大小写。
有关其他信息,请参阅。
解析错误消息
298 系统管理指南:网络服务• 2006 年8 月
邮件服务(参考)
sendmail 程序是一个邮件传输代理。该程序使用配置文件来提供别名和转发、到网络网关
的自动路由以及灵活的配置。Solaris OS 提供了大多数站点都可以使用的标准配置文件。
第12 章介绍了邮件服务的组件,并对典型邮件服务配置进行了说明。第13 章说明了如何设
置和管理电子邮件系统。本章介绍了有关以下主题的信息。
第299 页中的“Solaris 版本的sendmail”
第302 页中的“邮件服务的软件和硬件组件”
第311 页中的“邮件服务程序和文件”
第325 页中的“邮件地址和邮件路由”
第325 页中的“sendmail 与名称服务的交互”
第329 页中的“sendmail 版本8.13 中的更改”
第337 页中的“sendmail 版本8.12 中的更改”
有关这些章节中未介绍的详细信息,请参见以下手册页:
sendmail(1M)
mail.local(1M)
mailstats(1)
makemap(1M)
editmap(1M)
Solaris 版本的sendmail
本节包括以下主题,其中介绍了sendmail 的Solaris 版本与普通Berkeley 版本之间的一些差
异。
第300 页中的“编译sendmail 时使用和未使用的标志”
第301 页中的“MILTER,用于sendmail 的邮件过滤器API”
第301 页中的“替代sendmail 命令”
第302 页中的“配置文件的版本”
14 第1 4 章
299
编译sendmail 时使用和未使用的标志
从Solaris 10 发行版开始,将使用以下标志来编译sendmail。如果您的配置需要使用其他标
志,则需下载源代码并重新编译此二进制命令。可在 中找到有关
此过程的信息。
表14–1 常规sendmail 标志
标志说明
SOLARIS=21000 支持Solaris 10 发行版。
MILTER 支持邮件过滤器API。缺省情况下,在sendmail
版本8.13 中会启用此标志。请参见第301 页中的
“MILTER,用于sendmail 的邮件过滤器API”。
NETINET6 支持IPv6。此标志已从conf.h 移至Makefile。
表14–2映射和数据库的类型
标志说明
NDBM 支持ndbm 数据库
NEWDB 支持Berkeley DB 数据库
USERDB 支持用户数据库
NIS 支持nis 数据库
NISPLUS 支持nisplus 数据库
LDAPMAP 支持LDAP 映射
MAP_REGEX 支持正则表达式映射
表14–3 Solaris 标志
标志说明
SUN_EXTENSIONS 支持sun_compat.o 中包括的Sun 扩展名。
SUN_INIT_DOMAIN 为了实现向下兼容,支持使用NIS 域名来完全限
定本地主机名。有关更多信息,请参阅
中的供应商特定信息。
SUN_SIMPLIFIED_LDAP 支持特定于Sun 的简化的LDAPAPI。有关更多信
息,请参阅 中的供应商
特定信息。
VENDOR_DEFAULT=VENDOR_SUN 选择Sun 作为缺省供应商。
下表列出了编译Solaris 10 发行版附带的sendmail 版本时未使用的普通标志。
Solaris 版本的sendmail
300 系统管理指南:网络服务• 2006 年8 月
表14–4 Solaris 版本的sendmail 中未使用的普通标志
标志说明
SASL 简单身份验证和安全层(RFC 2554)
STARTTLS 事务处理级安全(RFC 2487)
要查看用于编译sendmail 的标志的列表,请使用以下命令。
% /usr/lib/sendmail -bt -d0.10 < /dev/null
注– 前面的命令不会列出特定于Sun 的标志。
MILTER,用于sendmail 的邮件过滤器API
MILTER 是sendmail 的邮件过滤器API,通过它第三方程序可在处理邮件以过滤元信息和内
容时访问邮件。无需构造过滤器并配置sendmail 即可使用它。缺省情况下,sendmail 版本
8.13 中会启用该API。
有关更多详细信息,请访问以下站点:
替代sendmail 命令
Solaris 发行版中不包括sendmail.org 所提供的普通发行版中的所有命令同义词。下表提供了
命令别名的完整列表。该表还列出了Solaris 发行版中是否包括这些命令以及如何使用
sendmail 来生成相同行为。
表14–5 替代sendmail 命令
替代名称Solaris 发行版中是否包括该命令? 用于sendmail 的选项
hoststat 否sendmail -bh
mailq 是sendmail -bp
newaliases 是sendmail -bi
purgestat 否sendmail -bH
smtpd 否sendmail -bd
Solaris 版本的sendmail