系统管理指南:网络服务

第 13 章 邮件服务(任务)

本章介绍如何设置和管理邮件服务。如果您不熟悉邮件服务管理,请阅读第 12 章,邮件服务(概述),以了解有关邮件服务组件的介绍。本章还将介绍典型的邮件服务配置,如图 12–1 中所示。通过以下列表,可以帮助您查找本章中涵盖的多组相关过程。

有关邮件服务组件的更详细说明,请参见第 14 章,邮件服务(参考)。此外,本章还将介绍邮件服务程序和文件、邮件路由进程、sendmail 与名称服务的交互,以及 sendmail(1M) 手册页中未全面介绍的 sendmail 8.13 版功能。

邮件服务任务列表

下表重点向您介绍特定过程组的其他任务列表。

任务 

说明 

参考 

设置邮件服务 

使用这些过程可设置邮件服务的各个组件。了解如何设置邮件服务器、邮件客户机、邮件主机、邮件网关和虚拟主机。了解如何使用 DNS 和 sendmail

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

生成 sendmail 配置文件

使用此过程可修改 sendmail.cf 文件。请参见如何启用域伪装的示例。

生成 sendmail.cf 配置文件

设置 SMTP 以使用传输层安全性 (Transport Layer Security, TLS) 

使用此过程可启用 SMTP,以通过 TLS 建立安全连接。 

设置 SMTP 以使用 TLS

使用备用配置管理邮件传送 

使用此过程可防止在禁用主守护进程时发生邮件传送问题。 

使用备用配置管理邮件传送

管理邮件别名文件 

使用这些过程通过网络提供别名。了解如何管理 NIS+ 表中的项。另外,了解如何设置 NIS 映射、本地邮件别名、加密的映射文件以及邮寄主管的别名。 

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

管理邮件队列 

使用这些过程可顺利进行队列处理。了解如何显示和移动邮件队列、强制进行邮件队列处理以及运行邮件队列的子集。另外,了解如何运行旧邮件队列。 

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

管理 .forward 文件

使用这些过程可禁用 .forward 文件或更改 .forward 文件的搜索路径。另外,还可了解如何通过创建和填充 /etc/shells,允许用户使用 .forward 文件。

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

邮件服务疑难解答过程和技巧 

使用这些过程和技巧可解决邮件服务问题。了解如何测试邮件配置、检查邮件别名、测试 sendmail 规则集、验证与其他系统的连接以及记录消息。另外,了解在何处查找其他邮件诊断信息。

邮件服务疑难解答过程和技巧(任务列表)

解析错误消息 

使用本节中的信息可解析一些与邮件相关的错误消息。 

解析错误消息

规划邮件系统

以下列表说明了在规划过程中应考虑的一些问题。

完成该规划过程后,请在站点中对系统进行设置,以执行设置邮件服务(任务列表)中描述的各种功能。有关其他任务信息,请参阅邮件服务任务列表

仅本地邮件

图 13–1 中所示,最简单的邮件配置是将两个或多个工作站连接到一台邮件主机。邮件完全是本地的。所有客户机均在其本地磁盘中存储邮件,并且由客户机充当邮件服务器。邮件地址使用 /etc/mail/aliases 文件进行解析。

图 13–1 本地邮件配置

该图显示了邮件主机和邮件客户机的有关性。

要设置此类邮件配置,您需要满足以下条件:

有关设置邮件服务的任务信息,请参阅设置邮件服务。如果要查找与邮件服务设置相关的特定过程,请参阅设置邮件服务(任务列表)

本地邮件和远程连接

在小型网络中,最常见的邮件配置如图 13–2 所示。在此配置中,一个系统包含邮件服务器、邮件主机和提供远程连接的邮件网关。邮件通过使用邮件网关中的 /etc/mail/aliases 文件进行分发。无需使用名称服务。

图 13–2 采用 UUCP 连接的本地邮件配置

该图显示了邮件客户机和邮件网关的有关性。

在此配置中,可以假定邮件客户机从邮件主机中的 /var/mail 挂载其邮件文件。要设置此类邮件配置,您需要满足以下条件:

有关设置邮件服务的任务信息,请参阅设置邮件服务。如果要查找与邮件服务设置相关的特定过程,请参阅设置邮件服务(任务列表)

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

下表介绍了设置邮件服务的过程。

任务 

说明 

参考 

设置邮件服务器 

用于启用服务器以路由邮件的步骤 

如何设置邮件服务器

设置邮件客户机 

用于使用户接收邮件的步骤 

如何设置邮件客户机

设置邮件主机 

用于建立可解析电子邮件地址的邮件主机的步骤 

如何设置邮件主机

设置邮件网关 

用于管理与域外部网络之间的通信的步骤 

如何设置邮件网关

使用 DNS 和 sendmail

用于启用 DNS 主机查找的步骤 

如何使用 DNS 和sendmail

设置虚拟主机 

用于为主机指定多个 IP 地址的步骤 

设置虚拟主机

设置邮件服务

如果站点不提供与公司外部的电子邮件服务的连接,或者公司位于单个域中,则您可以轻松设置邮件服务。

对于本地邮件,邮件需要两种类型的配置。有关这些配置的说明,请参阅仅本地邮件中的图 13–1。对于与域外部网络之间的通信,邮件需要两种以上的配置。有关这些配置的说明,请参阅硬件组件概述中的图 12–1,或本地邮件和远程连接中的图 13–2。可以在同一系统上合并这些配置,也可以在不同系统上提供这些配置。例如,如果邮件主机和邮件服务器功能位于同一系统上,请按照本节中的指示将该系统设置为邮件主机。然后,按照本节中的指示将同一系统设置为邮件服务器。


注 –

以下用于设置邮件服务器和邮件客户机的过程在邮箱挂载了 NFS 的情况下适用。但是,邮箱通常保存在本地挂载的 /var/mail 目录中,因此无需执行以下过程。


请参阅以下内容:

Procedure如何设置邮件服务器

设置仅为本地用户提供邮件服务的邮件服务器时,无需采取任何特殊步骤。在口令文件或名称空间中,必须包含用户项。另外,对于要传送的邮件,用户应具有用于检查 ~/.forward 文件的本地起始目录。为此,通常会将起始目录服务器设置为邮件服务器。有关邮件服务器的更多信息,请参阅第 14 章,邮件服务(参考)中的硬件组件

该邮件服务器可以路由许多邮件客户机的邮件。此类型的邮件服务器必须为客户机邮箱提供足够的假脱机空间。


注 –

首次传送消息时,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 目录。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 停止 sendmail


    # svcadm -t disable network/smtp:sendmail
    
  3. 检查 /var/mail 目录是否可用于远程访问。


    # share
    

    如果列出了 /var/mail 目录,请转到步骤 5。

    如果未列出 /var/mail 目录或没有显示列表,请继续执行相应的子步骤。

    1. (可选的)如果未显示列表,请启动 NFS 服务。

      按照过程如何设置自动文件系统共享,使用 /var/mail 目录启动 NFS 服务。

    2. (可选的)如果列表中未包含 /var/mail 目录,请将该目录添加到 /etc/dfs/dfstab

      将以下命令行添加到 /etc/dfs/dfstab 文件中。


      share -F nfs -o rw /var/mail
      
  4. 使文件系统可进行挂载。


    # shareall
    
  5. 确保已启动名称服务。

    1. (可选的)如果运行的是 NIS,请使用以下命令。


      # ypwhich
      

      有关更多信息,请参阅 ypwhich(1) 手册页。

    2. (可选的)如果运行的是 NIS+,请使用以下命令。


      # nisls
      

      有关更多信息,请参阅 nisls(1) 手册页。

    3. (可选的)如果运行的是 DNS,请使用以下命令。


      # nslookup hostname
      
      hostname

      使用您的主机名。

      有关更多信息,请参阅 nslookup(1M) 手册页。

    4. (可选的)如果运行的是 LDAP,请使用以下命令。


      # ldaplist
      

      有关更多信息,请参阅 ldaplist(1) 手册页。

  6. 重新启动 sendmail


    # svcadm enable network/smtp:sendmail
    

Procedure如何设置邮件客户机

邮件客户机是一个在邮件服务器上具有邮箱的邮件服务用户。此外,邮件客户机在指向邮箱位置的 /etc/mail/aliases 文件中还具有邮件别名。


注 –

通过邮局协议 (Post Office Protocol, POP) 或 Internet 消息访问协议 (Internet Message Access Protocol, IMAP) 等服务,还可以执行邮件客户机设置任务。但是,提供 POP 或 IMAP 配置指南超出了本文档范围。


  1. 成为邮件客户机系统的超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 停止 sendmail


    # svcadm -t disable network/smtp:sendmail
    
  3. 确保邮件客户机系统上存在 /var/mail 挂载点。

    该挂载点应已在安装过程中创建。您可以使用 ls 来确保此文件系统存在。以下示例显示了在未创建此文件系统时收到的响应。


    # ls -l /var/mail
    
    /var/mail not found
  4. 确保 /var/mail 目录中没有任何文件。

    如果此目录中存在邮件文件,则应移动这些文件,以便在通过服务器挂载 /var/mail 目录时不会覆盖它们。

  5. 通过邮件服务器挂载 /var/mail 目录。

    您可以自动挂载或在引导时挂载该邮件目录。

    1. (可选的)自动挂载 /var/mail

      将如下所示的项添加到 /etc/auto_direct 文件中。


      /var/mail -rw,hard,actimeo=0 server:/var/mail
      server

      使用指定的服务器名。

    2. (可选的)在引导时挂载 /var/mail

      将以下项添加到 /etc/vfstab 文件中。此项允许指定的邮件服务器中的 /var/mail 目录挂载本地 /var/mail 目录。


      server:/var/mail - /var/mail nfs - no rw,hard,actimeo=0

      重新引导系统时,会自动挂载客户机邮箱。如果不重新引导系统,请键入以下命令挂载客户机邮箱。


      # mountall
      

      注意 – 注意 –

      为正常使用邮箱锁定和邮箱访问,必须在从 NFS 服务器挂载邮件时包含 actimeo=0 选项。


  6. 更新 /etc/hosts

    编辑 /etc/hosts 文件,并为邮件服务器添加项。如果使用名称服务,则无需此步骤。


    # cat /etc/hosts
    
    #
    
    # Internet host table
    
    #
    
    ..
    
    IP_address     mailhost  mailhost  mailhost.example.com
    
    IP_address

    使用指定的 IP 地址。

    example.com

    使用指定的域。

    mailhost

    使用指定的邮件主机。

    有关更多信息,请参阅 hosts(4) 手册页。

  7. 将客户机项添加到其中一个别名文件。

    有关管理邮件别名文件的任务列表,请参阅管理邮件别名文件(任务列表)。请注意,首次传送消息时,mail.local 程序会自动在 /var/mail 目录中创建邮箱。因此,无需为邮件客户机创建单独的邮箱。

  8. 重新启动 sendmail


    # svcadm enable network/smtp:sendmail
    

Procedure如何设置邮件主机

邮件主机用于解析电子邮件地址并在域内重新路由邮件。合适的邮件主机候选系统是可为网络提供远程连接或将网络连接到父域的系统。以下过程说明了如何设置邮件主机。

  1. 成为邮件主机系统的超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 停止 sendmail


    # svcadm -t disable network/smtp:sendmail
    
  3. 验证主机名配置。

    运行 check-hostname 脚本,验证 sendmail 是否可以识别此服务器的全限定主机名。


    % /usr/sbin/check-hostname
    
    hostname phoenix OK: fully qualified as phoenix.example.com

    如果此脚本无法成功识别全限定主机名,则需要将该全限定主机名作为主机的第一个别名添加到 /etc/hosts 中。

  4. 更新 /etc/hosts 文件

    选择适合您的步骤。

    1. (可选的)如果使用的是 NIS 或 NIS+,请在要作为新邮件主机的系统上编辑 /etc/hosts

      在 IP 地址和邮件主机系统的系统名之后,添加单词 mailhostmailhost.domain


      IP_address mailhost mailhost mailhost.domain loghost
      IP_address

      使用指定的 IP 地址。

      mailhost

      使用邮件主机系统的系统名。

      domain

      使用扩展的域名。

      现在,系统即被指定为邮件主机。domain 应与以下命令输出中指定为子域名的字符串相同。


      % /usr/lib/sendmail -bt -d0 </dev/null
      
      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
      
      #
      
      172.31.255.255   localhost        
      
      192.168.255.255  phoenix mailhost mailhost.example.com loghost
    2. (可选的)如果未使用 NIS 或 NIS+,请在网络中的所有系统上编辑 /etc/hosts 文件。创建以下项。


      IP_address mailhost mailhost mailhost.domain loghost
  5. 重新启动 sendmail


    # svcadm enable network/smtp:sendmail
    
  6. 测试邮件配置。

    有关说明,请参见如何测试邮件配置


    注 –

    有关邮件主机的详细信息,请参见第 14 章,邮件服务(参考)中的硬件组件


Procedure如何设置邮件网关

邮件网关用于管理与域外部网络之间的通信。发送邮件网关中的邮件程序可以与接收系统中的邮件程序匹配。

适合作为邮件网关的系统是指连接到以太网和电话线的系统,此外,还可以是配置为 Internet 路由器的系统。可以将邮件主机或其他系统配置为邮件网关。您可能会选择为域配置多个邮件网关。如果使用 UNIX 对 UNIX 复制程序 (UNIX-to-UNIX Copy Program, UUCP) 连接,则应将采用 UUCP 连接的系统配置为邮件网关。

  1. 成为邮件网关的超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 停止 sendmail


    # svcadm -t disable network/smtp:sendmail
    
  3. 验证主机名配置。

    运行 check-hostname 脚本,验证 sendmail 是否可以识别此服务器的全限定主机名。


    # /usr/sbin/check-hostname
    
    hostname phoenix OK: fully qualified as phoenix.example.com

    如果此脚本无法成功识别全限定主机名,则需要将该全限定主机名作为主机的第一个别名添加到 /etc/hosts 中。如果需要有关此步骤的帮助,请参阅如何设置邮件主机中的步骤 4

  4. 确保已启动名称服务。

    1. (可选的)如果运行的是 NIS,请使用以下命令。


      # ypwhich
      

      有关更多信息,请参阅 ypwhich(1) 手册页。

    2. (可选的)如果运行的是 NIS+,请使用以下命令。


      # nisls
      

      有关更多信息,请参阅 nisls(1) 手册页。

    3. (可选的)如果运行的是 DNS,请使用以下命令。


      # nslookup hostname
      
      hostname

      使用您的主机名。

      有关更多信息,请参阅 nslookup(1M) 手册页。

    4. (可选的)如果运行的是 LDAP,请使用以下命令。


      # ldaplist
      

      有关更多信息,请参阅 ldaplist(1) 手册页。

  5. 重新启动 sendmail


    # svcadm enable network/smtp:sendmail
    
  6. 测试邮件配置。

    有关说明,请参见如何测试邮件配置


    注 –

    有关邮件网关的更多信息,请参阅第 14 章,邮件服务(参考)中的硬件组件


Procedure如何使用 DNS 和sendmail

DNS 名称服务不支持单个别名。此名称服务支持使用邮件交换器 (Mail Exchanger, MX) 记录和 CNAME 记录的主机或域的别名。您可以在 DNS 数据库中指定主机名、域名或同时指定这两个名称。有关 sendmail 和 DNS 的更多信息,请参见第 14 章,邮件服务(参考) 中的sendmail 与名称服务的交互 或参见《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 启用 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
  3. 检查 mailhostmailhost.domain 项。

    使用 nslookup 确保 DNS 数据库中存在 mailhostmailhost.domain 项。有关更多信息,请参阅 nslookup(1M) 手册页。

设置虚拟主机

如果需要为主机指定多个 IP 地址,请参见以下 Web 站点:http://www.sendmail.org/virtual-hosting.html。此站点完整介绍了如何使用 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
mailserver

使用 .cf 文件的名称。

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

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

生成 sendmail.cf 配置文件

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

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

Procedure如何生成新的 sendmail.cf 文件

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


注 –

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


  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 停止 sendmail


    # svcadm -t disable 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 生成配置文件。


    # /usr/ccs/bin/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
    

设置 SMTP 以使用 TLS

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

Procedure如何设置 SMTP 以使用 TLS

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

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 停止 sendmail


    # svcadm -t disable 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]: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,如 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]: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 中。

    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          = 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 包含已签名证书。

      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.cf 配置文件

  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–1 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 的新缺省配置使用了守护进程和客户机队列运行器。如果已禁用守护进程,则应执行以下任务。有关详细说明,请参阅sendmail 版本 8.12 中的配置文件 submit.cf

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

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

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

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 停止 sendmail


    # svcadm -t disable network/smtp:sendmail
    
  3. 复制要更改的配置文件。


    # cd /etc/mail/cf/cf
    
    # cp sendmail.mc myhost.mc
    
    myhost

    选择 .mc 文件的新名称。

  4. 编辑新配置文件(例如,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
    

    注 –

    请在仅配置了 IPv4 地址的计算机上使用这些配置宏。


    1. (可选的)如果主机启用了 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 地址。


    2. (可选的)要查看主机是否启用了 IPv6 本地主机地址,请运行以下命令。


      # /usr/sbin/ifconfig -a

      如果启用了 IPv6,将显示以下类似输出。


      lo0: flags=2000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6> mtu 8252 index 1
      
                    inet6 ::1/128
  5. 使用 m4 生成配置文件。


    # /usr/ccs/bin/make myhost.cf
    
  6. 复制原始配置文件后,安装新配置文件。


    # cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.save
    
    # cp myhost.cf /etc/mail/sendmail.cf
    
  7. 重新启动 sendmail 服务。


    # svcadm enable network/smtp:sendmail
    

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

下表介绍了管理邮件别名文件的过程。有关本主题的更多信息,请参阅第 14 章,邮件服务(参考)中的邮件别名文件

任务 

说明 

参考 

管理 NIS+ mail_aliases 表中的别名项

如果名称服务是 NIS+,请使用这些过程管理 mail_aliases 表中的内容。

初始化 NIS+ mail_aliases 表。

如何初始化 NIS+ mail_aliases

 

列出 NIS+ mail_aliases 表中的内容。

此过程包含有关如何列出单项以及如何列出部分匹配项的示例。 

如何列出 NIS+ mail_aliases 表中的内容。

 

通过命令行向 NIS+ mail_aliases 表添加别名。

如何通过命令行向 NIS+ mail_aliases 表添加别名

 

通过编辑 NIS+ mail_aliases 表添加项。

如何通过编辑 NIS+ mail_aliases 表添加项

 

编辑 NIS+ mail_aliases 表中的项。

此过程包含有关如何删除项的示例。 

如何编辑 NIS+ mail_aliases 表中的项

设置 NIS mail.aliases 映射

如果名称服务是 NIS,请按照以下说明简化 mail.aliases 映射的别名设置。

如何设置 NIS mail.aliases 映射

设置本地邮件别名文件 

如果未使用名称服务(如 NIS 或 NIS+),请按照以下说明简化 /etc/mail/aliases 文件的别名设置。

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

创建加密映射文件 

使用以下步骤可简化加密映射文件的别名设置。 

如何创建加密映射文件

设置 postmaster 别名

使用本节中的过程可管理 postmaster 别名。您必须使用此别名。

管理 postmaster 别名

管理邮件别名文件

邮件别名在域中必须唯一。本节介绍管理邮件别名文件的过程。或者,您可以使用 Solaris Management Console 的邮递列表功能,在别名数据库上执行这些任务。

另外,您还可以使用 makemap 为本地邮件主机创建数据库文件。请参阅 makemap(1M) 手册页。使用这些数据库文件不会提供使用 NIS 或 NIS+ 等名称服务的所有优点。但是,由于不涉及网络查找,因此可以更快地从这些本地数据库文件检索数据。有关更多信息,请参阅sendmail 与名称服务的交互,以及第 14 章,邮件服务(参考)中的邮件别名文件

请从以下过程中进行选择:

Procedure如何初始化 NIS+ mail_aliases

您可以使用 aliasadm 命令来管理 NIS+ 表中的项。要创建表,请按照以下说明操作。有关更多信息,请参阅 aliasadm(1M) 手册页。

  1. 成为拥有该表的 NIS+ 组的成员或邮件服务器的 root,或者承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 初始化 NIS+ 表。


    # aliasadm -I
    
  3. 将项添加到该表中。

Procedure如何列出 NIS+ mail_aliases 表中的内容。

要查看该表中的完整内容列表,请按照以下说明操作。

  1. 成为拥有该表的 NIS+ 组的成员或邮件服务器的 root,或者承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 按别名字母顺序列出所有项。


    # aliasadm -1
    

    有关更多信息,请参阅 aliasadm(1M) 手册页。


示例 13–2 列出 NIS+ mail_aliases 表中的单项

或者,可以使用 aliasadm 命令列出单项。完成此过程的第一步后,请键入以下内容:


# aliasadm -m ignatz

ignatz: ignatz@saturn # Alias for Iggy Ignatz

该命令仅会匹配完整的别名,而不会匹配部分字符串。不能将 *? 等元字符与 aliasadm -m 一起使用。



示例 13–3 列出 NIS+ mail_aliases 表中的部分匹配项

另外,还可以使用 aliasadm 命令列出部分匹配项。完成此过程的第一步后,请键入以下内容:


# aliasadm -l | grep partial_string

partial_string 替换为搜索所需的字符串。


Procedure如何通过命令行向 NIS+ mail_aliases 表添加别名

要将两个或三个别名添加到该表中,请按照以下说明操作。如果要添加两个或三个以上的别名,请参见如何通过编辑 NIS+ mail_aliases 表添加项

  1. 编辑各个邮件客户机、邮箱位置和邮件服务器系统名称的列表。

  2. 成为拥有该表的 NIS+ 组的成员或邮件服务器的 root,或者承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  3. (可选的)如有必要,请初始化 NIS+ 表。

    如果创建的是一个全新的 NIS+ mail_aliases 表,则必须首先初始化该表。要完成此任务,请参阅如何初始化 NIS+ mail_aliases

  4. 将别名添加到该表中。

    请参见以下典型项示例。


    # aliasadm -a iggy iggy.ignatz@saturn "Iggy Ignatz"
    

    以下列表说明了上面示例的输入。

    -a

    用于添加别名的选项

    iggy

    别名的缩写

    iggy.ignatz@saturn

    扩展的别名

    "Iggy Ignatz"

    使用引号的别名

  5. 显示创建的项并确保其正确。


    # aliasadm -m alias
    
    alias

    创建的项

    有关更多信息,请参阅 aliasadm(1M) 手册页。

Procedure如何通过编辑 NIS+ mail_aliases 表添加项

您可以使用 aliasadm 命令来管理 NIS+ 表中的项。要将两个或三个以上的别名添加到该表中,请按照以下说明操作。

  1. 编辑各个邮件客户机、邮箱位置和邮件服务器系统名称的列表。

  2. 成为拥有该表的 NIS+ 组的成员或邮件服务器的 root,或者承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  3. 显示并编辑该别名表。


    # aliasadm -e
    

    此命令将显示该表,并允许您对其进行编辑。所用的编辑器已使用 $EDITOR 环境变量进行了设置。如果未设置此变量,则 vi 为缺省编辑器。

  4. 使用以下格式在单独一行中键入每个别名。


    alias: expanded_alias # ["option" # "comments"]
    alias

    此列用于别名的缩写。

    expanded_alias

    此列用于扩展的别名。

    option

    此列保留供将来使用。

    comments

    此列用于有关单个别名的注释,如别名的名称。

    如果将选项列保留为空,请键入一对空引号 ("") 并添加注释。

    项的顺序对 NIS+ mail_aliases 表并不重要。aliasadm -l 命令按字母顺序对列表进行排序并显示项。

    有关更多信息,请参阅邮件别名文件aliasadm(1M) 手册页。

Procedure如何编辑 NIS+ mail_aliases 表中的项

要编辑该表中的项,请按照以下说明操作。

  1. 成为拥有该表的 NIS+ 组的成员或邮件服务器的 root,或者承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 显示别名项。


    # aliasadm -m alias
    

    alias 替换为指定的别名。

  3. 根据需要编辑别名项。


    # aliasadm -c alias expanded_alias [options comments]
    alias

    如有必要,编辑别名。

    expanded_alias

    如有必要,编辑扩展的别名。

    options

    如有必要,编辑选项。

    comments

    如有必要,编辑此项的注释。

    有关更多信息,请参阅 aliasadm(1M) 手册页以及邮件别名文件

  4. 显示编辑的项并确保其正确。


    # aliasadm -m alias
    

    有关更多信息,请参阅 aliasadm(1M) 手册页。


示例 13–4 删除 NIS+ mail_aliases 表中的项

要删除该表中的项,请在完成此过程的第一步后使用以下语法:


# aliasadm -d alias

alias 替换为要删除的项的别名。


Procedure如何设置 NIS mail.aliases 映射

使用以下过程可简化 NIS mail.aliases 映射的别名设置。

  1. 编辑各个邮件客户机、邮箱位置和邮件服务器系统名称的列表。

  2. 成为 NIS 主服务器的 root 或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  3. 编辑 /etc/mail/aliases 文件,并创建以下项。

    1. 为每台邮件客户机添加项。


      # cat /etc/mail/aliases
      
      ..
      
      alias:expanded_alias
      
      alias

      使用缩写的别名。

      expanded_alias

      使用扩展的别名 (user@host.domain.com)。

    2. 确保具有 Postmaster: root 项。


      # cat /etc/mail/aliases
      
      ..
      
      Postmaster: root
      
    3. root 添加别名。使用指定为邮寄主管的人员的邮件地址。


      # cat /etc/mail/aliases
      
      ..
      
      root: user@host.domain.com
      
      user@host.domain.com

      使用指定的邮寄主管的指定地址。

  4. 确保 NIS 主服务器正在运行名称服务,以解析每台邮件服务器上的主机名。

  5. 转至 /var/yp 目录。


    # cd /var/yp
    
  6. 应用 make 命令。


    # make
    

    /etc/hosts/etc/mail/aliases 文件的更改将传播到 NIS 从属系统。这些更改至多仅在几分钟后便会生效。

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

使用以下过程可解析本地邮件别名文件的别名。

  1. 编辑各个用户及其邮箱位置的列表。

  2. 成为邮件服务器的 root 或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  3. 编辑 /etc/mail/aliases 文件,并创建以下项。

    1. 为每个用户添加项。


      user1: user2@host.domain
      
      user1

      使用新别名。

      user2@host.domain

      使用新别名的实际地址。

    2. 确保具有 Postmaster: root 项。


      # cat /etc/mail/aliases
      
      ..
      
      Postmaster: root
      
    3. root 添加别名。使用指定为邮寄主管的人员的邮件地址。


      # cat /etc/mail/aliases
      
      ..
      
      root: user@host.domain.com
      
      user@host.domain.com

      使用指定的邮寄主管的指定地址。

  4. 重新生成别名数据库。


    # newaliases
    

    /etc/mail/sendmail.cfAliasFile 选项的配置可确定此命令是以二进制格式生成单个文件 /etc/mail/aliases.db,还是生成文件对 /etc/mail/aliases.dir/etc/mail/aliases.pag

  5. 执行以下步骤之一,复制生成的文件。

    1. (可选的)/etc/mail/aliases/etc/mail/aliases.dir /etc/mail/aliases.pag 文件复制到其他各个系统中。

      您可以使用 rcprdist 命令复制这三个文件。有关更多信息,请参阅 rcp(1) 手册页或 rdist(1) 手册页。或者,可以为此创建脚本。

      复制这些文件时,无需在其他各个系统上都运行 newaliases 命令。但是请记住,每次添加或删除邮件客户机时,必须更新所有 /etc/mail/aliases 文件。

    2. (可选的)/etc/mail/aliases/etc/mail/aliases.db 文件复制到其他各个系统中。

      您可以使用 rcprdist 命令复制这些文件。有关更多信息,请参阅 rcp(1) 手册页或 rdist(1) 手册页。或者,可以为此创建脚本。

      复制这些文件时,无需在其他各个系统上都运行 newaliases 命令。但是请记住,每次添加或删除邮件客户机时,必须更新所有 /etc/mail/aliases 文件。

Procedure如何创建加密映射文件

要创建加密映射文件,请按照以下说明操作。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 创建输入文件。

    项可以使用以下语法。


    old_name@newdomain.com   new_name@newdomain.com
    
    old_name@olddomain.com    error:nouser No such user here
    
    @olddomain.com          %1@newdomain.com
    
    old_name@newdomain.com

    使用以前指定的用户名以及新指定的域。

    new_name@newdomain.com

    使用新指定的地址。

    old_name@olddomain.com

    使用以前指定的用户名及域。

    olddomain.com

    使用以前指定的域。

    newdomain.com

    使用新指定的域。

    第一项将邮件重定向到新别名。下一项在使用的别名错误时创建一条消息。最后一项将所有传入邮件从 olddomain 重定向到 newdomain

  3. 创建数据库文件。


    # /usr/sbin/makemap maptype newmap < newmap
    
    maptype

    选择数据库类型,如 dbmbtreehash

    newmap

    使用输入文件名称以及数据库文件名称的第一部分。如果选择 dbm 数据库类型,则会使用 .pag.dir 后缀创建数据库文件。对于其他两种数据库类型,文件名后跟 .db

管理 postmaster 别名

每个系统都必须能够将邮件发送到 postmaster 邮箱。您可以为 postmaster 创建 NIS 或 NIS+ 别名,也可在每个本地 /etc/mail/aliases 文件中创建该别名。请参阅以下过程。

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

如果要在每个本地 /etc/mail/aliases 文件中创建 postmaster 别名,请按照以下说明操作。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 查看 /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. 编辑每个系统的 /etc/mail/aliases 文件。

    root 更改成指定为邮寄主管的人员的邮件地址。


    Postmaster: mail_address
    
    mail_address

    使用指定为邮寄主管的人员的指定地址。

  4. (可选的)为邮寄主管创建单独的邮箱。

    可以为邮寄主管创建单独的邮箱,以便将邮寄主管邮件与个人邮件分开。如果创建单独的邮箱,请在编辑 /etc/mail/aliases 文件时使用该邮箱地址,而不要使用邮寄主管的个人邮件地址。有关详细信息,请参阅如何为 postmaster 创建单独的邮箱

Procedure如何为 postmaster 创建单独的邮箱

如果要为 postmaster 创建单独的邮箱,请按照以下说明操作。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 为指定为 postmaster 的人员创建用户帐户。在口令字段中放置一个星号 (*)。

    有关添加用户帐户的详细信息,请参阅《系统管理指南:基本管理》中的第 5  章 “管理用户帐户和组(任务)”

  3. 完成邮件传送后,启用 mail 程序读取和写入邮箱名称。


    # mail -f postmaster
    
    postmaster

    使用指定的地址。

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

如果要为 /etc/mail/aliases 文件中的别名添加 postmaster 邮箱,请按照以下说明操作。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. root 添加别名。使用指定为邮寄主管的人员的邮件地址。


    # cat /etc/mail/aliases
    
    ..
    
    root: user@host.domain.com
    
    user@host.domain.com

    使用指定为邮寄主管的人员的指定地址。

  3. 在邮寄主管本地系统的 /etc/mail/aliases 文件中,创建一个定义别名名称的项。以 sysadmin 为例。另外,还在其中包含指向本地邮箱的路径。


    # cat /etc/mail/aliases
    
    ..
    
    sysadmin: /usr/somewhere/somefile
    
    sysadmin

    为新别名创建名称。

    /usr/somewhere/somefile

    使用指向本地邮箱的路径。

  4. 重新生成别名数据库。


    # newaliases
    

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

下表介绍了管理邮件队列的过程。

任务 

说明 

参考 

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

使用此过程可查看队列中的消息数,以及从队列中清除消息的速度。 

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

强制对邮件队列 /var/spool/mqueue 进行邮件队列处理

使用此过程可处理向以前无法接收消息的系统发送的消息。 

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

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

使用此过程可强制处理地址子串(如主机名)。另外,使用此过程还可强制处理队列中的特定消息。 

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

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

使用此过程可移动该邮件队列。 

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

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

使用此过程可运行旧邮件队列。 

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

管理队列目录

本节介绍了一些有助于队列管理的任务。有关仅客户机适用的队列的信息,请参阅sendmail 版本 8.12 中的配置文件 submit.cf。有关其他相关信息,可以参阅sendmail 版本 8.12 中新增的队列功能

请参阅以下内容:

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

    显示队列中的消息数以及从队列中清除消息的速度。

    键入以下命令:


    # /usr/bin/mailq | more
    

    此命令将提供以下信息。

    • 队列 ID

    • 消息大小

    • 消息进入队列的日期

    • 消息状态

    • 发件人和收件人

    另外,此命令还会立即检查授权属性 solaris.admin.mail.mailq。如果检查成功,将执行与使用 sendmail 指定 -bp 标志等效的操作。如果检查失败,则会列显一条错误消息。缺省情况下,对所有用户均会启用此授权属性。通过修改 prof_attr 中的用户项,可以禁用该授权属性。有关更多信息,请参阅 prof_attr(4)mailq(1) 手册页。

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

例如,使用此过程可处理向以前无法接收消息的系统发送的消息。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 强制进行队列处理,并在清空队列时显示作业进度。


    # /usr/lib/sendmail -q -v 
    

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

例如,使用此过程可强制处理地址子串(如主机名)。另外,使用此过程还可强制处理队列中的特定消息。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 使用 -qRstring 随时运行该邮件队列的子集。


    # /usr/lib/sendmail -qRstring
    
    string

    使用收件人别名或 user@host.domain 的子串(如主机名)。

    或者,可使用 -qInnnnn 运行该邮件队列的子集。


    # /usr/lib/sendmail -qInnnnn
    
    nnnnn

    使用队列 ID。

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

如果要移动该邮件队列,请按照以下说明操作。

  1. 成为邮件主机的 root 或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 中止 sendmail 守护进程。


    # svcadm disable network/smtp:sendmail
    

    现在,sendmail 将不再处理该队列目录。

  3. 转至 /var/spool 目录。


    # cd /var/spool
    
  4. 将目录 mqueue 及其所有内容移动到 omqueue 目录中。然后,创建一个名为 mqueue 的新的空目录。


    # mv mqueue omqueue; mkdir mqueue
    
  5. 将该目录权限按属主设置为读取/写入/执行,按组设置为读取/执行。另外,将属主和组设置为 daemon


    # chmod 750 mqueue; chown root:bin mqueue
    
  6. 启动 sendmail


    # svcadm enable network/smtp:sendmail
    

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

要运行旧邮件队列,请按照以下说明操作。

  1. 成为 root 或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 运行该旧邮件队列。


    # /usr/lib/sendmail -oQ/var/spool/omqueue -q
    

    -oQ 标志用于指定备用队列目录。-q 标志用于指示运行该队列中的所有作业。如果要在屏幕中显示详细输出,请使用 -v 标志。

  3. 删除该空目录。


    # rmdir /var/spool/omqueue
    

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

下表介绍了管理 .forward 文件的过程。有关更多信息,请参阅第 14 章,邮件服务(参考)中的 .forward 文件

任务 

说明 

参考 

禁用 .forward 文件

例如,如果要阻止自动转发,请使用此过程。 

如何禁用 .forward 文件

更改 .forward 文件搜索路径

例如,如果要将所有 .forward 文件移动到公用目录中,请使用此过程。

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

创建和填充 /etc/shells

通过此过程,用户可使用 .forward 文件将邮件转发到程序或文件。

如何创建和填充 /etc/shells

管理 .forward 文件

本节介绍了与 .forward 文件管理相关的若干过程。由于用户可以编辑这些文件,因此可能导致出现问题。有关更多信息,请参阅第 14 章,邮件服务(参考)中的 .forward 文件

请参阅以下过程:

Procedure如何禁用 .forward 文件

此过程用于阻止自动转发,可禁用特定主机的 .forward 文件。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 复制 /etc/mail/cf/domain/solaris-generic.m4 或站点特定的域 m4 文件。


    # cd /etc/mail/cf/domain
    
    # cp solaris-generic.m4 mydomain.m4
    
    mydomain

    使用选择的文件名。

  3. 在刚创建的文件中添加以下行。


    define(`confFORWARD_PATH',`')dnl
    

    如果 m4 文件中已存在 confFORWARD_PATH 的值,请将该值替换为该空值。

  4. 生成并安装新的配置文件。

    如果需要有关此步骤的帮助信息,请参阅如何生成新的 sendmail.cf 文件


    注 –

    编辑 .mc 文件时,请记住将 DOMAIN(`solaris-generic') 更改为 DOMAIN(`mydomain')


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

例如,如果要将所有 .forward 文件放置在公用目录中,请按照以下说明操作。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 复制 /etc/mail/cf/domain/solaris-generic.m4 或站点特定的域 m4 文件。


    # cd /etc/mail/cf/domain
    
    # cp solaris-generic.m4 mydomain.m4
    
    mydomain

    使用选择的文件名。

  3. 在刚创建的文件中添加以下行。


    define(`confFORWARD_PATH',`$z/.forward:/var/forward/$u')dnl

    如果 m4 文件中已存在 confFORWARD_PATH 的值,请将其替换为该新值。

  4. 生成并安装新的配置文件。

    如果需要有关此步骤的帮助信息,请参阅如何生成新的 sendmail.cf 文件


    注 –

    编辑 .mc 文件时,请记住将 DOMAIN(`solaris-generic') 更改为 DOMAIN(`mydomain')


Procedure如何创建和填充 /etc/shells

此文件未包含在标准发行版中。如果要允许用户使用 .forward 文件将邮件转发到程序或文件,则必须添加该文件。您可以通过使用 grep 标识口令文件中列出的所有 shell,手动创建该文件。然后,可将这些 shell 键入到文件中。但是,使用可下载脚本的以下过程更易于使用。

  1. 下载相应脚本。

    http://www.sendmail.org/vendor/sun/gen-etc-shells.html

  2. 成为 root 或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  3. 要生成 shell 列表,请运行 gen-etc-shells 脚本。


    # ./gen-etc-shells.sh > /tmp/shells
    

    此脚本使用 getent 命令收集 /etc/nsswitch.conf 中列出的口令文件源所包含的 shell 名称。

  4. 检查并编辑 /tmp/shells 中的 shell 列表。

    使用您选择的编辑器,删除不包含的所有 shell。

  5. 将文件移动到 /etc/shells


    # mv /tmp/shells /etc/shells
    

邮件服务疑难解答过程和技巧(任务列表)

下表介绍了邮件服务疑难解答过程和技巧。

任务 

说明 

参考 

测试邮件配置 

用于测试对 sendmail 配置文件的更改的步骤

如何测试邮件配置

检查邮件别名 

用于确认是否能将邮件传送到指定收件人的步骤 

如何检查邮件别名

测试规则集 

用于检查 sendmail 规则集的输入和返回的步骤

如何测试 sendmail 规则集

验证与其他系统的连接 

用于验证与其他系统的连接的技巧 

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

使用 syslogd 程序记录消息

用于收集错误消息信息的技巧 

记录错误消息

检查其他源的诊断信息 

用于从其他源获取诊断信息的技巧 

邮件诊断信息的其他源

邮件服务疑难解答过程和技巧

本节介绍了一些可用于解决邮件服务问题的过程和技巧。

Procedure如何测试邮件配置

要测试对配置文件所做的更改,请按照以下说明操作。

  1. 在包含已修订的配置文件的任何系统上重新启动 sendmail


    # svcadm refresh network/smtp:sendmail
    
  2. 从各个系统发送测试消息。


    # /usr/lib/sendmail -v names </dev/null
    
    names

    指定收件人的电子邮件地址。

    此命令会向指定的收件人发送一条空消息,并在监视器上显示该消息的活动。

  3. 通过将该消息发送至常规用户名,向您自己或本地系统中的其他人发送邮件。

  4. (可选的)如果已连接到网络,请按三个方向将邮件发送到其他系统中的某个用户。

    • 从主系统到客户机系统

    • 从客户机系统到主系统

    • 从一台客户机系统到另一台客户机系统

  5. (可选的)如果具有邮件网关,请将邮件从邮件主机发送到其他域,以确保中继邮件程序和主机的配置正确。

  6. (可选的)如果通过电话线设置了与另一台主机的 UUCP 连接,请将邮件发送到该主机的某个用户,并要求该用户回复邮件或在收到消息时与您联系。

  7. 要求某用户通过 UUCP 连接向您发送邮件。

    由于 sendmail 程序会将消息传递给 UUCP 进行传送,因此该程序无法检测消息是否已传送。

  8. 通过不同系统将消息发送到 postmaster,并确保消息传送到邮寄主管的邮箱。

如何检查邮件别名

以下示例说明了如何验证别名。


% 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 <sandy@phoenix.example.com>

quit

221 2.0.0 your.domain.com closing connection

% 

在此示例中,mconnect 程序打开了一个与本地主机上的邮件服务器的连接,并允许您测试该连接。该程序以交互方式运行,因此可以发出各种诊断命令。有关完整说明,请参见 mconnect(1) 手册页。项 expn sandy 提供了扩展地址 sandy@phoenix.example.com。因此,您已验证了使用别名 sandy 时可以传送邮件。

使用本地范围和域范围的别名时,请记住避免产生循环和不一致的数据库。尤其要注意,在系统之间移动用户时应避免创建别名循环。

Procedure如何测试 sendmail 规则集

要检查 sendmail 规则集的输入和返回,请按照以下说明操作。

  1. 更改为地址测试模式。


    # /usr/lib/sendmail -bt
    
  2. 测试邮件地址。

    在最后一个提示符 (>) 下提供以下数字和地址。


    > 3,0 mail_address
    
    mail_address

    使用要测试的邮件地址。

  3. 结束会话。

    按 Control-D 组合键。


示例 13–5 地址测试模式输出

以下是地址测试模式的输出示例。


% /usr/lib/sendmail -bt

ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)

Enter <ruleset> <address>

> 3,0 sandy@phoenix

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

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

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 <sandy@phoenix.example.com>

quit

如果无法使用 mconnect 连接到某个 SMTP 端口,请检查以下情况。

记录错误消息

邮件服务使用 syslogd 程序记录大多数错误消息。缺省情况下,syslogd 程序会将这些消息发送到一个称为 loghost 的系统,该系统可在 /etc/hosts 文件中指定。可以将 loghost 定义为保存整个 NIS 域的所有日志。如果未指定 loghost,则不会报告 syslogd 中的错误消息。

/etc/syslog.conf 文件用于控制 syslogd 程序转发消息的位置。可以通过编辑 /etc/syslog.conf 文件来更改缺省配置。为使所有更改生效,必须重新启动 syslog 守护进程。要收集有关邮件的信息,可在该文件中添加以下选项。

/etc/syslog.conf 文件中的以下项会将所有关键消息、提示性消息和调试消息的副本发送到 /var/log/syslog


mail.crit;mail.info;mail.debug			/var/log/syslog

在系统日志中,每一行都包含时间标记、生成该行的系统名称以及消息。syslog 文件可以记录大量信息。

该日志按级别顺序进行排列。在最低级别,仅记录异常情况。在最高级别,即使最普通和最不受关注的事件也会被记录。根据约定,10 以下的日志级别被视为“有用”级别。10 以上的日志级别通常用于调试。有关 loghostsyslogd 程序的信息,请参见《系统管理指南:高级管理》中的“自定义系统消息日志”

邮件诊断信息的其他源

对于其他诊断信息,请检查以下源。

解析错误消息

本节介绍了如何解析一些与 sendmail 相关的错误消息。此外,还可参阅 http://www.sendmail.org/faq/

以下错误消息包含两种或多种以下类型的信息。


451 timeout waiting for input during source

原因:

sendmail 从可能超时的任何源(如 SMTP 连接)进行读取时,该程序会在开始读取之前将计时器设置为各种 Timeout 选项的值。如果在计时器到期之前没有完成读取,则会出现此消息并且停止读取。通常,这种情况发生在 RCPT 过程中。然后,该邮件在队列中排队以便以后传送。

解决方法:

如果经常显示此消息,请增大 /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 宏的值,确保该值为全限定域名。

描述:

当发送系统在 SMTP HELO 命令中将其主机名提供给接收系统时,接收系统会将其名称与发件人名称进行比较。如果这些名称相同,接收系统将发出此错误消息并关闭连接。HELO 命令中提供的名称即 $j 宏的值。

有关其他信息,请参阅 http://www.sendmail.org/faq/section4.html#4.5


config error: mail loops back to myself.

原因:

如果设置了 MX 记录并使主机 bar 成为域 foo 的邮件交换器,则会出现此错误消息。但是,配置主机 bar 失败,无法了解它即是域 foo 的邮件交换器。

此外,另一种可能是发送系统和接收系统都识别为同一个域。

解决方法:

有关说明,请参阅 http://www.sendmail.org/faq/section4.html#4.5


host name configuration error

描述:

这是一条旧的 sendmail 消息,该消息替换了 I refuse to talk to myself,现在则替换为 Local configuration error 消息。

解决方法:

按照为解析错误消息 554 hostname... Local configuration error 提供的说明进行操作。


user unknown

原因:

尝试向某用户发送邮件时,显示了 Username... user unknown 错误。 该用户位于同一系统中。

解决方法:

检查所输入的电子邮件地址是否存在拼写错误。或者,可将该用户的别名设置为 /etc/mail/aliases 或该用户的 .mailrc 文件中不存在的电子邮件地址。另外,检查用户名的大写字符。电子邮件地址最好不要区分大小写。

有关其他信息,请参阅 http://www.sendmail.org/faq/section4.html#4.17