网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > windows > 服务器技术 > Exchange > 邮件跟踪日志的基础知识教程-浅析邮件日志  

邮件跟踪日志的基础知识教程-浅析邮件日志

2007-05-25  作者:bitsCN整理  来源:CNET中国  点评 投稿 收藏

要对邮件日志进行分析,首先需要对邮件日志文件的格式了解得非常清楚。下面,我们将以Exchange 2003的日志文件为例,详细解释其格式。(Exchange 2000的日志文件格式和Exchange 2003是相同的。)

网管bitscn_com

实际上,邮件跟踪日志文件是以文本的形式存放在Exchsrvr.log目录下。这里,Exchsrvr目录是指你安装Exchange文件所在的目录。通常,该安装目录下存在一个以当前服务器名字加扩展名LOG为名字的目录。该服务器上所有的跟踪日志文件都存放在该目录下。关于如何查看/修改邮件跟踪日志目录,你可以参考以下文章: 网管网www_bitscn_com

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键分隔开。

网管下载dl.bitscn.com

在文件头之后是两个空行,然后紧接着就是邮件跟踪记录。记录以行为单位,每一行给出了第三行列出的所有列的数据。如果某一列的值不存在,就以”-“代替。列和列之间依然以Tab键分隔。

网管bitscn_com

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服务器上可能遇到的所有事件,以便于你更好地理解跟踪日志的内容。

网管u家u.bitsCN.com

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是日志文件名。通常还需要提供文件路径。)

中国网管论坛bbs.bitsCN.com

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



    \' 显示统计结果
    For Each objKey In OriginatorArray
        WScript.Echo CStr(objKey) & ", " & OriginatorArray(objKey)
    Next

    Sub ParseTrackingLog(byRef objCurrentLog)
        \'ON ERROR RESUME NEXT
        Dim rgStatusArray, strOriginator
        \' 跳过前5行文件头
        objCurrentLog.SkipLine
        objCurrentLog.SkipLine
        objCurrentLog.SkipLine
        objCurrentLog.SkipLine
        objCurrentLog.SkipLine

        Do While objCurrentLog.AtEndOfStream <> TRUE
网管网www.bitscn.com

            \' 按行读取列数据到数组里
            rgStatusArray = Split(objCurrentLog.ReadLine,Chr(9),-1,vbBinaryCompare)
            If UBound(rgStatusArray) = 20 Then
                \' 记录MSGID,判断该邮件是否被统计过
                If Not MSGIDArray.Exists( rgStatusArray(conE2kMSGID) ) Then
                    MSGIDArray.Add rgStatusArray(conE2kMSGID),1

                    strOriginator = rgStatusArray(conSenderaddress)
                    \' 记录发送人 网管论坛bbs_bitsCN_com
                    If Not OriginatorArray.Exists( strOriginator ) Then
                    OriginatorArray.Add strOriginator, 1
                    OriginatorArray.Item(strOriginator)=OriginatorArray.Item(strOriginator)+1
                    End If
                End If
            End If
        Loop
    End Sub
    ===================代码结束=================== 网管u家u.bitscn@com


TAGs邮件   日志   浅析   教程   基础知识   跟踪   was   to   Message   or    
 上一篇:在XP上管理Exchange 2007   下一篇:没有了
邮件跟踪日志的基础知识教程-浅析邮件日志 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: