本节介绍了邮件存储(POP、IMAP 和 HTTP)、Admin 和 Default 服务的日志记录。(请参见表 21–1)。
对于这些服务,您可以使用 Console 来指定日志设置和查看日志。您指定的设置将影响所记录的事件以及事件的数目。分析日志文件时,您可以使用这些设置和其他特性来完善日志事件的搜索。
本节包含以下小节:
本节描述了邮件存储和管理服务的以下日志特性:日志记录级别、日志事件的类别、日志文件名约定和日志文件目录。
日志记录的级别或优先级定义了日志记录活动的详细程度或冗长度。高优先级意味着较简略,仅记录具有高优先级(高严重程度)的事件。低级别意味着更为详细,将在日志文件中记录更多事件。
您可以通过设置 logfile.service.loglevel 配置参数来为每种服务(POP、IMAP、HTTP、Admin 和 Default)单独设置日志记录级别(请参见定义和设置服务日志记录选项)。您还可以使用日志记录级别来过滤对日志事件的搜索。表 21–4 对可用级别进行了说明。这些日志记录级别是 UNIX syslog 工具所定义的级别的子集。
表 21–4 存储和管理服务的日志记录级别
级别 |
说明 |
---|---|
Critical |
最少的日志记录信息。每当发生严重问题或紧急情况(例如服务器无法访问邮箱或其运行所需的库)时,将一个事件写入日志。 |
Error |
每当发生错误情况(例如尝试连接到客户机或其他服务器失败)时,将一个事件写入日志。 |
Warning |
每当发生警告情况(例如服务器无法理解客户机所发送的通信)时,将一个事件写入日志。 |
Notice |
每当发生通知(正常但重要的情况,例如用户登录失败或会话关闭)时,将一个事件写入日志。这是默认日志级别。 |
Information |
执行每个重要操作(例如用户成功登录、注销、创建或重命名邮箱)时,将一个事件写入日志。 |
Debug |
最冗长的日志记录。仅供调试使用。执行每个进程或任务中的单个步骤时都将事件写入日志,用以确定问题。 |
当选择一个特定日志记录级别时,与该级别以及高于该级别(较低冗长度)的所有级别相对应的事件都将包括在日志记录内。日志记录的默认级别为“通知”。
指定的日志记录越详细,日志文件将占用的磁盘空间就越大;有关指导原则,请参见定义和设置服务日志记录选项。
在每个支持的服务或协议中,Messaging Server 将根据日志事件所发生的设备或功能区进一步对日志事件进行分类。每个日志事件都包含生成日志事件的设备的名称。这些类别将有助于在搜索过程中过滤事件。表 21–5 列出了 Messaging Server 为日志记录目的所标识的类别。
表 21–5 日志事件的发生类别
设备 |
说明 |
---|---|
General |
与此协议或服务相关的无明显特征的操作 |
LDAP |
与 Messaging Server 访问 LDAP 目录数据库相关的操作 |
Network |
与网络连接相关的操作(套接字错误归入此类别) |
Account |
与用户帐户相关的操作(用户登录归入此类别) |
Protocol |
与特定于协议的命令相关的协议级操作(由 POP、IMAP 或 HTTP 函数返回的错误归入此类别) |
Stats |
与收集服务器统计信息相关的操作 |
Store |
与访问邮件存储相关的低级操作(读/写错误归入此类别) |
有关在日志搜索中将类别用作过滤器的示例,请参见搜索并查看服务日志。
每项日志记录服务均被指定了单独的目录,其中存储了服务的日志文件。所有 IMAP 日志文件均存储在一起,所有 POP 日志文件及其他服务的日志文件也是如此。您可以定义每个目录的位置,也可以定义目录中允许存在的日志文件的最大大小和数目。
请确保存储容量足够所有日志文件使用。日志数据可能量很大,尤其在较低(较冗长)的日志记录级别中。
同时,定义适当的日志记录级别、日志旋转、日志过期和服务器备份策略也很重要,以便备份所有日志文件目录并使这些目录都不会过载;否则,就可能丢失信息。请参见定义和设置服务日志记录选项。
所有由 Messaging Server 创建的邮件存储和管理服务日志文件都具有相同的内容格式。日志文件是多行文本文件,其中每行描述一个日志事件。对于每项支持的服务,所有事件说明都具有通用格式:
dateTime hostName processName[pid]: category logLevel: eventMessage
表 21–6 列出了日志文件组件。请注意,除了日期/时间格式不同以及此格式包括两个附加组件(category 和 logLevel)以外,此事件说明的格式与 UNIX syslog 工具定义的格式相同。
表 21–6 存储和管理日志文件组件
组件 |
定义 |
---|---|
dateTime |
记录事件时的日期和时间,以 dd/mm/yyyy hh:mm:ss 格式表示,时区字段以 GMT +/-hhmm 表示。例如:02/Jan/1999:13:08:21 -0700 |
hostName |
服务器在其上运行的主机名:例如,showshoe。 注释:如果主机上有多个 Messaging Server 示例,则可以使用进程 ID (pid) 将不同示例的日志事件相互分开。 |
processName |
生成事件的进程名称:例如,cgi_store。 |
pid |
生成事件的进程 ID:例如,18753。 |
category |
事件所属的类别:例如,General(请参见示例 21–5)。 |
logLevel |
事件所表示的日志记录级别:例如,Notice(请参见示例 21–4)。 |
eventMessage |
可为任意长度的特定于事件的解释消息:例如,Log created (894305624)。 |
以下是使用 Console 所查看到的三个日志事件示例:
02/May/1998:17:37:32 -0700 showshoe cgi_store[18753]: General Notice: Log created (894155852) 04/May/1998:11:07:44 -0400 xyzmail cgi_service[343]: General Error: function=getserverhello|port=2500|error=failed to connect 03/Dec/1998:06:54:32 +0200 SiroePost imapd[232]: Account Notice: close [127.0.0.1] [unauthenticated] 1998/12/3 6:54:32 0:00:00 0 115 0
IMAP 和 POP 事件条目可能会以三个数字结束。以上示例中包含:0 115 0。第一个数字是客户机发送的字节数,第二个数字是服务器发送的字节数,第三个数字是选定的邮箱数(对于 POP 通常为 1)。
在“日志查看器”窗口中查看日志文件时,您可以通过搜索事件中的任意特定组件(例如特定的日志记录级别、类别或特定的进程 ID)来限制显示的事件。有关更多信息,请参见搜索并查看服务日志。
每个日志条目事件消息的格式都特定于所记录事件的类型,即每个服务都定义了出现在其任何事件消息中的内容。许多事件消息简单明了,而其他事件消息则复杂一些。
您可以定义能最好地满足管理需要的邮件存储和管理服务日志记录配置。本节讨论了可帮助您决定最佳配置和策略的问题,并解释了如何实现这些配置和策略。
日志文件的命名模式 (service.sequenceNum.timeStamp) 有助于您设计灵活的日志轮转和备份策略。将不同服务的事件写入不同的文件便于您快速隔离问题。同时,由于文件名中的序列号持续增长,并且时间戳始终是唯一的,因此当有限的序列号集用尽后,以后的日志文件也不会简单地覆写早期的日志文件。而是仅在达到更灵活的生存期限制、文件数目或存储总数时,才会覆写或删除较旧的日志文件。
Messaging Server 支持日志文件的自动旋转,此功能简化了管理,也使备份变得更容易。不必手动删除当前日志文件并创建新日志文件以保留后续日志事件。您可以随时备份目录中除当前日志文件之外的所有日志文件,而不必停止服务器或手动通知服务器启动新日志文件。
设置日志记录策略的过程中,您可以针对每种服务设置选项,这些选项控制着日志存储总数、最大日志文件数、单个文件大小、最大文件生存期和日志文件旋转的速度等限制。
请记住,您必须设置若干个限制,超过其中一个限制可能会导致日志文件的旋转或删除。最先到达的限制为控制限制。例如,如果最大日志文件大小是 3.5 MB,并且您指定每天创建一个新日志,如果每 24 小时建立的日志数据不止 3.5 MB,那么每天实际创建的日志文件则不止一个。而且,如果最大日志文件数目是 10 个并且最大生存期是 8 天,则可能永远不会达到日志文件的生存期限制,因为较快的日志旋转将意味着在不到 8 天之内便已创建 10 个文件。
为 Messaging Server 管理日志提供的以下默认值可能是规划的合理起始点:
目录中日志文件的最大数目:10
最大日志文件大小:2 MB
允许的所有日志文件的最大大小总计:20 MB
允许的最小可用磁盘空间:5 MB
日志轮转时间:1 天
过期之前的最大生存期:7 天
日志记录的级别:Notice
您可以看到此配置假设预计服务器管理日志数据每天累积大约 2 MB,每周备份,分配给管理日志的存储空间总数至少是 25 MB。(如果日志记录级别更冗长,则这些设置可能不足。)
对于 POP、IMAP 或 HTTP 日志,相同的值可能是合理的启动值。如果所有服务具有大致相同的日志存储要求(如此处所示的默认值),您可能期望初始规划总计约 150 MB 的日志存储容量。(请注意,这仅意味着存储要求的一般指示;实际的要求可能会显著不同。)
您可以使用 Console 或命令行来设置控制邮件存储日志记录配置的选项。
这些选项的最优设置取决于日志数据积累的速度。可能需要 4,000 到 10,000 个日志条目以占用 1 MB 存储。在较冗长的日志记录级别(例如 Notice),一般忙碌的服务器每周可能生成成百上千兆字节的日志数据。可遵循以下方法:
设置与存储限制一致的日志记录级别—即,估计该级别将导致日志数据积累的速度与估计存储限制所使用的速度大致相同。
定义日志文件大小,以便不影响搜索性能。同时,将日志文件大小与旋转时间安排和存储限制总数置于同一级别。假定日志条目以某速度积累,您可以将最大速度设置为稍大于自动发生旋转时期望的积累速度。最大文件大小乘以最大文件数可能约等于存储限制总数。
例如,如果每天进行 IMAP 日志旋转,您期望的 IMAP 日志数据积累为每天 3 MB,IMAP 日志的存储限制总数是 25 MB,您可将最大 IMAP 日志文件大小设为 3.5 MB。(本示例中,如果日志数据累积得很快,以致于所有日志文件都是最大大小并且已到达日志文件的最大数目,则可能仍会丢失日志数据。)
如果服务器每周备份一次而您每天旋转 IMAP 日志文件,则可以将 IMAP 日志文件的最大数目指定为 10 左右(如果超过单个日志大小限制,则说明旋转得更快),并将最大生存期指定为 7 或 8 天。
选取一个存储限制总数,该数目位于硬件容量内并与为服务器规划的备份时间安排相协调。估计您期望日志数据积累的速度、添加安全因素并定义存储限制总数,以使在服务器备份的间隔期间内不会超过此速度。
例如,如果期望平均每天积累 3 MB 的 IMAP 日志文件数据,服务器每周备份一次,则可以指定大约 25 - 30 MB 作为 IMAP 日志的存储限制(假设您的磁盘存储容量足够)。
为了安全起见,请在保留日志文件的卷中选取允许的最小可用磁盘空间量。即,如果非日志文件大小因素导致了卷填满,则在尝试将日志数据写入装满的磁盘而发生故障之前将删除旧日志文件。
Console 提供了用于查看消息存储和管理日志数据的基本界面。它允许选择单个日志文件,并允许在那些文件中执行灵活的日志条目的过滤搜索。
对于给定的服务,日志文件以时间先后次序列出。选择要搜索的日志文件后,您可以通过指定搜索参数来缩小对单个事件的搜索范围。
以下是可以指定用于查看日志数据的搜索参数:
时间段。您可以指定从其中检索事件的特定时间段的开始和结束时间,也可以指定要搜索的天数(当前日期之前)。通常,您可以指定一个范围以查看导致服务器崩溃的日志事件或在已知时间发生的其他事件。或者,您可以指定一天的范围以仅查看在当前日志文件中今天的事件。
日志记录的级别。您可以指定日志记录的级别(请参见日志记录级别)。例如,选取“紧急”查看服务器关闭的原因,或者选取“错误”查找失败的协议调用。
工具。您可以指定工具(请参见日志事件的类别)。例如,如果确信服务器崩溃涉及磁盘错误,则选择“存储”,或如果问题在于 IMAP 协议命令错误,则选择“协议”。
文本搜索模式。您可以提供文本搜索模式以进一步缩小搜索范围。您可以包括可表示为通配符类型搜索的事件的任何部分(请参见了解服务日志文件格式),例如已知定义要检索的某个事件或多个事件的事件时间、进程名、进程 ID 和事件消息的任何部分(例如远程主机名、函数名、错误号等)。
您的搜索模式可以包括以下特定字符和通配字符:
* 任何字符集(示例:*.com)
? 任何单个字符(示例:199?)
[nnn] nnn 集中的任何字符(示例:[aeiou])
[^nnn] nnn 集中没有的任何字符(示例:[^aeiou])
[n-m] 任何在 n-m 范围内的字符(示例:[A-Z])
[^n-m] 任何不在 n-m 范围内的字符(示例:[^0-9])
\ 转义符:置于 *、?、[ 或 ] 之前以将这些符号用作字面值
注释:搜索区分大小写。
查看日志时,组合日志记录级别和设备的示例可能包括以下几种:
指定 "Account" 设备(和 "Notice" 级别)以显示失败的登录,这在调查潜在的安全破坏时可能会有用
指定 "Network" 设备(和所有日志记录级别)以调查连接问题
指定所有设备(和 "Critical" 日志记录级别)以查找服务器功能方面的基本问题
本节介绍了如何通过使用 configutil 命令和 Console 来处理服务日志,以便搜索和查看日志。
运行带有 syslogfacility 选项的 configutil 命令:
configutil -o logfile.service.syslogfacility -v value
其中 service 是 admin、pop、imap、imta 或 http,value 是 user、mail、daemon、local0 至 local7 或 none。
设置了值之后,系统会将邮件记录到与设置值对应的 syslog 工具并忽略所有其他日志文件服务选项。如果未设置选项或值为 none,则日志记录将使用 Messaging Server 日志文件。
打开要设置其日志文件选项的 Messaging Server。
单击“配置”选项卡,打开左窗格中的“日志文件”文件夹,并选择某一服务(例如 IMAP、HTTP 或 Admin)的日志文件。
从“详细程度”下拉式列表中选择日志记录级别。
在“日志文件的目录路径”字段中,输入要保留日志文件的目录名称。
在“每个日志的文件大小”字段中,输入最大日志文件大小。
在“创建一个新日志,每隔”字段中,输入日志轮转计划的数字。
在“每个目录的日志数量”和“如果一个日志生成时间超过”字段中,输入与备份计划相协调的最大日志文件数目和最大生存期。
在“如果超出总日志大小”字段中,输入期望的存储限制总数。
在“如果可用磁盘空间小于”字段中,输入希望保留的最小可用磁盘空间量。
如果系统不支持 HTTP 邮件访问(即 Webmail),则可以通过设置以下变量来禁用 HTTP 日志记录。如果系统要求 Webmail 支持(例如 Messenger Express),请勿设置这些变量。
运行以下 configutil 命令:
configutil -o service.http.enable -v no configutil -oservice.http.enablesslport -v no
运行以下 configutil 命令:
configutil -o logfile.service.loglevel -v level
其中 service 是 admin、pop、imap、imta 或 http,loglevel 是 Nolog、Critical、Error、Warning、Notice、Information 或 Debug。
运行以下 configutil 命令:
configutil -o logfile.service.logdir -v dirpath |
运行以下 configutil 命令:
configutil -o logfile.service.maxlogfilesize -v size |
其中 size 指定了字节数。
运行以下 configutil 命令:
configutil -o logfile.service.rollovertime -v number |
其中 number 指定了秒数。
运行以下 configutil 命令:
configutil -o logfile.service.maxlogfiles -v number |
其中 number 指定了日志文件的最大数目。
运行以下 configutil 命令:
configutil -o logfile.service.maxlogsize -v number |
其中 number 指定了一个以字节为单位的数量。
运行以下 configutil 命令:
configutil -o logfile.service.minfreediskspace -v number |
其中 number 指定了一个以字节为单位的数量。
configutil -o logfile.service.expirytime -v number |
其中 number 指定了一个以秒为单位的数量。
请按以下步骤使用给定服务所属的特定的特性来搜索日志事件:
在 Console 中,打开希望检查其日志文件的 Messaging Server。
请执行以下任一步骤以显示给定日志记录服务的日志文件“内容”选项卡:
单击“任务”选项卡,然后单击“查看服务日志”,其中服务是日志记录服务(例如“IMAP 服务”或“管理”)的名称。
单击“配置”选项卡,然后打开左窗格中的“日志文件”文件夹,并选择某一服务(例如 IMAP 或 Admin)的日志文件。然后单击右窗格中的“内容”选项卡。
系统将显示该日志记录服务的“内容”选项卡。
在“日志文件名”字段中,选择您要检查的日志文件。
单击“查看所选日志”按钮将打开“日志查看器”窗口。
在“日志查看器”窗口中,指定所需的搜索参数(已在上一节搜索参数中介绍)。
单击“更新”将执行搜索并将结果显示在“日志”条目字段中。
您可以通过邮件 ID 使用邮件存储日志记录来跟踪邮件,该方式类似于 MTA 跟踪邮件的方式。以此方式跟踪邮件使您可以跟踪邮件生命周期的紧急事件。
要在邮件存储日志中跟踪邮件,除了常规的日志记录配置外,您还需要配置邮件跟踪。默认情况下,不启用邮件跟踪。
邮件跟踪将填满大量的磁盘空间。请勿启用此功能,除非您有足够的磁盘空间。
邮件存储日志记录可以跟踪以下操作:
附加—邮件存储库向文件夹添加邮件的主要方式。跟踪附加显示了输入邮件存储的邮件。
获取—为最终用户检索邮件或部分邮件的 IMAP 命令。对于邮件跟踪,它的含义将扩展为任何服务为最终用户检索要阅读的邮件的时间。
在邮件跟踪中,您阅读了某邮件的标题后,有时可能希望避免进行跟踪,因此,主体获取将参考检索邮件主体的某一部分的时间。
清除:IMAP 术语,此处已扩展为任何服务从用户文件夹中删除邮件的时间。
运行以下 configutil 命令:
configutil -o local.msgrace.active -v "yes" |
系统将邮件跟踪信息写入每个进程的默认日志中。IMAP 获取显示在 imap 日志文件中。ims_master 附加显示在 ims_master 通道日志文件中。
要将邮件跟踪日志记录重定向到单个 "msgtrace" 日志文件,您必须使用 configutil 命令来配置日志文件参数。msgtrace 日志文件与其他日志文件不同,它要在本地进行配置。例如:
configutil -o "local.logfile.msgtrace.buffersize" -v "0" configutil -o "local.logfile.msgtrace.expirytime" -v "604800" configutil -o "local.logfile.msgtrace.flushinterval" -v "60" configutil -o "local.logfile.msgtrace.logdir" -v "/opt/SUNWmsgsr/data/log" configutil -o "local.logfile.msgtrace.loglevel" -v "Information" configutil -o "local.logfile.msgtrace.logtype" -v "NscpLog" configutil -o "local.logfile.msgtrace.maxlogfiles" -v "10" configutil -o "local.logfile.msgtrace.maxlogfilesize" -v "2097152" configutil -o "local.logfile.msgtrace.maxlogsize" -v "20971520" configutil -o "local.logfile.msgtrace.minfreediskspace" -v "5242880" configutil -o "local.logfile.msgtrace.rollovertime" -v "86400" |
要取消配置 msgtrace 日志文件,请使用 configutil 命令以删除所有对其配置的引用。例如:
configutil -o "local.logfile.msgtrace.buffersize" -v "" configutil -o "local.logfile.msgtrace.expirytime" -v "" configutil -o "local.logfile.msgtrace.flushinterval" -v "" configutil -o "local.logfile.msgtrace.logdir" -v "" configutil -o "local.logfile.msgtrace.loglevel" -v "" configutil -o "local.logfile.msgtrace.logtype" -v "" configutil -o "local.logfile.msgtrace.maxlogfiles" -v "" configutil -o "local.logfile.msgtrace.maxlogfilesize" -v "" configutil -o "local.logfile.msgtrace.maxlogsize" -v "" configutil -o "local.logfile.msgtrace.minfreediskspace" -v "" configutil -o "local.logfile.msgtrace.rollovertime" -v "" |
如果您使用的是 LMTP,而未使用单个 "msgtrace" 日志文件,则必须也在本地配置 tcp_lmtp_server 日志文件。如果您未使用 LMTP,或未使用邮件跟踪,或使用的是 "msgtrace" 日志文件中的邮件跟踪,则无需初始化 LMTP 邮件存储端日志。(LMTP 已分别记录了 MTA 信息。)例如:
configutil -o "local.logfile.tcp_lmtp_server.buffersize" -v "0" configutil -o "local.logfile.tcp_lmtp_server.expirytime" -v "604800" configutil -o "local.logfile.tcp_lmtp_server.flushinterval" -v "60" configutil -o "local.logfile.tcp_lmtp_server.logdir" -v \ "/opt/SUNWmsgsr/data/log" configutil -o "local.logfile.tcp_lmtp_server.loglevel" -v "Information" configutil -o "local.logfile.tcp_lmtp_server.logtype" -v "NscpLog" configutil -o "local.logfile.tcp_lmtp_server.maxlogfiles" -v "10" configutil -o "local.logfile.tcp_lmtp_server.maxlogfilesize" -v "2097152" configutil -o "local.logfile.tcp_lmtp_server.maxlogsize" -v "20971520" configutil -o "local.logfile.tcp_lmtp_server.minfreediskspace" \ -v "5242880" configutil -o "local.logfile.tcp_lmtp_server.rollovertime" -v "86400" |
Messaging Server 提供了一种称为自动测量的功能,可以将用户的全部 IMAP 或 POP 会话捕获到文件中。此功能对调试客户机问题很有用。例如,如果用户抱怨他们的邮件访问客户机未按预期那样工作,则此功能可用于跟踪访问客户机和 Messaging Server 之间的交互活动。请参见使用自动测量功能检查用户 IMAP/POP 会话
记录在邮件存储日志文件中的确切字段格式和字段列表将根据设置的日志记录选项而有所不同。本节将描述一些解释典型日志条目类别的示例。
用户键入无效密码时,系统将记录“验证”失败,与之相对的是“未找到用户”消息。出于安全原因,“未找到用户”消息将以文本形式传送给客户机,但系统将记录真实原因(无效密码)。
[30/Aug/2004:16:53:05 -0700] vadar imapd[13027]: Account Notice: badlogin: [192.18.126.64:40718] plaintext user1 authentication failure |
以下示例显示了用户无法登录的原因是由于帐户被禁用。此外,禁用的帐户被说明为 "(inactive)" 或 "(hold)"。
[30/Aug/2004:16:53:31 -0700] vadar imapd[13027]: Account Notice: badlogin: [192.18.126.64:40720] plaintext user3 account disabled (hold) |
以下示例显示了附加邮件,每当将邮件附加至文件夹时它都会出现。邮件存储日志记录了所有通过 ims_master 和 lmtp 通道进入邮件存储的邮件。记录用户 ID、文件夹、邮件大小和邮件 ID 的“附加”。
[31/Aug/2004:16:33:14 -0700] vadar ims_master[13822]: Store Information:append: user1:user/user1:659:<Roam.SIMC.2.0.6.1093995286.11265.user1@vadar.siroe.com> |
当客户机检索邮件时,邮件存储日志将写入“获取”消息。邮件存储日志将至少记录客户机对一个主体部分的所有获取。记录“获取”的用户 ID、文件夹和邮件 ID。
[31/Aug/2004:15:55:26 -0700] vadar imapd[13729]: Store Information: fetch:user1:user/user1:<Roam.SIMC.2.0.6.1093051161.3655.user1@vad.siroe.com> |
当从文件夹中删除 IMAP 或 POP 邮件(但不是从系统中删除)时,邮件存储将写入“清除”消息。系统将记录它是被用户还是被实用程序清除的。记录“清除”的文件夹和邮件 ID。
31/Aug/2004:16:57:36 -0700] vadar imexpire[13923]: Store Information: expunge:user/user1:<Roam.SIMC.2.0.6.1090458838.2929.user1@vadar.siroe.com> |
如果您为一个 msgtrace 日志文件配置邮件跟踪,则显示在 imap 和 pop 日志文件中的常规“登录”邮件将在 msgtrace 文件中进行复制。以下为常规登录邮件:
[30/Aug/2004:16:53:13 -0700] vadar imapd[13027]: Account Information: login [192.18.126.64:40718] user1 plaintext |