跳过导航链接 | |
退出打印视图 | |
系统管理指南:网络服务 Oracle Solaris 10 8/11 Information Library (简体中文) |
如何通过命令行向 NIS+ mail_aliases 表添加别名
如何在每个本地 /etc/mail/aliases 文件中创建 postmaster 别名
如何为 /etc/mail/aliases 文件中的别名添加 postmaster 邮箱
如何显示邮件队列 /var/spool/mqueue 的内容
如何在邮件队列 /var/spool/mqueue 中强制进行邮件队列处理
如何运行邮件队列 /var/spool/mqueue 的子集
如何生成新的 sendmail.cf 文件说明了如何生成该配置文件。尽管您仍可使用旧版本的 sendmail.cf 文件,但最佳做法是使用新格式。
/etc/mail/cf/README 完整说明了配置过程。
http://www.sendmail.org 概述了有关 sendmail 配置的信息。
第 14 章中的配置文件的版本和sendmail 配置文件提供了一些指南。
以下过程说明了如何生成新的配置文件。
注 - /usr/lib/mail/cf/main-v7sun.mc 现在是 /etc/mail/cf/cf/main.mc。
角色包含授权和具有特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的"配置 RBAC(任务列表)"。
# svcadm disable -t network/smtp:sendmail
# cd /etc/mail/cf/cf # cp sendmail.mc myhost.mc
选择 .mc 文件的新名称。
例如,添加以下命令行以启用域伪装。
# cat myhost.mc .. MASQUERADE_AS(`host.domain')
使用所需的主机名和域名。
在此示例中,MASQUERADE_AS 将已发送邮件标记为来自 host.domain,而不是 $j。
# /usr/ccs/bin/make myhost.cf
# /usr/lib/sendmail -C myhost.cf -v testaddr </dev/null
当此命令显示消息时,将会向 testaddr 发送一条消息。如果不重新启动系统中的 sendmail 服务,则只能对外发邮件进行测试。对于尚未处理邮件的系统,请使用如何测试邮件配置所介绍的完整测试过程。
# cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.save # cp myhost.cf /etc/mail/sendmail.cf
# svcadm enable network/smtp:sendmail
如果需要为主机指定多个 IP 地址,请参见以下 Web 站点:http://www.sendmail.org/tips/virtualHosting。此站点完整介绍了如何使用 sendmail 设置虚拟主机。但是,在“Sendmail 配置”部分中,不会执行步骤 3b,如以下所示。
# cd sendmail-VERSION/cf/cf # ./Build mailserver.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
使用 .cf 文件的名称。
更改 sendmail 配置中将这相同的三个步骤作为生成过程的一部分进行了概述。
生成 /etc/mail/sendmail.cf 文件后,可以继续执行以下步骤创建虚拟用户表。
如果已生成自己的 sendmail.cf 或 submit.cf 副本,则升级过程中不替换该配置文件。以下过程显示如何配置 sendmail 服务属性以便为您自动重新生成 sendmail.cf 文件。有关如何自动生成 submit.cf 配置文件的说明,请参见示例 13-1。如果需要生成这两个文件,则可以结合执行这两个过程。
角色包含授权和具有特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的"配置 RBAC(任务列表)"。
# svccfg -s sendmail svc:/network/smtp:sendmail> setprop config/path_to_sendmail_mc=/etc/mail/cf/cf/myhost.mc svc:/network/smtp:sendmail> quit
第一个命令会将更改推送到正在运行的快照。第二个命令使用新选项重新启动 sendmail 服务。
# svcadm refresh svc:/network/smtp:sendmail # svcadm restart svc:/network/smtp:sendmail
示例 13-1 建立 submit.cf 的自动重新生成
此过程配置 sendmail 服务,以便自动重新生成 submit.mc 配置文件。
# svccfg -s sendmail-client:default svc:/network/smtp:sendmail> setprop config/path_to_submit_mc=/etc/mail/cf/cf/submit-myhost.mc svc:/network/smtp:sendmail> exit # svcadm refresh svc:/network/sendmail-client # svcadm restart svc:/network/sendmail-client
在 Solaris 10 发行版中,更改了 sendmail 服务,以便该服务缺省情况下在仅本地模式下运行。仅本地模式意味着仅接受本地主机的邮件。将拒绝来自任何其他系统的邮件。早期的发行版配置为接受所有远程系统的传入邮件,这称为打开模式。要使用打开模式,请执行以下过程。
注意 - 在仅本地模式下运行 sendmail 比在打开模式下运行更安全。如果遵循以下过程,请确保您能够识别出潜在安全风险。 |
角色包含授权和具有特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的"配置 RBAC(任务列表)"。
# svccfg -s sendmail svc:/network/smtp:sendmail> setprop config/local_only = false svc:/network/smtp:sendmail> quit
# svcadm refresh svc:/network/smtp:sendmail # svcadm restart svc:/network/smtp:sendmail
从 Solaris 10 1/06 发行版开始,SMTP 可在 sendmail 8.13 版中使用传输层安全性 (Transport Layer Security, TLS)。此服务面向 SMTP 服务器和客户机,通过 Internet 提供专用的、认证的通信,并且可保护系统免受窃听者和攻击者的侵害。请注意,缺省情况下不会启用此服务。
以下过程使用样例数据说明如何设置证书,以便 sendmail 使用 TLS。有关更多信息,请参见sendmail 版本 8.13 支持运行 SMTP 时使用 TLS。
角色包含授权和具有特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的"配置 RBAC(任务列表)"。
# svcadm disable -t network/smtp:sendmail
# cd /etc/mail # mkdir -p certs/CA # cd certs/CA # mkdir certs crl newcerts private # echo "01" > serial # cp /dev/null index.txt # cp /etc/sfw/openssl/openssl.cnf .
请注意,以下命令行会生成交互式文本。
# 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. 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 选项用于生成一个新的证书请求。
此 req 选项用于创建一个自签名证书。
此 req 选项允许将 private/cakey.pem 指定为新建的私钥的文件名。
此 req 选项允许将 cacert.pem 指定为输出文件。
此 req 选项允许确保证书有效期为 365 天。缺省值为 30。
此 req 选项允许将 openssl.cnf 指定为配置文件。
请注意,此命令要求您提供以下信息:
Country Name,如 US。
State or Province Name,如 California。
Locality Name,如 Menlo Park。
Organization Name,如 Oracle Corporation。
Organizational Unit Name,如 Solaris。
Common Name,该名称是计算机的全限定主机名。有关更多信息,请参见 check-hostname(1M) 手册页。
Email Address,如 someuser@example.com。
# 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
此命令要求您提供的信息与步骤 3c 中提供的信息相同。
请注意,在此示例中,证书和私钥位于文件 newreq.pem 中。
# 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 emailAddress = someuser@example.com 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/\ CN=someuser@example.com/emailAddress=someuser@example.com 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 包含已签名证书。
显示证书信息、将证书转换为各种格式以及对证书请求进行签名
用于对各种格式的证书请求进行签名以及生成 CRL(certificate revocation list,证书撤销列表)
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
有关更多信息,请参见用于在运行 SMTP 时使用 TLS 的配置文件选项。
有关详细说明,请参见更改 sendmail 配置。
# 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
# chmod go-r MYkey.pem
# C=CAcert.pem # ln -s $C `openssl x509 -noout -hash < $C`.0
将 host.domain 替换为其他主机的全限定主机名。
# C=host.domain.cert.pem # ln -s $C `openssl x509 -noout -hash < $C`.0
将 host.domain 替换为其他主机的全限定主机名。
# svcadm enable network/smtp:sendmail
示例 13-2 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 <janepc@her.example.com>; 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 <janepc@her.example.com>; Tue, 29 Mar 2005 15:30:07 -0800 (PST)
请注意,verify 的值为 OK,这表明验证成功。有关更多信息,请参见用于在运行 SMTP 时使用 TLS 的宏。
另请参见
以下 OpenSSL 手册页:
为便于传入邮件和外发邮件的传输,sendmail 的新缺省配置使用了守护进程和客户机队列运行器。客户机队列运行器必须能够将邮件提交至本地 SMTP 端口上的守护进程。如果该守护进程没有侦听 SMTP 端口,邮件将保留在队列中。要避免此问题,请执行以下任务。有关守护进程和客户机队列运行器的更多信息,以及要了解可能必须使用此备用配置的原因,请参阅sendmail 版本 8.12 中的配置文件 submit.cf。
此过程可确保守护进程的运行仅用于接受来自本地主机的连接。
角色包含授权和具有特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的"配置 RBAC(任务列表)"。
# svcadm disable -t sendmail-client
# cd /etc/mail/cf/cf # cp submit.mc submit-myhost.mc
选择 .mc 文件的新名称。
将侦听主机 IP 地址更改为 msp 定义。
# grep msp submit-myhost.mc FEATURE(`msp', `[#.#.#.#]')dnl
# /usr/ccs/bin/make submit-myhost.cf
# cp /etc/mail/submit.cf /etc/mail/submit.cf.save # cp submit-myhost.cf /etc/mail/submit.cf
# svcadm enable sendmail-client