Sun Java System Messaging Server 6 2005Q4 管理指南

管理 MTA 邮件和连接日志

MTA 提供了记录每个入队列和出队列的邮件的功能。还提供了分发程序错误和调试输出。

您可以控制每个通道上的日志记录,也可以指定要记录的所有通道上的邮件活动。在初始配置中,所有通道上均禁用日志记录。

有关更多信息,请参见启用 MTA 日志记录

启用日志记录会使 MTA 在每次邮件通过 MTA 通道时,都将一个条目写入 msg_svr_base/data/log/mail* 文件中。这类日志条目对收集有关通过 MTA(或通过特定通道)的邮件数量的统计信息将很有用。您还可以使用这些日志条目来调查其他问题,例如,是否发送或传送了邮件,以及发送或传送邮件的时间。

邮件返回作业(每晚午夜时分运行),将所有现有 mail.log_yesterday 都附加到累积日志文件 mail.log,将当前 mail.log_current 文件重命名为 mail.log_yesterday,然后开始一个新的 mail.log_current 文件。邮件返回作业对所有 connection.log* 文件也执行相似的操作。

MTA 执行自动轮转以维护当前文件时,您必须通过确定任务(例如备份文件、截断文件、删除文件等)的策略来管理累积 mail.log 文件。

考虑如何管理日志文件时,请注意 MTA 定期返回作业将执行站点提供的 msg_svr_base/bin/daily_cleanup 程序(如果存在)。因此,某些站点可能选择提供他们自己的清除程序,例如每周(或每月)重命名一次旧的 mail.log 文件等。


注 –

启用日志记录后,mail.log 文件将稳定地增长,如果不对其进行限制,则将消耗所有可用磁盘空间。监视此文件的大小并定期地删除不必要的内容。按照要求将创建此文件的另一版本时,还可以删除整个文件。


了解 MTA 日志条目格式

MTA 日志文件以 ASCII 文本书写。默认情况下,每个日志文件条目都包含八个或九个字段,如下面示例中所示。

19-Jan-1998 19:16:57.64 l tcp_local E 1 adam@sesta.com rfc822;marlowe@siroe.com marlowe@siroe.com

日志条目显示:

  1. 创建条目的日期和时间(在此示例中为 19-Jan-1998 19:16:57.64)。

  2. 源通道的通道名称(在此示例中为 l)。

  3. 目标通道的通道名称(在此示例中为 tcp_local)。(对于 SMTP 通道,当启用 LOG_CONNECTION 时,加号 (+) 表示入站到 SMTP 服务器;减号 (-) 表示通过 SMTP 客户机出站。)

  4. 条目的类型(在此示例中为 E);请参见表 21–2

  5. 邮件的大小(在此示例中为 1)。默认表示为千字节(使用 MTA 选项文件中的 BLOCK_SIZE 关键字可以更改此默认值)。

  6. 信封 From: 地址(在此示例中为 adam@sesta.com)。请注意带有空信封 From: 地址的邮件(例如通知邮件),此字段为空白。

  7. 原始格式的信封 To: 地址(在此示例中为 marlowe@siroe.com)。

  8. 信封 To: 地址(在此示例中为 marlowe@siroe.com)。

  9. 传送状态(仅适用于 SMTP 通道)。

下表说明了日志记录条目代码。

表 21–2 日志记录条目代码

条目 

说明 

发送至 SMTP 服务器的错误命令。收件人地址字段将包含被拒绝的命令,而诊断字段将包含 SMTP 服务器所给出的响应。MTA 通道选项 (MAX_B_ENTRIES) 用于控制将记录到给定会话中的错误命令的数量。默认值为 10。 

BA 

验证成功执行后事务中较早的错误命令。 

BS 

TLS 成功启动后的错误命令。 

BSA 

TLS 和 AUTH 的错误命令。 

成功出队列 

DA 

使用 SASL(验证)成功出队列 

DS 

使用 TLS(安全)成功出队列 

DSA 

使用 TLS 和 SASL(安全和验证)成功出队列 

入队列 

EA 

使用 SASL(验证)成功入队列 

ES 

使用 TLS(安全)成功入队列 

ESA 

使用 TLS 和 SASL(安全和验证)成功入队列 

拒绝尝试入队列(被从通道程序拒绝) 

拒绝收件人邮件。如果发件人请求 NOTIFY=NEVER DSN 标志设置、邮件超时,或者手动返回邮件(例如,imsimta qm "delete" 命令始终为每个收件人生成 "K" 记录,而 qm "return" 命令则生成 "K" 记录而非 "R" 记录)。这表示不会根据发件人自己的请求向发件人发送通知。

与 "K" 记录相比,"R" 记录也为相同的拒绝/超时类型,但在 "R" 中系统会根据失败邮件生成一封新的通知邮件(返回给原发件人)。 

出队列临时故障 

尝试出队列时收件人地址被拒绝(被主通道程序拒绝),或生成故障/退回邮件 

事务被异常中止时显示的警告消息。每个加入队列的收件人地址都有一个 "V" 记录。 

发送的警告消息以通知原发件人邮件尚未发送,但仍在重试的队列中。 

已成功发送给一些收件人,但临时未成功发送给此收件人;所有收件人的原始邮件文件已出队列,并在该位置将此收件人和其他未成功发送的收件人的新邮件文件加入队列 

SMTP 通道的 LOG_CONNECTION + 或 - 条目 

已关闭连接。将出现诊断字段。写入 connection.log_current(或者 mail.log_current,如果使用了单个日志文件)。用于记录关闭连接的原因。尤其是,如果关闭连接是由于达到了某些会话断开连接限制,则诊断字段中将显示此事实。 

已打开连接 

记录 SMTP 验证的成功信息和失败信息。格式与其他 O 和 C 条目相同。尤其是,相同的应用程序和传输信息字段以相同的顺序显示。如果已知用户名,则它将记录在用户名字段中。LOG_CONNECTION MTA 选项的位 7(值 128)将控制此过程。 

已拒绝连接 

建立连接之前尝试连接失败 

已收到 ETRN 命令 

LOG_CONNECTIONLOG_FILENAMELOG_MESSAGE_IDLOG_NOTARYLOG_PROCESSLOG_USERNAME 在 MTA 选项文件中全部启用后,格式将发生变化,如下面示例中所示。(此样例日志条目行已因版式原因而换行;实际日志条目将显示在一个物理行。)


19-Jan-1998 13:13:27.10 HOSTA   2e2d.2.1 tcp_local   l
 E 1 service@siroe.com rfc822;adam@sesta.com
 adam 276 /imta/queue/l/ZZ01IWFY9ELGWM00094D.00
 <01IWFVYLGTS499EC9Y@siroe.com> inetmail
 siroe.com (siroe.com [192.160.253.66])
                  

除了上面已讨论的那些字段外,其中的附加字段是:

  1. 运行通道进程的节点的名称(在本示例中为 HOSTA)。

  2. 进程 ID(以十六进制表示),其后是句号(点)字符和计数。如果此为多线程通道条目(即,tcp_* 通道条目),则在进程 ID 和计数之间还会显示线程 ID。在本示例中,进程 ID 是 2e2d.2.1

  3. 邮件的 NOTARY(传送收件人请求)标志,表示为整数(在本示例中为 276)。

  4. MTA 队列区域中的文件名(在本示例中为 /imta/queue/l/ZZ01IWFY9ELGWM00094D.00)。

  5. 邮件 ID(在本示例中为 <01IWFVYLGTS499EC9Y@siroe.com)。

  6. 正在执行的进程的名称(在本示例中为 inetmail)。在 UNIX 上,对于分发程序进程(例如 SMTP 服务器),此名称通常为 inetmail(除非已使用 SASL)。

  7. 连接信息(在本示例中为 siroe.com (siroe.com [192.160.253.66]))。连接信息由发送系统或通道名称组成,例如由 HELO/EHLO 线路上的发送系统表示的名称(对于外来 SMTP 邮件),或加入通道队列的官方主机名(对于其他类型的通道)。对于 TCP/IP 通道,发送系统的“真实”名称(即由 DNS 反向查找和/或 IP 地址报告的符号名称)也可在 ident* 通道关键字的控制下被报告在扩号内;请参见IDENT 查找。此示例假定使用其中一个关键字,例如使用默认的 identnone 关键字,该关键字选择显示在 DNS 中的名称和 IP 地址。

启用 MTA 日志记录

要仅收集几个特定 MTA 通道的统计信息,请仅启用感兴趣的那些 MTA 通道上的日志记录通道关键字。许多站点倾向于启用所有 MTA 通道上的日志记录。特别是,如果您要尝试跟踪问题,诊断某些问题的第一步是注意到邮件未进入您期望或想要的通道,启用所有通道的日志记录将有助于您调查此类问题。

Procedure在特定通道上启用 MTA 日志记录

步骤
  1. 编辑 imta.cnf 文件。

    该文件位于 /opt/SUNWmsgsr/config 目录中。

  2. 要为特定通道启用日志记录,请将 logging 关键字添加到通道定义中。例如:


    channel-name keyword1 keyword2 logging
    

    此外,您还可以设置一些配置参数,例如日志文件的目录路径、日志级别等等。请参见管理邮件存储、Admin 和 Default 服务的日志

Procedure在所有通道上启用 MTA 日志记录

步骤
  1. 编辑 imta.cnf 文件。

    该文件位于 /opt/SUNWmsgsr/config 目录中。

  2. 将 logging 关键字添加到 MTA 配置文件的通道块区域的 defaults 通道(请参见配置通道默认值)。例如:


    defaults logging notices 1 2 4 7 copywarnpost copysendpost postheadonly 
    noswitchchannel immnonurgent maxjobs 7 defaulthost siroe.com
    
    l defragment charset7 us-ascii charset8 iso-8859-01
    siroe.com

指定附加 MTA 日志记录选项

除了启用日志记录时通常提供的基本信息之外,您还可以通过设置 MTA 选项文件中的各种 LOG_* MTA 选项来指定要包含的其他可选信息字段。IMTA 调整文件 (msg_svr_base/config/imta_tailor) 中的 IMTA_OPTION_FILE 选项指定的文件将指定 MTA 选项文件。默认情况下,该文件为 msg_svr_base/config/option.dat 文件。

有关 MTA 选项文件的完整详细信息,请参见 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“Option File”

Procedure向系统日志发送 MTA 日志

步骤
  1. 编辑 MTA 选项文件。

  2. LOG_MESSAGES_SYSLOG 选项设置为 1。

    0 值为默认值并表示未执行系统日志(事件日志)记录。

Procedure与日志邮件条目相关联

步骤
  1. 编辑 MTA 选项文件。

  2. LOG_MESSAGE_ID 选项设置为 1。

    默认值为 0,表示邮件 ID 未保存在 mail.log 文件中。

Procedure标识邮件传送重试

步骤
  1. 编辑 MTA 选项文件。

  2. LOG_FILENAME 选项设置为 1。

    此选项便于立即发现特定邮件文件传送的重试次数。此选项在了解 MTA 是否将传送给多个收件人的邮件分割为磁盘上独立的邮件文件副本时也会很有用。

Procedure记录 TCP/IP 连接

步骤
  1. 编辑 MTA 选项文件。

  2. 设置 LOG_CONNECTION 选项。

    此选项可使 MTA 记录 TCP/IP 连接以及邮件通信流量。默认情况下,系统将连接日志条目写入 mail.log* 文件。也可以将连接日志条目写入 connection.log* 文件。有关更多信息,请参见 SEPARATE_CONNECTION_LOG 选项。

Procedure将条目写入 connection.log 文件

步骤
  1. 编辑 MTA 选项文件。

  2. SEPARATE_CONNECTION_LOG 选项设置为 1。

    使用此选项来指定将连接日志条目改写入 connection.log 文件中。默认值 0 将导致连接日志记录存储在 MTA 日志文件中。

Procedure通过进程 ID 与日志邮件相关联

步骤
  1. 编辑 MTA 选项文件。

  2. 设置 LOG_PROCESS 选项。

    LOG_CONNECTION 结合使用时,此选项通过进程 ID 启用连接条目与对应的邮件条目的关联关系。

Procedure将与使邮件加入队列的进程关联的用户名保存在 mail.log 文件中

步骤
  1. 编辑 MTA 选项文件。

  2. 设置 LOG_USERNAME 选项。

    此选项控制是否将与使邮件入队的进程相关联的用户名保存在 mail.log 文件中。对于使用了 SASL (SMTP AUTH) 的 SMTP 提交,用户名字段将是经过验证的用户名(带有星号字符前缀)。

MTA 邮件日志记录示例

记录在 MTA 邮件文件中的确切字段格式和字段列表将根据设置的日志记录选项而有所不同。本节将描述一些解释典型日志条目类别的示例。有关其他可选字段的说明,请参见指定附加 MTA 日志记录选项


注 –

由于印刷版式原因,日志文件条目被折叠成多行显示—实际日志文件条目是每个条目一行。


查看日志文件时,请记住在典型系统上会一次处理多封邮件。通常,与特定邮件相关的条目将散布在与其他同时正在处理的邮件相关的条目中。基本日志记录信息适用于收集通过 MTA 移动的邮件总体数目。

如果您希望有关至同一收件人的同一邮件的特定条目相关联,则启用 LOG_MESSAGE_ID。要将特定邮件与 MTA 队列区域中的特定文件相关联,或从条目查看已尝试传送特定的尚未成功出队列的邮件的次数,请启用 LOG_FILENAME。对于 SMTP 邮件(通过 TCP/IP 通道处理),如果希望将远程系统的 TCP 连接与已发送的邮件相关联,则启用 LOG_PROCESSLOG_CONNECTION 的某一级别。

MTA 日志记录示例:用户发送外发邮件

下面的示例显示了如果本地用户通过外发 TCP/IP 通道发送邮件(例如发送到 Internet),而可能看到的日志条目类别相当基本的示例。在本示例中,启用了 LOG_CONNECTION。标有 (1) 和 (2) 的行是一个条目—它们在实际日志文件中将显示为一个物理行。类似地,标有 (3) - (7) 的行是一个条目并将显示为一个物理行。


示例 21–1 MTA 日志记录:本地用户发送外发邮件


19-Jan-1998 19:16:57.64 l            tcp_local    E 1         (1)
 adam@sesta.com rfc822;marlowe@siroe.com marlowe@siroe.com     (2)
 
 19-Jan-1998 19:17:01.16 tcp_local                  D 1        (3)
 adam@sesta.com rfc822;marlowe@siroe.com marlowe@siroe.com     (4)
 dns;thor.siroe.com
 (TCP|206.184.139.12|2788|192.160.253.66|25)                   (5)
 (THOR.SIROE.COM -- Server ESMTP [iMS V5.0 #8694])             (6)
 smtp;250 2.1.5 marlowe@siroe.com and options OK.              (7)
  1. 此行显示了一 (1) 块邮件从 l 通道到 tcp_local 通道入队列 (E) 的日期和时间。

  2. 这是与 (1) 位于同一日志文件物理行的一部分,因排版方便而在此处分行显示。显示了信封 From: 地址(在本例中为 adam@sesta.com)以及原先版本和当前版本的信封 To: 地址(在本例中为 marlowe@siroe.com )。

  3. 显示了一 (1) 块邮件从 tcp_local 通道出队列 (D) 的日期和时间—即,由 tcp_local 通道成功发送到某一远程 SMTP 服务器。

  4. 显示了信封 From: 地址、原始信封 To: 地址和当前格式的信封 To: 地址。

  5. 显示了与之建立连接的实际系统在 DNS 中名为 thor.siroe.com,本地发送系统具有 IP 地址 206.184.139.12 并从端口 2788 发送,远程目标系统具有 IP 地址 192.160.253.66 并且远程目标系统的连接端口是端口 25。

  6. 显示了远程 SMTP 服务器的 SMTP 标志行。

  7. 显示了返回的此地址的 SMTP 状态代码;250 是基本的 SMTP 成功代码,而此远程 SMTP 服务器使用扩展的 SMTP 状态代码和某一附加文本进行响应。


MTA 日志记录示例:包括可选日志记录字段

此示例显示了类似于示例 21–3 中所示的日志记录条目,但通过设置显示文件名和邮件 ID 的LOG_FILENAME=1LOG_MESSAGE_ID=1 记录了附加信息;请参见 (1) 和 (2)。特别是邮件 ID 可用于将条目与邮件相关联。


示例 21–2 MTA 日志记录:包括可选日志记录字段


19-Jan-1998 19:16:57.64 l            tcp_local    E 1
  adam@sesta.com rfc822;marlowe@siroe.com marlowe@siroe.com
  /imta/queue/tcp_local/ZZ01ISKLSKLZLI90N15M.00
   <01ISKLSKC2QC90N15M@sesta.com>    (1)
                  
 19-Jan-1998 19:17:01.16 tcp_local                  D 1
  adam@sesta.com rfc822;marlowe@siroe.com marlowe@siroe.com
  /imta/queue/tcp_local/Z01ISKLSKLZLI90N15M.00
    <01ISKLSKC2QC90N15M@sesta.com>   (2)
  dns;thor.siroe.com (TCP|206.184.139.12|2788|192.160.253.66|25)
  (THOR.SIROE.COM -- Server ESMTP [iMS V5.0 #8694])
  smtp;250 2.1.5 marlowe@siroe.com and options OK.

MTA 日志记录示例:发送到列表

此示例对启用 LOG_FILENAME=1LOG_MESSAGE_ID=1LOG_CONNECTION=1 将邮件发送给多个收件人进行了说明。此处已将用户 adam@sesta.com 发送给 MTA 邮递列表 test-list@sesta.com,此邮递列表已扩展到 bob@sesta.comcarol@varrius.comdavid@varrius.com。请注意每个收件人的原始信封 To: 地址是 test-list@sesta.com,尽管当前信封 To: 地址是每个收件人各自的地址。请注意邮件 ID 是如何保持一致的,尽管涉及了两个单独的文件(一个用于 l 通道而另一个用于出 tcp_local 通道)。


示例 21–3 MTA 日志记录:发送到列表


19-Jan-1998 20:01:44.10 l    l                    E 1
  adam@sesta.com rfc822;test-list@sesta.com bob
  imta/queue/l/ZZ01ISKND3DE1K90N15M.00
  <01ISKND2H8MS90N15M@sesta.com>
 
 19-Jan-1998 20:01:44.81 l            tcp_local    E 1
  adam@sesta.com rfc822;test-list@sesta.com carol@varrius.com
  imta/queue/tcp_local/ZZ01ISKND2WS1I90N15M.00 
  <01ISKND2H8MS90N15M@sesta.com>
 
 19-Jan-1998 20:01:44.81 l            tcp_local    E 1
  adam@sesta.com rfc822;test-list@sesta.com david@varrius.com
  imta/queue/tcp_local/ZZ01ISKND2WS1I90N15M.00
 <01ISKND2H8MS90N15M@sesta.com>
 
 19-Jan-1998 20:01:50.69 l                         D 1
  adam@sesta.com rfc822;test-list@sesta.com bob
  imta/queue/l/ZZ01ISKND3DE1K90N15M.00
  <01ISKND2H8MS90N15M@sesta.com>
 
 19-Jan-1998 20:01:57.36 tcp_local                  D 1
  adam@sesta.com rfc822;test-list@sesta.com carol@varrius.com
  imta/queue/tcp_local/ZZ01ISKND2WS1I90N15M.00
  <01ISKND2H8MS90N15M@sesta.com>
  dns;gw.varrius.com (TCP|206.184.139.12|2788|192.160.253.66|25)
  (gw.varrius.com -- SMTP Sendmail)
  smtp;250 OK.
 
 19-Jan-1998 20:02:06.14 tcp_local                  D 1
  adam@sesta.com rfc822;test-list@sesta.com david@varrius.com
  imta/queue/tcp_local/ZZ01ISKND2WS1I90N15M.00
  <01ISKND2H8MS90N15M@sesta.com>
  dns;gw.varrius.com (TCP|206.184.139.12|2788|192.160.253.66|25)
  (gw.varrius.com -- SMTP Sendmail)
  smtp;250 OK.

MTA 日志记录:发送到不存在的域

此示例对尝试发送到不存在的域(此处为 very.bogus.com)进行了说明;即,发送到未被 MTA 的重写规则发现其不存在的、并且被 MTA 匹配到外发 TCP/IP 通道的域名。此示例假设 MTA 选项设置为 LOG_FILENAME=1LOG_MESSAGE_ID=1

TCP/IP 通道在 DNS 中运行并检查域名时,DNS 返回一个错误,指示该名称不存在。请注意 [5] 中所示的“拒绝”条目 (R),以及 [6] 中所示的 DNS 返回的错误(指示该域名为非法域名)。

由于提交邮件后地址被拒绝,MTA 将生成退回邮件给原发送人。MTA 将新拒绝邮件加入队列以发送给原发送人 (1),并在删除原出站邮件((5) 中所示的 R 条目)之前,将一份副本发送给邮寄主管 (4)。

通知邮件(例如退回邮件)具有空信封 From: 地址—例如,如 (2) 和 (8) 中所示—其中信封 From: 字段显示为空白。由 MTA 生成的退回邮件的初始排队显示了新通知邮件的邮件 ID 和紧随其后的原始邮件 (3) 的邮件 ID。(此类信息对于 MTA 不是总可以使用,但可用于记录时,它允许对应于出站失败的邮件的日志条目与对应于结果通知邮件的日志条目相关联。)此类通知邮件入队到进程通道,该通道转而又将这些邮件排队到相应的目标通道 (7)。


示例 21–4 MTA 日志记录:发送到不存在的域


19-JAN-1998 20:49:04 l            tcp_local    E 1
  adam@sesta.com rfc822;user@very.bogus.com user@very.bogus.com
  imta/queue/tcp_local/ZZ01ISKP0S0LVQ94DU0K.00
 <01ISKP0RYMAS94DU0K@SESTA.COM>
 
19-JAN-1998 20:49:33 tcp_local    process      E 1                (1)
 rfc822;adam@sesta.com adam@sesta.com                             (2)
 imta/queue/process/ZZ01ISKP0S0LVQ94DTZB.00
 <01ISKP22MW8894DTAS@SESTA.COM>,<01ISKP0RYMAS94DU0K@SESTA.COM>    (3)

19-JAN-1998 20:49:33 tcp_local    process      E 1                (4)
 rfc822;postmaster@sesta.com postmaster@sesta.com
 imta/queue/process/ZZ01ISKP0S0LVQ94DTZB.00
 <01ISKP22MW8894DTAS@SESTA.COM>,<01ISKP0RYMAS94DU0K@SESTA.COM>
 
19-JAN-1998 20:50:07 tcp_local                  R 1               (5)
 adam@sesta.com rfc822;user@very.bogus.com user@very.bogus.com
 imta/queue/tcp_local/ZZ01ISKP0S0LVQ94DU0K.00
 <01ISKP0RYMAS94DU0K@SESTA.COM>
 Illegal host/domain name found                                   (6)

19-JAN-1998 20:50:08 process      l            E 3                (7)
 rfc822;adam@sesta.com adam                                       (8)
 imta/queue/l/ZZ01ISKP23BUQS94DTYL.00
 <01ISKP22MW8894DTAS@SESTA.COM>
 
19-JAN-1998 20:50:08 process      l            E 3
  rfc822;postmaster@sesta.com postmaster
  imta/queue/l/ZZ01ISKP23BUQS94DTYL.00
 <01ISKP22MW8894DTAS@SESTA.COM>
 
19-JAN-1998 20:50:12 l                         D 3
  rfc822;adam@sesta.com adam
  imta/queue/l/ZZ01ISKP23BUQS94DTYL.00
  <01ISKP22MW8894DTAS@SESTA.COM>
 
19-JAN-1998 20:50:12 l                         D 3
  rfc822;postmaster@sesta.com postmaster
  imta/queue/l/ZZ01ISKP23BUQS94DTYL.00
  <01ISKP22MW8894DTAS@SIROE.COM>

MTA 日志记录示例:发送至不存在的远程用户

此示例对尝试发送到远程系统上的错误地址进行了说明。此示例假设 MTA 选项设置为 LOG_FILENAME=1LOG_MESSAGE_ID=1,通道选项设置为 LOG_BANNER=1LOG_TRANSPORTINFO=1。请注意拒绝条目 (R),如 (1) 中所示。但与示例 21–4 中的拒绝条目不同,请注意此处的拒绝条目显示了已建立到远程系统的连接,并显示了远程 SMTP 服务器发布的 SMTP 错误代码,(2) 和 (3)。(2) 中所示的信息是设置通道选项 LOG_BANNER=1LOG_TRANSPORTINFO=1 的结果。


示例 21–5 MTA 日志记录:发送至不存在的远程用户


20-JAN-1998 13:11:05 l            tcp_local    E 1
  adam@sesta.com rfc822;nonesuch@siroe.com nonesuch@siroe.com
  imta/queue/tcp_local/ZZ01ISLNBB1JOE94DUWH.00
  <01ISLNBAWV3094DUWH@sesta.com>
 
20-JAN-1998 13:11:08 tcp_local    process      E 1
  rfc822;adam@sesta.com adam@sesta.com
  imta/queue/process/ZZ01ISLNBB1JOE94DSGB.00
  <01ISLNBFKIDS94DUJ8@sesta.com>,<01ISLNBAWV3094DUWH@sesta.com>
 
 20-JAN-1998 13:11:08 tcp_local    process      E 1
  rfc822;postmaster@sesta.com postmaster@sesta.com
  imta/queue/process/ZZ01ISLNBB1JOE94DSGB.00
  <01ISLNBFKIDS94DUJ8@sesta.com>,<01ISLNBAWV3094DUWH@sesta.com>
 
20-JAN-1998 13:11:11 tcp_local                  R 1       (1)
  adam@sesta.com rfc822;nonesuch@siroe.com nonesuch@siroe.com
  imta/queue/tcp_local/ZZ01ISLNBB1JOE94DUWH.00 
  <01ISLNBAWV3094DUWH@sesta.com>
  dns;thor.siroe.com
  (TCP|206.184.139.12|2788|192.160.253.66|25)             (2)
  (THOR.SIROE.COM -- Server ESMTP [iMS V5.0 #8694])
  smtp; 553 unknown or illegal user: nonesuch@siroe.com   (3)
 
20-JAN-1998 13:11:12 process      l            E 3
  rfc822;adam@sesta.com adam
  imta/queue/l/ZZ01ISLNBGND1094DQDP.00
  <01ISLNBFKIDS94DUJ8@sesta.com>
 
20-JAN-1998 13:11:12 process      l            E 3
  rfc822;postmaster@sesta.com postmaster
  imta/queue/l/ZZ01ISLNBGND1094DQDP.00
  <01ISLNBFKIDS94DUJ8@sesta.com>
 
20-JAN-1998 13:11:13 l                         D 3
  rfc822;adam@sesta.com adam@sesta.com
  imta/queue/l/ZZ01ISLNBGND1094DQDP.00
  <01ISLNBFKIDS94DUJ8@sesta.com>
 
20-JAN-1998 13:11:13 l                         D 3
  rfc822;postmaster@sesta.com postmaster@sesta.com
  imta/queue/l/ZZ01ISLNBGND1094DQDP.00
  <01ISLNBFKIDS94DUJ8@sesta.com>

MTA 日志记录示例:拒绝远程端提交邮件的尝试

此示例对当 MTA 拒绝远程端提交邮件的尝试时所产生的日志文件条目的类别进行了说明。(本示例假设未启用 LOG_* 可选项,因此条目中仅记录了基本字段。请特别注意,启用 LOG_CONNECTION 选项将导致在此类 J 条目中产生附加信息字段。)在此例中,示例是对已使用 ORIG_SEND_ACCESS 映射设置了 SMTP 中继阻止(请参见配置 SMTP 中继阻止)的 MTA 而言的 ,该映射包括:

ORIG_SEND_ACCESS

! ...numerous entries omitted...
!
   tcp_local|*|tcp_local|*   $NRelaying$ not$ permitted

其中 alan@very.bogus.com 不是内部地址。因此远程用户 harold@varrius.com 尝试通过 MTA 系统中继到远程用户 alan@very.bogus.com 遭到拒绝。


示例 21–6 MTA 日志记录:拒绝远程端提交邮件的尝试


28-May-1998 12:02:23 tcp_local            J 0               (1)
 harold@varrius.com rfc822; alan@very.bogus.com             (2)
 550 5.7.1 Relaying not permitted: alan@very.bogus.com      (3)
  1. 此日志显示了拒绝远程端提交邮件的尝试的日期和时间。拒绝由 J 记录表示。(MTA 通道尝试发送邮件而被拒绝的情况以 R 记录表示,如示例 21–4示例 21–5 中所示)。


    注 –

    写入日志的最后一个 J 记录将有一个指示,用于声明它是给定会话的最后一个 J 记录。此外,Messaging Server 的当前版本没有对 J 记录的数量做出限制。


  2. 显示了尝试的信封 From: 和 To: 地址、地址。在此示例中,无可用的原始信封 To: 信息,因此该字段为空。

  3. 此条目包括 MTA 发给远程端(尝试的发件人)的 SMTP 错误消息。


MTA 日志记录示例:多次传送尝试

此示例对在第一次尝试时不能发送邮件所产生的日志文件条目的类别进行了说明,因此 MTA 将多次尝试发送该邮件。本示例假设选项设置为 LOG_FILENAME=1LOG_MESSAGE_ID=1


示例 21–7 MTA 日志记录:多次传送尝试


15-Jan-1998 10:31:05.18 tcp_internal   tcp_local   E 3          (1)
 adam@hosta.sesta.com rfc822;user@some.org user@some.org
 imta/queue/tcp_local/ZZ01IS3D2ZP7FQ9UN54R.00 
 <01IRUD7SVA3Q9UN2D4@sesta.com>
 
15-Jan-1998 10:31:10.37 tcp_local                  Q 3          (2)
 adam@hosta.sesta.com rfc822;user@some.org user@some.org
 imta/queue/tcp_local/ZZ01IS3D2ZP7FQ9UN54R.00                   (3)
 <01IRUD7SVA3Q9UN2D4@sesta.com>
 TCP active open: Failed connect()    Error: no route to host   (4)
 
     ...several hours worth of entries...

15-Jan-1998 12:45:39.48 tcp_local                  Q 3          (5)
  adam@hosta.sesta.com rfc822;user@some.org user@some.org
  imta/queue/tcp_local/ZY01IS3D2ZP7FQ9UN54R.00                  (6)
  <01IRUD7SVA3Q9UN2D4@sesta.com>
  TCP active open: Failed connect()    Error: no route to host
 
  ...several hours worth of entries...

 15-Jan-1998 16:45:24.72 tcp_local                  Q 3
  adam@hosta.sesta.com rfc822;user@some.org user@some.org
  imta/queue/tcp_local/ZX01IS67NY4RRK9UN7GP.00                  (7)
                   <01IRUD7SVA3Q9UN2D4@sesta.com>
  TCP active open: Failed connect() Error: connection refused   (8)

  ...several hours worth of entries...

 15-Jan-1998 20:45:51.55 tcp_local                  D 3         (9)
  adam@hosta.sesta.com rfc822;user@some.org user@some.org
  imta/queue/tcp_local/ZX01IS67NY4RRK9UN7GP.00
  <01IRUD7SVA3Q9UN2D4@sesta.com>
  dns;host.some.org (TCP|206.184.139.12|2788|192.1.1.1|25)
  (All set, fire away)
  smtp; 250 Ok
  1. 邮件进入 tcp_internal 通道—可能来自 POP 或 IMAP 客户机,或可能来自使用 MTA 作为 SMTP 中继的组织中的其他主机;MTA 将其加入到 tcp_local 外发通道队列。

  2. 第一次传送尝试失败,由 Q 条目表示。

  3. ZZ* 文件名可以看出这是第一次传送尝试。

  4. TCP/IP 软件包找不到至远程端的路由时,此传送尝试将失败。与 示例 21–4 不同,DNS 并非拒绝目标域名 some.org;而是,"no route to host" 错误表示在发送端和接收端之间存在网络问题。

  5. 下一次 MTA 定期作业运行时,它重新尝试传送,再次不成功。

  6. 文件名现在为 ZY*,表示这是第二次尝试。

  7. 第三次未成功尝试的文件名是 ZX*

  8. 下一次定期作业重新尝试传送,传送失败,尽管这一次 TCP/IP 软件包未对无法进入远程 SMTP 服务器表示不满,但其实是远程 SMTP 服务器不接受连接。(可能远程端修复了其网络问题,但尚未备份其 SMTP 服务器- - 或其 SMTP 服务器正忙于处理其他邮件而无法在 MTA 尝试连接时接受连接。)

  9. 最终对邮件取消排队。


MTA 日志记录:通过转换通道路由外来 SMTP 邮件

此示例对通过转换通道路由邮件的情况进行了说明。假设此站点具有 CONVERSIONS 映射表,例如:

CONVERSIONS
  IN-CHAN=tcp_local;OUT-CHAN=l;CONVERT   Yes

本示例假设选项设置为 LOG_FILENAME=1LOG_MESSAGE_ID=1


示例 21–8 MTA 日志记录:通过转换通道路由外来 SMTP 邮件


04-Feb-1998 00:06:26.72 tcp_local    conversion   E 9      (1)
  amy@siroe.edu rfc822;bert@sesta.com bert@sesta.com
  imta/queue/conversion/ZZ01IT5UAMZ4QW98518O.00
  <01IT5UALL14498518O@siroe.edu>
 
 04-Feb-1998 00:06:29.06 conversion   l            E 9     (2)
                   amy@siroe.edu rfc822;bert@sesta.com bert
  imta/queue/l/ZZ01IT5UAOXLDW98509E.00  <01IT5STUMUFO984Z8L@siroe.edu>
 
04-Feb-1998 00:06:29.31 conversion                D 9      (3)
 amy@siroe.edu rfc822;bert@sesta.com bert
 imta/queue/conversion/ZZ01IT5UAMZ4QW98518O.00
 <01IT5UALL14498518O@siroe.edu>
 
 04-Feb-1998 00:06:32.62 l                         D 9     (4)
  amy@siroe.edu rfc822;bert@siroe.com bert
  imta/queue/l/ZZ01IT5UAOXLDW98509E.00
  <01IT5STUMUFO984Z8L@siroe.edu>

               
  1. 来自外部用户 amy@siroe.edu 的邮件进入,其收件人地址为 l 通道收件人 bert@sesta.com 的地址。但是,CONVERSIONS 映射条目使邮件初始时排到转换通道(而不是直接进入 l 通道)。

  2. 转换通道运行并将邮件加入 l 通道队列。

  3. 然后转换通道可以使邮件出队列(删除旧邮件文件)。

  4. 最后,l 通道使邮件出队列(传送)。


MTA 日志记录示例:出站连接日志记录

此示例说明了通过 LOG_CONNECTION=3 启用连接日志记录后外发邮件的日志输出。在本示例中还假设 LOG_PROCESS=1LOG_MESSAGE_ID=1LOG_FILENAME=1。本示例显示了用户 adam@sesta.com 将同一邮件(请注意每个邮件副本的邮件 ID 都相同)发送给三个收件人 bobby@hosta.sesta.comcarl@hosta.sesta.comdave@hostb.sesta.com 的情况。本示例假设邮件从标有(如此类通道通常的那样)single_sys 通道关键字的 tcp_local 通道发出。因此,如 (1)、(2) 和 (3) 中所示,系统将在磁盘上为不同主机名的每组收件人分别创建邮件文件,其中 bobby@hosta.sesta.comcarl@hosta.sesta.com 收件人存储在同一邮件文件中,而 dave@hostb.sesta.com 收件人存储在另一邮件文件中。


示例 21–9 MTA 日志记录:出站连接日志记录


19-Feb-1998 10:52:05.41 1e488.0 l            tcp_local    E 1
 adam@sesta.com rfc822;bobby@hosta.sesta.com bobby@hosta.sesta.com
 imta/queue/tcp_local/ZZ01ITRF7BO388000FCN.00                    (1)
  <01ITRF7BDHS6000FCN@SESTA.COM>

19-Feb-1998 10:52:05.41 1e488.0 l            tcp_local    E 1
 adam@sesta.com rfc822;carl@hosta.sesta.com carl@hosta.sesta.com
 imta/queue/tcp_local/ZZ01ITRF7BO388000FCN.00                    (2)
   <01ITRF7BDHS6000FCN@SESTA.COM>

19-Feb-1998 10:52:05.74 1e488.1 l            tcp_local    E 1
 adam@sesta.com rfc822;dave@hostb.sesta.com dave@hostb.sesta.com
 imta/queue/tcp_local/ZZ01ITRF7C11FU000FCN.00                    (3)
   <01ITRF7BDHS6000FCN@SESTA.COM>

19-Feb-1998 10:52:10.79 1f625.2.0 tcp_local    -            O    (4)
 TCP|206.184.139.12|5900|206.184.139.66|25
 SMTP/hostb.sesta.com/mailhub.sesta.com                          (5)
 
19-Feb-1998 10:52:10.87 1f625.3.0 tcp_local    -            O    (6)
 TCP|206.184.139.12|5901|206.184.139.70|25
 SMTP/hosta.sesta.com/hosta.sesta.com                            (7)

19-Feb-1998 10:52:12.28 1f625.3.1 tcp_local                  D 1
 adam@sesta.com rfc822;bobby@hosta.sesta.com bobby@hosta.sesta.com
 imta/queue/tcp_local/ZZ01ITRF7BO388000FCN.00
  <01ITRF7BDHS6000FCN@SESTA.COM>
 hosta.sesta.com dns;hosta.sesta.com                            (8)
 (TCP|206.184.139.12|5901|206.184.139.70|25)
 (hosta.sesta.com -- Server ESMTP [iMS V5.0 #8790])
 (TCP|206.184.139.12|5901|206.184.139.70|25)
 smtp;250 2.1.5 bobby@hosta.sesta.com and options OK.

19-Feb-1998 10:52:12.28 1f625.3.1 tcp_local                  D 1
 adam@sesta.com rfc822;carl@hosta.sesta.com carl@hosta.sesta.com
 imta/queue/tcp_local/ZZ01ITRF7BO388000FCN.00
  <01ITRF7BDHS6000FCN@SESTA.COM>
 hosta.sesta.com dns;hosta.sesta.com
 (TCP|206.184.139.12|5901|206.184.139.70|25)
 (hosta.sesta.com -- Server ESMTP [iMS V5.0 #8790])
 (TCP|206.184.139.12|5901|206.184.139.70|25)
 smtp;250 2.1.5 carl@hosta.sesta.com and options OK.

19-Feb-1998 10:52:12.40 1f625.3.2 tcp_local      -            C  (9)
 TCP|206.184.139.12|5901|206.184.139.70|25
 SMTP/hosta.sesta.com/hosta.sesta.com

19-Feb-1998 10:52:13.01 1f625.2.1 tcp_local                  D 1
 adam@sesta.com rfc822;dave@hostb.sesta.com dave@hostb.sesta.com
 imta/queue/tcp_local/ZZ01ITRF7C11FU000FCN.00
  <01ITRF7BDHS6000FCN@SESTA.COM>
 mailhub.sesta.com dns;mailhub.sesta.com
 (TCP|206.184.139.12|5900|206.184.139.66|25)
 (MAILHUB.SESTA.COM -- Server ESMTP [iMS V5.0 #8694])
 (TCP|206.184.139.12|5900|206.184.139.66|25)
 smtp;250 2.1.5 dave@hostb.sesta.com and options OK.

19-Feb-1998 10:52:13.05 1f625.2.2 tcp_local      -            C  (10)
                  
 TCP|206.184.139.12|5900|206.184.139.66|25
 SMTP/hostb.sesta.com/mailhub.sesta.com

               
  1. 邮件已排入队列,准备发给第一个收件人...

  2. ....准备发给第二个收件人....

  3. ....准备发给第三个收件人。

  4. 设置 LOG_CONNECTION=3 将使 MTA 写入此条目。减号 (-) 表示此条目指外发连接。O 表示此条目对应于连接的开口。同时请注意尽管此开口由线程 2 和线程 3 来执行,但由于多线程的 TCP/IP 通道使用同一进程来处理这些不同的连接开口,因此此处的进程 ID 相同(均为 1f625)。

  5. 由于要连接到两个单独的远程系统,独立线程中的多线程 SMTP 客户机将打开与每个系统的连接—第一个显示在本条目中,第二个显示在 7 中。条目的此部分显示了发送和目标 IP 号以及端口号,并显示了初始主机名和通过 DNS 查找到的主机名。在 SMTP/initial-host/dns-host 子句中,请注意初始主机名和在初始主机名上执行 DNS MX 记录查找后所使用的主机名的显示:mailhub.sesta.com 显然是 hostb.sesta.com 的 MX 服务器。

  6. 多线程的 SMTP 客户机在单独的线程中(尽管进程相同)打开到第二系统的连接。

  7. 由于要连接到两个单独的远程系统,独立线程中的多线程 SMTP 客户机将打开与每个系统的连接—第二个显示在本条目中,第一个显示在上面的 5 中。条目的此部分显示了发送和目标 IP 号以及端口号,并显示了初始主机名和通过 DNS 查找到的主机名。在本示例中,系统 hosta.sesta.com 显然自己直接接收邮件。

  8. 除了产生特定的连接条目外,LOG_CONNECTION=3 还可将与连接相关的信息包含进常规邮件条目中,如此处所示。

  9. 设置 LOG_CONNECTION=3 将使 MTA 写入此条目。所有邮件(本示例中的 bobby 和 carl 邮件)出队列后,系统将关闭连接,如此条目中的 C 所表示。


MTA 日志记录示例:入站连接日志记录

此示例说明了通过 LOG_CONNECTION=3 启用连接日志记录后外来 SMTP 邮件的日志输出。


示例 21–10 MTA 日志记录:入站连接日志记录


19-Feb-1998 17:02:08.70 tcp_local    +            O          (1)
 TCP|206.184.139.12|25|192.160.253.66|1244 SMTP              (2)

19-Feb-1998 17:02:26.65 tcp_local    l             E 1
 service@siroe.com rfc822;adam@sesta.com adam
 THOR.SIROE.COM (THOR.SIROE.COM [192.160.253.66])            (3)

 19-Feb-1998 17:02:27.05 tcp_local    +             C        (4)
                   TCP|206.184.139.12|25|192.160.253.66|1244 SMTP
 
19-Feb-1998 17:02:31.73 l                          D 1
  service@siroe.com rfc822;adam@sesta.com adam
  1. 远程系统打开一个连接。字符 O 表示此条目与打开连接有关;字符 + 表示此条目与外来连接有关。

  2. 显示用于连接的 IP 号和端口。在此条目中,接收系统(创建日志文件条目的系统)具有 IP 地址 206.184.139.12 并且将连接指向端口 25;发送系统具有 IP 地址 192.160.253.66 并从端口 1244 发送。

  3. 在将外来 TCP/IP 通道 (tcp_local) 的邮件加入 l 通道收件人队列的条目中,请注意由于启用了 LOG_CONNECTION=3 而包含了超过默认值范围的信息。特别是,发送系统在其 HELO 或 EHLO 行中声明的名称、在连接 IP 号上由 DNS 反向查找到的发送系统的名称,以及发送系统的 IP 地址均被记录下来;请参见第 12 章,配置通道定义行为。

  4. 关闭入站连接。字符 C 表示此条目与关闭连接有关;字符 + 表示此条目与外来连接有关。


启用分发程序调试

分发程序错误和调试输出(如果已启用)将被写入 MTA 日志目录中的 dispatcher.log 文件。在 msg_svr_base/imta/dispatcher.cnf 文件中指定分发程序配置信息。安装时将创建一个默认的配置文件,可不必对其进行更改而直接使用。但是,如果出于安全性或性能原因需要修改默认配置文件,则可以通过编辑 dispatcher.cnf 文件来实现此操作。

表 21–3 分发程序调试位

位 

 

十六进制值 

十进制值 

用法 

 

x 00001 

基本服务分发程序主模块调试。 

x 00002 

附加服务分发程序主模块调试。 

x 00004 

服务分发程序配置文件日志记录。 

x 00008 

基本服务分发程序其他调试。 

x 00010 

16 

基本服务调试。 

x 00020 

32 

附加服务调试。 

x 00040 

64 

进程相关服务调试。 

x 00080 

128 

不使用。 

x 00100 

256 

基本服务分发程序和进程通信调试。 

x 00200 

512 

附加服务分发程序和进程通信调试。 

10 

x 00400 

1024 

软件包级别通信调试。 

11 

x 00800 

2048 

不使用。 

12 

x 01000 

4096 

基本工作进程调试。 

13 

x 02000 

8192 

附加工作进程调试。 

14 

x 04000 

16384 

附加工作进程调试,特别是连接切换。 

15 

x 08000 

32768 

不使用。 

16 

x 10000 

65536 

基本工作进程到服务分发程序 I/O 调试。 

17 

x 20000 

131072 

附加工作进程到服务分发程序 I/O 调试。 

20 

x 100000 

1048576 

基本统计信息调试。 

21 

x 200000 

2097152 

附加统计信息调试。 

24 

x 1000000 

16777216 

将 PORT_ACCESS 拒绝记录到 dispatcher.log 文件中。 

Procedure启用分发程序错误调试输出

步骤
  1. 编辑 dispatcher.cnf 文件。

  2. DEBUG 选项设置为 -1。

    您还可以设置逻辑变量或环境变量 IMTA_DISPATCHER_DEBUG (UNIX),它以十六进制将 32 位调试掩码定义为值 FFFFFFFF。上表介绍了每个位的含义。

Procedure设置分发程序参数 (Solaris)

分发程序配置文件中提供的分发程序服务将影响各种系统参数的要求。系统的堆大小 (datasize) 必须能够满足分发程序的线程堆栈使用。

步骤
  1. 要显示堆大小(即默认的 datasize),请使用以下命令之一:

    csh 命令:


    # limit
    

    ksh 命令:


    # ulimit -a
    

    Solaris 实用程序


    # sysdef
    
  2. 对每个分发程序服务计算 STACKSIZE*MAX_CONNS,然后把对每项服务计算的值相加。系统的堆大小必须至少是此数目的两倍。