首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

邮件服务器

技术前沿 | Exchange | Domino | Sendmail | Postfix | Qmail | IMail | MDaemon | Foxmail | James | Kerio | JavaMail | WinMail | Winwebmail | Merak | CMailServer | 金笛 | 其它 | 邮件与开发 |
首页 > 邮件服务器 > Exchange Server > 邮件跟踪日志的基础知识教程-浅析邮件日志 > 正文
金笛邮件系统

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

出处:CNET中国 作者:CNET中国 时间:2007-5-25 11:43:20
简单三步解决企业垃圾邮件难题

邮件跟踪日志的文件格式

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

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

317700 How to change the location of the message tracking logs in Exchange 2000 Server

http://support.microsoft.com/default.aspx?scid=kb;EN-US;317700

日志文件的命名格式也相对简单,就以日志生成的日期为名,其格式为YYYYMMDD.log。注意,日志中包含的数据是从格林威治标准时间0:00到23:59发生在该服务器上的邮件记录。因此,对于不在GMT +00时区的服务器而言,日志文件名中的日期和实际我们要查询的日期并非完全匹配。

对于熟悉W3C格式的IIS日志的朋友,邮件跟踪日志对你们来说就不是什么新鲜事了。他们在格式上基本相同。下面我们将打开一个Exchange 2003的邮件跟踪日志文件,来阐述其文件格式。

# Message Tracking Log File

# Exchange System Attendant Version 6.5.7226.0

# 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

通常我们可以看到文件的头三行以#标识。第一行指明这是一个邮件跟踪日志文件。第二行指明了当前服务器的版本。第三行则是最关键的一行。它给出了当前日志文件的每一条记录所包含的列以及相应的顺序。列名和列名之间以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 -

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 -

对于每一列的含义,这里作一个简要的说明:

Date

事件发生的日期

Time

事件发生的时间

client-ip

客户端IP地址

Client-hostname

客户端名字

Server-hostname

当前服务器的名字

server-IP

服务器端IP地址

Recipient-Address

邮件接收人的地址

Event-ID

当前所记录事件的类型

MSGID

当前邮件的标识

Priority

邮件优先级,0为普通

total-bytes

当前邮件的大小

Number-Recipients

当前邮件所有接收人的数目

Origination-Time

邮件发送的时间

Encryption

邮件的加密方式

Message-Subject

邮件标题

Sender-Address

邮件发送人的地址

在这些列中,我们需要重点了解其中两列的值所代表的含义:

MSGID作为当前邮件的标识,在邮件存在的整个生命周期中始终保持不变。例如,在上面的两条记录中,MSGID都是E830238C2711FB4BA337AD16A10C626F57CF@TEST01.TEST.GTSC 因此,我们可以利用它来识别邮件是否为同一封邮件。

Event-ID指出了当前所记录事件的类型。邮件从投递到完成发送,需要经历不同的阶段和事件,例如:SMTP: Message Submitted to Categorizer,SMTP: Started Outbound Transfer of Message。对应于每一个事件,我们都有相应的Event-ID。这样才能更真实地跟踪邮件的流向。

这里,我们列出了Exchange 2003服务器上可能遇到的所有事件,以便于你更好地理解跟踪日志的内容。

ID

具体描述

0

The message was received from a server, connector, or gateway.

1

An X.400 Probe was received from a gateway, link, or MTA.

2

A delivery receipt or NDR was received from a server, connector,or gateway.

4

The message was sent by the client.

5

An X.400 Probe was received from a user.

6

An X.400 Probe was sent to a gateway, link, or MTA.

7

The message was sent to a server,connector, or gateway.

8

A delivery receipt or NDR was sent to a server, connector, or gateway.

9

The message was delivered to a mailbox or public folder.

10

A delivery receipt or NDR was delivered to a mailbox.

18

StartAssocByMTSUser

23

ReleaseAssocByMTSUse.

26

A recipient distribution list was expanded so the message could be sent to different addresses.

28

The message was sent to a mailbox other than those of the recipients.

29

The message was routed to an alternate path.

31

An X.400 message was downgraded to 1984 format prior to relay.

33

The number of delivery receipts or NDRs exceeded a threshold, and the reports were deleted.

34

A delivery receipt or NDR was created.

43

A delivery receipt or NDR could not be routed and was deleted from the queue.

50

The Administrator deleted an X.400 message queued for a gateway.

51

The Administrator deleted an X.400 probe queued for a gateway.

52

The administrator deleted an X.400 report queued for a gateway.

1000

The sender and recipient are on the same server.

1001

Mail was received from another MAPI system across a connector or gateway.

1002

Mail was sent to another MAPI system across a connector or gateway.

1003

The message was sent through a gateway.

1004

The message was received from a gateway.

1005

A delivery receipt or NDR was received from a gateway.

1006

A delivery receipt or NDR was sent through a gateway.

1007

A gateway generated an NDR for a message.

1010

Outbound mail was queued for delivery by the Internet Mail Service.

1011

Outbound Outbound mail was transferred to an Internet recipient.

1012

Inbound Inbound mail was received from by the Internet Mail Service.

1013

Inbound Mail received by the Internet Mail Service was transferred to the Information Store.

1014

An Internet message is being rerouted or forwarded to the proper location.

1015

A delivery receipt or NDR was received by the Internet Mail Service.

1016

A delivery receipt or NDR was sent to the Internet Mail Service.

1017

A delivery receipt or NDR was created.

1018

The receipt or NDR could not be delivered, and was absorbed. (It is not possible to send an NDR for an NDR.)

1019

SMTP: Message Submitted to Advanced Queuing.

1020

SMTP: Started Outbound Transfer of Message.

1021

SMTP: Message Sent to Badmail

1022

SMTP: Advanced Queue Failure

1023

SMTP: Message Delivered Locally

1024

SMTP: Message Submitted to Categorizer

1025

SMTP: Started Message Submission to Advanced Queue

1026

SMTP: Advanced Queue Failed to Deliver Message

1027

SMTP Store Driver: Message Submitted from Store

1028

SMTP Store Driver: Message Delivered Locally to Store

1029

SMTP Store Driver Submitted Message to MTA

1030

SMTP: Non-Delivered Report (NDR) Generated

1031

SMTP: Ending Outbound Transfer

1032

SMTP Message Scheduled to Retry Categorization

1033

SMTP Message Categorized and Queued for Routing

1034

SMTP Message Routed and Queued for Remote Delivery

1035

SMTP Message Scheduled to Retry Routing

1036

SMTP Message Queued for Local Delivery

1037

SMTP Message Scheduled to Retry Local Delivery

1038

SMTP Message Routed and Queued for Gateway Delivery

1039

SMTP Message deleted by Intelligent Message Filtering

1040

SMTP Message rejected by Intelligent Message Filtering

1041

SMTP Message archived by Intelligent Message Filtering

1042

Message redirected to the alternate recipient

1043

Invalid Event Type

 

如何分析邮件跟踪日志

对跟踪日志的格式了解之后,分析日志中的数据也就不再是一件难事了。我们可以逐行读入日志记录,对相关数据进行统计。由于篇幅所限,本文只讨论其中的一种统计场景 -- 如何统计邮件发送人及其所发送邮件的数目,并给出相关的示范代码(VBScript编写)以供大家参考。

一封邮件可以经历多个事件,直到它被成功发送。导致的结果是,一封邮件可以对应于与日志中的数条记录。如何有效地区分这些记录,避免重复统计,是我们最先应该考虑的问题。前面我们提到过,MSGID是贯穿邮件生命周期的标识,我们可以利用它来区分不同的邮件。因此,我们基本上的思路是:建立一个集合对象,把MSGID存入其中。当读入一条新记录时,我们会查找该集合对象。如果MSGID已经存在,说明该邮件已经被统计过,我们可以忽略。否则的话,我们将把这个MSGID插入到集合中,并进行统计。

对于统计邮件发送人的情况,我们需要建立另外一个集合,用于存贮每一封邮件的发送人的地址。如果当前发送人地址不在集合中,我们将把这个地址插入集合,并把相应的邮件数量置为初始值1。当我们发现这个邮件发送人的地址已经存在的话,我们就只要把相应邮件数量的值加1。 当完成整个日志文件的分析后,我们的集合对象就能给出想要的统计数据了。

下面是相关的VBScript代码。这个脚本能够分析统计日志文件中发送人的邮件地址,以及他相应发送邮件的数量。把源代码拷贝到一个文本文件中,并以.VBS为扩展名进行命名,例如:ParseLog.vbs。之后,通过以下命令运行脚本。(注:20070109.log是日志文件名。通常还需要提供文件路径。)

CScript ParseLog.VBS 20070109.log

===================代码开始===================
    \' 本代码的目的是为了更清楚地解释日志的格式和分析方法。仅供大家参考。
    \' 代码中对很多情况未作特殊处理。因此,作者不建议在生产环境中使用它。
    \' 如果因不当使用而引起的任何问题,作者不负任何责任。谢谢。
    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
    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

    \' 显示统计结果
    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
            \' 按行读取列数据到数组里
            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)
                    \' 记录发送人
                    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
    ===================代码结束===================

相关文章 热门文章
  • 小心"斯瑞波"病毒 删除日志文件群发垃圾邮件
  • 日志中的秘密:Windows登录类型知多少?
  • ORF 反垃圾邮件系统--如何更改ORF的日志存放路径
  • MDaemon使用技巧大全--如何按照实际需求记录日志
  • Domino控制台和log.nsf出现一些奇怪的日志信息
  • Exchange 2007 中更强大的日志功能
  • 如何检查MDaemon的相关日志记录
  • RedHat Linux常见的日志文件和常用命令
  • 如何在Outlook中打开“启用邮件日志记录”选项以解决问题
  • 关于win2000产生错误创建错误日志
  • Postfix 日志脚本
  • qmail邮件系统(六)qmail的日志和管理
  • Exchange 2000 Server 常见问题(四)
  • Exchange 2000 Server 常见问题(一)
  • Exchange 2000 Server 常见问题(三)
  • Exchange 2000 Server 常见问题(五)
  • Exchange 2000 Server 常见问题(二)
  • 部署Exchange Server 2003问题集(1)
  • Telnet到端口25以测试SMTP通信
  • 限制Exchange用户从Internet收发邮件
  • Exchange Server管理与设定(一)
  • 使用Exchange 2000 Server 构建多域名邮件系统
  • 虚拟内存碎片的检测和EXCHANGE的内存优化
  • Exchange Server 公用程序(一)
  • 自由广告区
     
     
    WINMAIL 让您轻松架设邮件系统
    eqmail
    最新软件下载
  • ORF Enterprise Edition 4.2 正式版
  • Exchange Server 2003 群集安装配置
  • ORF 4.2 Beta
  • Exchange 2000/2003 日志分析系统
  • Microsoft Outlook Personal Folders B..
  • MDaemon Server 9.07 英文正式版
  • Kerio MailServer 6.5.1 6098 Linux版
  • Kerio MailServer 6.5.1 6098 正式版
  • 酷邮(KooMail) V5.0 简体中文版
  • PowerGUI 
  • IMail Server 10
  • Foxmail6.5 Beta2
  • 今日邮件技术文章
  • 恶意软件上半年激增278% 攻击目标直指..
  • 企业可考虑移动Email减少运行成本
  • CommVault Simpana增加了新的电子发现..
  • Cyanlotus青莲科技合作伙伴大会上海召开
  • 电邮附件统一管理终实现
  • Pushmail市场孕育新机遇
  • QQ邮箱使用过程中需注意的九个细节
  • 中山大学测试梭子鱼反垃圾邮件系统报告
  • 专家称反垃圾邮件的过程将是漫长的博弈
  • 东北大学温占考:信用机制现身反垃圾工作
  • 给AOL用户发送垃圾邮件 纽约男子被判..
  • Google开发Gmail、Calendar离线功能 ..
  • 最新专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • 移动电子邮件专题
  • Apache James 专题
  • IMail Server 操作指南
  • ISA Server 2004 使用专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2007 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号