| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
要对邮件日志进行分析,首先需要对邮件日志文件的格式了解得非常清楚。下面,我们将以Exchange 2003的日志文件为例,详细解释其格式。(Exchange 2000的日志文件格式和Exchange 2003是相同的。)
实际上,邮件跟踪日志文件是以文本的形式存放在Exchsrvr
317700 How to change the location of the message tracking logs in Exchange 2000 Server
中国网管联盟bitsCN.com
http://support.microsoft.com/default.aspx?scid=kb;EN-US;317700 中国网管联盟bitsCN.com
日志文件的命名格式也相对简单,就以日志生成的日期为名,其格式为YYYYMMDD.log。注意,日志中包含的数据是从格林威治标准时间0:00到23:59发生在该服务器上的邮件记录。因此,对于不在GMT +00时区的服务器而言,日志文件名中的日期和实际我们要查询的日期并非完全匹配。
中国网管论坛bbs.bitsCN.com
对于熟悉W3C格式的IIS日志的朋友,邮件跟踪日志对你们来说就不是什么新鲜事了。他们在格式上基本相同。下面我们将打开一个Exchange 2003的邮件跟踪日志文件,来阐述其文件格式。
网管网www.bitscn.com
# Message Tracking Log File 网管bitscn_com
# Exchange System Attendant Version 6.5.7226.0 网管网www.bitscn.com
# Date Time client-ip Client-hostname Partner-Name Server-hostname server-IP Recipient-Address Event-ID MSGID Priority Recipient-Report-Status total-bytes Number-Recipients Origination-Time Encryption service-Version Linked-MSGID Message-Subject Sender-Address 网管u家u.bitscn@com
通常我们可以看到文件的头三行以#标识。第一行指明这是一个邮件跟踪日志文件。第二行指明了当前服务器的版本。第三行则是最关键的一行。它给出了当前日志文件的每一条记录所包含的列以及相应的顺序。列名和列名之间以Tab键分隔开。
在文件头之后是两个空行,然后紧接着就是邮件跟踪记录。记录以行为单位,每一行给出了第三行列出的所有列的数据。如果某一列的值不存在,就以”-“代替。列和列之间依然以Tab键分隔。
2007-1-29 12:24:32 GMT - - - TEST01 - /O=TEST GTSC/OU=FIRST ADMINISTRATIVE GROUP/CN=RECIPIENTS/CN=Administrator 1027 E830238C2711FB4BA337AD16A10C626F57CF@TEST01.TEST.GTSC 0 0 2087 3 2007-1-29 12:24:32 GMT 0 - c=US;a= ;p=TEST GTSC;l=TEST01-070129122431Z-1 TEST EMAIL EX:/O=TEST GTSC/OU=FIRST ADMINISTRATIVE GROUP/CN=RECIPIENTS/CN=ADMINISTRATOR - 中国网管论坛bbs.bitsCN.com
2007-1-29 12:24:32 GMT - - - TEST01 - /O=TEST GTSC/OU=FIRST ADMINISTRATIVE GROUP/CN=RECIPIENTS/CN=EVANWANG 1027 E830238C2711FB4BA337AD16A10C626F57CF@TEST01.TEST.GTSC 0 0 2087 3 2007-1-29 12:24:32 GMT 0 - c=US;a= ;p=TEST GTSC;l=TEST01-070129122431Z-1 TEST EMAIL EX:/O=TEST GTSC/OU=FIRST ADMINISTRATIVE GROUP/CN=RECIPIENTS/CN=ADMINISTRATOR - 网管u家u.bitscn@com
对于每一列的含义,这里作一个简要的说明: 网管下载dl.bitscn.com
|
Date 网管u家u.bitscn@com |
事件发生的日期 网管bitscn_com |
|
Time 网管u家u.bitscn@com |
事件发生的时间 中国网管论坛bbs.bitsCN.com
|
|
client-ip 中国网管联盟bitsCN.com |
客户端IP地址 中国网管联盟bitsCN.com |
|
Client-hostname 网管联盟bitsCN_com |
客户端名字 中国网管联盟bitsCN.com
|
|
Server-hostname 网管u家u.bitsCN.com |
当前服务器的名字 网管u家u.bitscn@com |
|
server-IP 网管u家u.bitsCN.com |
服务器端IP地址 网管网www_bitscn_com |
|
Recipient-Address 中国网管论坛bbs.bitsCN.com
|
邮件接收人的地址 中国网管论坛bbs.bitsCN.com |
|
Event-ID 网管网www.bitscn.com
|
当前所记录事件的类型 网管网www.bitscn.com
|
|
MSGID 中国网管联盟bitsCN.com |
当前邮件的标识 中国网管论坛bbs.bitsCN.com |
|
Priority 中国网管论坛bbs.bitsCN.com |
邮件优先级,0为普通 中国网管联盟bitsCN.com |
|
total-bytes 中国网管联盟bitsCN.com
|
当前邮件的大小 中国网管联盟bitsCN.com |
|
Number-Recipients 网管下载dl.bitscn.com
|
当前邮件所有接收人的数目 中国网管联盟bitsCN.com
|
|
Origination-Time 网管联盟bitsCN_com |
邮件发送的时间 网管u家u.bitsCN.com |
|
Encryption 网管bitscn_com
|
邮件的加密方式 网管bitscn_com
|
|
Message-Subject 网管论坛bbs_bitsCN_com |
邮件标题 中国网管论坛bbs.bitsCN.com
|
|
Sender-Address 网管网www_bitscn_com |
邮件发送人的地址 网管下载dl.bitscn.com
|
在这些列中,我们需要重点了解其中两列的值所代表的含义: 网管bitscn_com
MSGID作为当前邮件的标识,在邮件存在的整个生命周期中始终保持不变。例如,在上面的两条记录中,MSGID都是E830238C2711FB4BA337AD16A10C626F57CF@TEST01.TEST.GTSC 因此,我们可以利用它来识别邮件是否为同一封邮件。
网管bitscn_com
Event-ID指出了当前所记录事件的类型。邮件从投递到完成发送,需要经历不同的阶段和事件,例如:SMTP: Message Submitted to Categorizer,SMTP: Started Outbound Transfer of Message。对应于每一个事件,我们都有相应的Event-ID。这样才能更真实地跟踪邮件的流向。 网管网www_bitscn_com
这里,我们列出了Exchange 2003服务器上可能遇到的所有事件,以便于你更好地理解跟踪日志的内容。
|
ID 网管网www_bitscn_com |
具体描述 中国网管联盟bitsCN.com |
|
0 网管论坛bbs_bitsCN_com |
The message was received from a server, connector, or gateway. 网管bitscn_com |
|
1 中国网管联盟bitsCN.com |
An X.400 Probe was received from a gateway, link, or MTA. 中国网管论坛bbs.bitsCN.com |
|
2 网管u家u.bitscn@com
|
A delivery receipt or NDR was received from a server, connector,or gateway. 网管论坛bbs_bitsCN_com |
|
4 网管u家u.bitsCN.com |
The message was sent by the client. 网管u家u.bitscn@com |
|
5 中国网管联盟bitsCN.com
|
An X.400 Probe was received from a user. 中国网管联盟bitsCN.com
|
|
6 网管下载dl.bitscn.com
|
An X.400 Probe was sent to a gateway, link, or MTA. 网管下载dl.bitscn.com
|
|
7 网管网www.bitscn.com |
The message was sent to a server,connector, or gateway. 中国网管联盟bitsCN.com |
|
8 网管联盟bitsCN_com |
A delivery receipt or NDR was sent to a server, connector, or gateway. 网管u家u.bitsCN.com |
|
9 网管u家u.bitscn@com |
The message was delivered to a mailbox or public folder. 网管联盟bitsCN@com |
|
10 网管u家u.bitscn@com |
A delivery receipt or NDR was delivered to a mailbox. 网管u家u.bitsCN.com |
|
18 网管网www.bitscn.com |
StartAssocByMTSUser 网管论坛bbs_bitsCN_com |
|
23 网管下载dl.bitscn.com |
ReleaseAssocByMTSUse. 网管联盟bitsCN@com |
|
26 网管下载dl.bitscn.com |
A recipient distribution list was expanded so the message could be sent to different addresses. 网管论坛bbs_bitsCN_com |
|
28 网管联盟bitsCN@com |
The message was sent to a mailbox other than those of the recipients. 网管网www.bitscn.com |
|
29 网管联盟bitsCN_com |
The message was routed to an alternate path. 网管下载dl.bitscn.com |
|
31 网管u家u.bitscn@com |
An X.400 message was downgraded to 1984 format prior to relay. 网管联盟bitsCN@com |
|
33 网管u家u.bitscn@com |
The number of delivery receipts or NDRs exceeded a threshold, and the reports were deleted. 网管联盟bitsCN@com |
|
34 网管下载dl.bitscn.com |
A delivery receipt or NDR was created. 网管联盟bitsCN_com |
|
43 网管网www.bitscn.com |
A delivery receipt or NDR could not be routed and was deleted from the queue. 网管下载dl.bitscn.com |
|
50 网管网www.bitscn.com |
The Administrator deleted an X.400 message queued for a gateway. 网管u家u.bitsCN.com |
|
51 中国网管联盟bitsCN.com |
The Administrator deleted an X.400 probe queued for a gateway. 网管u家u.bitscn@com
|
|
52 网管u家u.bitscn@com
|
The administrator deleted an X.400 report queued for a gateway. 网管网www_bitscn_com |
|
1000 网管下载dl.bitscn.com |
The sender and recipient are on the same server. 网管论坛bbs_bitsCN_com
|
|
1001 网管联盟bitsCN_com
|
Mail was received from another MAPI system across a connector or gateway. 网管网www_bitscn_com |
|
1002 网管u家u.bitsCN.com |
Mail was sent to another MAPI system across a connector or gateway. 网管下载dl.bitscn.com
|
|
1003 网管联盟bitsCN@com |
The message was sent through a gateway. 网管论坛bbs_bitsCN_com |
|
1004 网管u家u.bitsCN.com |
The message was received from a gateway. 中国网管联盟bitsCN.com
|
|
1005 网管下载dl.bitscn.com |
A delivery receipt or NDR was received from a gateway. 中国网管论坛bbs.bitsCN.com |
|
1006 网管网www_bitscn_com |
A delivery receipt or NDR was sent through a gateway. 网管u家u.bitsCN.com |
|
1007 网管联盟bitsCN_com |
A gateway generated an NDR for a message. 网管论坛bbs_bitsCN_com
|
|
1010 网管bitscn_com
|
Outbound mail was queued for delivery by the Internet Mail Service. 网管bitscn_com |
|
1011 网管论坛bbs_bitsCN_com
|
Outbound Outbound mail was transferred to an Internet recipient. 网管u家u.bitsCN.com
|
|
1012 网管网www.bitscn.com
|
Inbound Inbound mail was received from by the Internet Mail Service. 网管u家u.bitscn@com |
|
1013 网管下载dl.bitscn.com
|
Inbound Mail received by the Internet Mail Service was transferred to the Information Store. 网管网www_bitscn_com |
|
1014 网管bitscn_com
|
An Internet message is being rerouted or forwarded to the proper location. 网管联盟bitsCN@com |
|
1015 网管bitscn_com |
A delivery receipt or NDR was received by the Internet Mail Service. 网管网www.bitscn.com
|
|
1016 中国网管论坛bbs.bitsCN.com |
A delivery receipt or NDR was sent to the Internet Mail Service. 网管下载dl.bitscn.com
|
|
1017 网管u家u.bitsCN.com |
A delivery receipt or NDR was created. 网管下载dl.bitscn.com
|
|
1018 网管论坛bbs_bitsCN_com |
The receipt or NDR could not be delivered, and was absorbed. (It is not possible to send an NDR for an NDR.) 网管联盟bitsCN@com |
|
1019 网管u家u.bitsCN.com |
SMTP: Message Submitted to Advanced Queuing. 网管u家u.bitsCN.com
|
|
1020 网管下载dl.bitscn.com |
SMTP: Started Outbound Transfer of Message. 中国网管联盟bitsCN.com
|
|
1021 网管联盟bitsCN_com
|
SMTP: Message Sent to Badmail 网管u家u.bitscn@com
|
|
1022 中国网管论坛bbs.bitsCN.com |
SMTP: Advanced Queue Failure 网管下载dl.bitscn.com |
|
1023 网管网www_bitscn_com
|
SMTP: Message Delivered Locally 网管网www.bitscn.com |
|
1024 网管网www_bitscn_com |
SMTP: Message Submitted to Categorizer 网管u家u.bitsCN.com |
|
1025 网管u家u.bitscn@com |
SMTP: Started Message Submission to Advanced Queue 网管bitscn_com |
|
1026 网管网www.bitscn.com |
SMTP: Advanced Queue Failed to Deliver Message 网管网www_bitscn_com |
|
1027 网管u家u.bitsCN.com
|
SMTP Store Driver: Message Submitted from Store 网管网www.bitscn.com |
|
1028 网管联盟bitsCN_com |
SMTP Store Driver: Message Delivered Locally to Store 网管下载dl.bitscn.com |
|
1029 中国网管论坛bbs.bitsCN.com |
SMTP Store Driver Submitted Message to MTA 网管下载dl.bitscn.com |
|
1030 中国网管联盟bitsCN.com
|
SMTP: Non-Delivered Report (NDR) Generated 网管联盟bitsCN_com |
|
1031 网管联盟bitsCN@com |
SMTP: Ending Outbound Transfer 网管论坛bbs_bitsCN_com |
|
1032 网管bitscn_com |
SMTP Message Scheduled to Retry Categorization 网管下载dl.bitscn.com |
|
1033 网管下载dl.bitscn.com
|
SMTP Message Categorized and Queued for Routing 网管下载dl.bitscn.com |
|
1034 网管bitscn_com
|
SMTP Message Routed and Queued for Remote Delivery 中国网管论坛bbs.bitsCN.com
|
|
1035 网管网www_bitscn_com
|
SMTP Message Scheduled to Retry Routing 网管u家u.bitsCN.com |
|
1036 网管联盟bitsCN_com
|
SMTP Message Queued for Local Delivery 网管论坛bbs_bitsCN_com
|
|
1037 网管网www.bitscn.com |
SMTP Message Scheduled to Retry Local Delivery 网管联盟bitsCN@com |
|
1038 网管下载dl.bitscn.com
|
SMTP Message Routed and Queued for Gateway Delivery 网管网www_bitscn_com
|
|
1039 中国网管论坛bbs.bitsCN.com |
SMTP Message deleted by Intelligent Message Filtering 网管联盟bitsCN_com
|
|
1040 网管论坛bbs_bitsCN_com |
SMTP Message rejected by Intelligent Message Filtering 中国网管论坛bbs.bitsCN.com |
|
1041 网管联盟bitsCN_com
|
SMTP Message archived by Intelligent Message Filtering 网管联盟bitsCN@com |
|
1042 网管下载dl.bitscn.com |
Message redirected to the alternate recipient 网管bitscn_com |
|
1043 网管联盟bitsCN_com |
Invalid Event Type 网管u家u.bitsCN.com
|
中国网管联盟bitsCN.com
如何分析邮件跟踪日志
网管网www_bitscn_com
对跟踪日志的格式了解之后,分析日志中的数据也就不再是一件难事了。我们可以逐行读入日志记录,对相关数据进行统计。由于篇幅所限,本文只讨论其中的一种统计场景 -- 如何统计邮件发送人及其所发送邮件的数目,并给出相关的示范代码(VBScript编写)以供大家参考。
一封邮件可以经历多个事件,直到它被成功发送。导致的结果是,一封邮件可以对应于与日志中的数条记录。如何有效地区分这些记录,避免重复统计,是我们最先应该考虑的问题。前面我们提到过,MSGID是贯穿邮件生命周期的标识,我们可以利用它来区分不同的邮件。因此,我们基本上的思路是:建立一个集合对象,把MSGID存入其中。当读入一条新记录时,我们会查找该集合对象。如果MSGID已经存在,说明该邮件已经被统计过,我们可以忽略。否则的话,我们将把这个MSGID插入到集合中,并进行统计。
网管u家u.bitscn@com
对于统计邮件发送人的情况,我们需要建立另外一个集合,用于存贮每一封邮件的发送人的地址。如果当前发送人地址不在集合中,我们将把这个地址插入集合,并把相应的邮件数量置为初始值1。当我们发现这个邮件发送人的地址已经存在的话,我们就只要把相应邮件数量的值加1。 当完成整个日志文件的分析后,我们的集合对象就能给出想要的统计数据了。 网管论坛bbs_bitsCN_com
下面是相关的VBScript代码。这个脚本能够分析统计日志文件中发送人的邮件地址,以及他相应发送邮件的数量。把源代码拷贝到一个文本文件中,并以.VBS为扩展名进行命名,例如:ParseLog.vbs。之后,通过以下命令运行脚本。(注:20070109.log是日志文件名。通常还需要提供文件路径。)
CScript ParseLog.VBS 20070109.log 网管网www_bitscn_com
===================代码开始===================
\' 本代码的目的是为了更清楚地解释日志的格式和分析方法。仅供大家参考。
\' 代码中对很多情况未作特殊处理。因此,作者不建议在生产环境中使用它。
\' 如果因不当使用而引起的任何问题,作者不负任何责任。谢谢。
Const conE2kMSGID = 9
Const conSenderaddress = 19
Dim MSGIDArray \' 用于统计MSGID的数组
Dim OriginatorArray \' 用于统计Sender得数组
Dim objFileSystem
Dim strTrackingLogs
Dim objCurrentLog
Dim objKey
Set MSGIDArray = CreateObject("Scripting.Dictionary")
Set OriginatorArray = CreateObject("Scripting.Dictionary")
MSGIDArray.CompareMode = vbTextCompare 网管联盟bitsCN@com
OriginatorArray.CompareMode = vbTextCompare
\' 从命令行获取日志文件的路径
strTrackingLogs = ""
If WScript.Arguments.count = 1 Then
strTrackingLogs = WScript.Arguments(0)
Else
WScript.Echo "Invalid Log File pathname!"
End If
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
If objFileSystem.FileExists( strTrackingLogs ) Then
Set objCurrentLog = objFileSystem.OpenTextFile( strTrackingLogs,1, FALSE )
\' 打开日志文件进行分析
ParseTrackingLog( objCurrentLog )
End If
中国网管联盟bitsCN.com
|
0
|
评论加载中…