JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris 管理:网络服务     Oracle Solaris 11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

第 1 部分网络服务主题

1.  网络服务(概述)

2.  管理 Web 高速缓存服务器

3.  与时间有关的服务

第 2 部分访问网络文件系统主题

4.  管理网络文件系统(概述)

5.  网络文件系统管理(任务)

6.  访问网络文件系统(参考)

第 3 部分SLP 主题

7.  SLP(概述)

8.  规划和启用 SLP(任务)

9.  管理 SLP(任务)

10.  引入传统服务

11.  SLP(参考)

第 4 部分邮件服务主题

12.  邮件服务(概述)

13.  邮件服务(任务)

邮件服务任务列表

规划邮件系统

仅本地邮件

本地邮件和远程连接

设置邮件服务(任务列表)

设置邮件服务

如何设置邮件服务器

如何设置邮件客户机

如何设置邮件主机

如何设置邮件网关

如何使用 DNS 和 sendmail

更改 sendmail 配置(任务列表)

更改 sendmail 配置

如何生成新的 sendmail.cf 文件

设置虚拟主机

如何自动重新生成配置文件

如何在打开模式下使用 sendmail

设置 SMTP 以使用 TLS

如何使用 sendmail.cf 的备用配置管理邮件传送

管理邮件别名文件(任务列表)

管理邮件别名文件

如何设置 NIS mail.aliases 映射

如何设置本地邮件别名文件

如何创建加密映射文件

管理 postmaster 别名

如何在每个本地 /etc/mail/aliases 文件中创建 postmaster 别名

如何为 postmaster 创建单独的邮箱

如何为 /etc/mail/aliases 文件中的别名添加 postmaster 邮箱

管理队列目录(任务列表)

管理队列目录

如何显示邮件队列 /var/spool/mqueue 的内容

如何在邮件队列 /var/spool/mqueue 中强制进行邮件队列处理

如何运行邮件队列 /var/spool/mqueue 的子集

如何移动邮件队列 /var/spool/mqueue

如何运行旧邮件队列 /var/spool/omqueue

管理 .forward 文件(任务列表)

管理 .forward 文件

如何禁用 .forward 文件

如何更改 .forward-文件搜索路径

如何创建和填充 /etc/shells

邮件服务故障排除过程和技巧(任务列表)

邮件服务故障排除过程和技巧

如何测试邮件配置

如何检查邮件别名

如何测试 sendmail 规则集

如何验证与其他系统的连接

记录错误消息

邮件诊断信息的其他源

解决错误消息

14.  邮件服务(参考)

第 5 部分串行网络主题

15.  Solaris PPP 4.0(概述)

16.  规划 PPP 链路(任务)

17.  设置拨号 PPP 链路(任务)

18.  设置租用线路 PPP 链路(任务)

19.  设置 PPP 验证(任务)

20.  设置 PPPoE 通道(任务)

21.  修复常见的 PPP 问题(任务)

22.  Solaris PPP 4.0(参考)

23.  从异步 Solaris PPP 迁移至 Solaris PPP 4.0(任务)

24.  UUCP(概述)

25.  管理 UUCP(任务)

26.  UUCP(参考)

第 6 部分使用远程系统主题

27.  使用远程系统(概述)

28.  管理 FTP 服务器(任务)

29.  访问远程系统(任务)

第 7 部分监视网络服务主题

30.  监视网络性能(任务)

词汇表

索引

更改 sendmail 配置

如何生成新的 sendmail.cf 文件说明了如何生成该配置文件。尽管您仍可使用旧版本的 sendmail.cf 文件,但最佳做法是使用新格式。

有关更多详细信息,请参阅以下内容。

如何生成新的 sendmail.cf 文件

以下过程说明了如何生成新的配置文件。


注 - /usr/lib/mail/cf/main-v7sun.mc 现在是 /etc/mail/cf/cf/main.mc


  1. 成为管理员。

    有关更多信息,请参见《Oracle Solaris 管理:安全服务》中的"如何获取管理权限"

  2. 停止 sendmail
    # svcadm disable -t network/smtp:sendmail
  3. 复制要更改的配置文件。
    # cd /etc/mail/cf/cf
    # cp sendmail.mc myhost.mc
    myhost

    选择 .mc 文件的新名称。

  4. 根据需要,编辑新配置文件(如 myhost.mc)。

    例如,添加以下命令行以启用域伪装。

    # cat myhost.mc
    ..
    MASQUERADE_AS(`host.domain')
    host.domain

    使用所需的主机名和域名。

    在此示例中,MASQUERADE_AS 将已发送邮件标记为来自 host.domain,而不是 $j

  5. 使用 m4 生成配置文件。
    # make myhost.cf
  6. 使用 --C 选项指定新文件,以测试新配置文件。
    # /usr/lib/sendmail -C myhost.cf -v testaddr </dev/null

    当此命令显示消息时,将会向 testaddr 发送一条消息。如果不重新启动系统中的 sendmail 服务,则只能对外发邮件进行测试。对于尚未处理邮件的系统,请使用如何测试邮件配置所介绍的完整测试过程。

  7. 复制原始配置文件后,安装新配置文件。
    # cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.save
    # cp myhost.cf /etc/mail/sendmail.cf
  8. 重新启动 sendmail 服务。
    # 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

相反,对于 Oracle Solaris 操作系统,会执行以下步骤。

# cd /etc/mail/cf/cf
# make mailserver.cf
# cp mailserver.cf /etc/mail/sendmail.cf
mailserver

使用 .cf 文件的名称。

更改 sendmail 配置中将这相同的三个步骤作为生成过程的一部分进行了概述。

生成 /etc/mail/sendmail.cf 文件后,可以继续执行以下步骤创建虚拟用户表。

如何自动重新生成配置文件

如果已生成自己的 sendmail.cf submit.cf 副本,则升级过程中不替换该配置文件。以下过程显示如何配置 sendmail 服务属性以便为您自动重新生成 sendmail.cf 文件。有关如何自动生成 submit.cf 配置文件的说明,请参见示例 13-1。如果需要生成这两个文件,则可以结合执行这两个过程。

  1. 成为管理员。

    有关更多信息,请参见《Oracle Solaris 管理:安全服务》中的"如何获取管理权限"

  2. 设置 sendmail 属性。
    # svccfg -s sendmail
    svc:/network/smtp:sendmail> setprop config/path_to_sendmail_mc=/etc/mail/cf/cf/myhost.mc 
    svc:/network/smtp:sendmail> quit
  3. 刷新和重新启动 sendmail 服务。

    第一个命令会将更改推送到正在运行的快照。第二个命令使用新选项重新启动 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

如何在打开模式下使用 sendmail

sendmail 服务已更改,以便该服务缺省情况下在仅本地模式下运行。仅本地模式意味着仅接受本地主机的邮件。将拒绝来自任何其他系统的邮件。早期的发行版配置为接受所有远程系统的传入邮件,这称为打开模式。要使用打开模式,请执行以下过程。


注意

注意 - 在仅本地模式下运行 sendmail 比在打开模式下运行更安全。如果遵循以下过程,请确保您能够识别出潜在安全风险。


  1. 成为管理员。

    有关更多信息,请参见《Oracle Solaris 管理:安全服务》中的"如何获取管理权限"

  2. 设置 sendmail 属性。
    # svccfg -s sendmail
    svc:/network/smtp:sendmail> setprop config/local_only = false 
    svc:/network/smtp:sendmail> quit
  3. 刷新和重新启动 sendmail 服务。
    # svcadm refresh svc:/network/smtp:sendmail 
    # svcadm restart svc:/network/smtp:sendmail

设置 SMTP 以使用 TLS

sendmail 8.13 版中,SMTP 可以使用传输层安全 (Transport Layer Security, TLS)。此服务面向 SMTP 服务器和客户机,通过 Internet 提供专用的、认证的通信,并且可保护系统免受窃听者和攻击者的侵害。请注意,缺省情况下不会启用此服务。

以下过程使用样例数据说明如何设置证书,以便 sendmail 使用 TLS。有关更多信息,请参见sendmail 版本 8.13 支持运行 SMTP 时使用 TLS

  1. 成为管理员。

    有关更多信息,请参见《Oracle Solaris 管理:安全服务》中的"如何获取管理权限"

  2. 停止 sendmail
    # svcadm disable -t network/smtp:sendmail
  3. 设置相应证书,以便 sendmail 使用 TLS。
    1. 完成以下命令:
      # 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 .
    2. 使用您选择的文本编辑器,将 openssl.cnf 文件中的 dir 值从 /etc/sfw/openssl 更改为 /etc/mail/certs/CA
    3. 使用 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.
      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]:Oracle
      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,如 Oracle

      • Organizational Unit Name,如 Solaris

      • Common Name,该名称是计算机的全限定主机名。有关更多信息,请参见 check-hostname(1M) 手册页。

      • Email Address,如 someuser@example.com

  4. 可选如果需要新的安全连接,请创建新证书并使用证书颁发机构签名。
    1. 创建新证书。
      # 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]:Oracle
      Organizational Unit Name (eg, section) []:Solaris
      Common Name (eg, YOUR name) []:somehost.somedomain.example.com
      Email Address []:someuser@example.com

      此命令要求您提供的信息与步骤 3c 中提供的信息相同。

      请注意,在此示例中,证书和私钥位于文件 newreq.pem 中。

    2. 使用证书颁发机构对新证书进行签名。
      # 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          = Oracle
                  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=Oracle/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 包含已签名证书。

      x509 实用程序

      显示证书信息、将证书转换为各种格式以及对证书请求进行签名

      ca 应用程序

      用于对各种格式的证书请求进行签名以及生成 CRL(certificate revocation list,证书撤销列表)

  5. .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

    有关更多信息,请参见用于在运行 SMTP 时使用 TLS 的配置文件选项

  6. /etc/mail 目录中重新生成并安装 sendmail.cf 文件。

    有关详细说明,请参见更改 sendmail 配置

  7. 创建从使用 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
  8. 为提高安全性,拒绝对 MYkey.pem 的组和其他项目的读取权限。
    # chmod go-r MYkey.pem
  9. 使用符号链接将 CA 证书安装在指定给 confCACERT_PATH 的目录中。
    # C=CAcert.pem
    # ln -s $C `openssl x509 -noout -hash < $C`.0
  10. 为确保其他主机的邮件安全,安装相应的主机证书。
    1. 将通过其他主机的 confCACERT 选项定义的文件复制到 /etc/mail/certs/host.domain.cert.pem

      host.domain 替换为其他主机的全限定主机名。

    2. 使用符号链接将 CA 证书安装在指定给 confCACERT_PATH 的目录中。
      # C=host.domain.cert.pem
      # ln -s $C `openssl x509 -noout -hash < $C`.0

      host.domain 替换为其他主机的全限定主机名。

  11. 重新启动 sendmail
    # 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.cf 的备用配置管理邮件传送

为便于传入邮件和外发邮件的传输,sendmail 的新缺省配置使用了守护进程和客户机队列运行器。客户机队列运行器必须能够将邮件提交至本地 SMTP 端口上的守护进程。如果该守护进程没有侦听 SMTP 端口,邮件将保留在队列中。要避免此问题,请执行以下任务。有关守护进程和客户机队列运行器的更多信息,以及要了解可能必须使用此备用配置的原因,请参阅sendmail 版本 8.12 中的配置文件 submit.cf

此过程可确保守护进程的运行仅用于接受来自本地主机的连接。

  1. 成为管理员。

    有关更多信息,请参见《Oracle Solaris 管理:安全服务》中的"如何获取管理权限"

  2. 停止 sendmail 客户机服务。
    # svcadm disable -t sendmail-client
  3. 复制要更改的配置文件。
    # cd /etc/mail/cf/cf
    # cp submit.mc submit-myhost.mc
    myhost

    选择 .mc 文件的新名称。

  4. 编辑新配置文件(例如,submit- myhost.mc)。

    将侦听主机 IP 地址更改为 msp 定义。

    # grep msp submit-myhost.mc
    FEATURE(`msp', `[#.#.#.#]')dnl
  5. 使用 m4 生成配置文件。
    # make submit-myhost.cf
  6. 复制原始配置文件后,安装新配置文件。
    # cp /etc/mail/submit.cf /etc/mail/submit.cf.save
    # cp submit-myhost.cf /etc/mail/submit.cf
  7. 重新启动 sendmail 客户机服务。
    # svcadm enable sendmail-client