邮件收发数量统计功能是Exchange中一项非常实用的功能,它可以统计出在某一个时间段内,所有用户的邮件收发数量、单个用户的邮件收发数量、收发明细等等

在做邮件收发数量统计之前,我们首先来确保Exchange启用了邮件跟踪日志(默认是启用的),打开Exchange管理控制台,如图打开HUB服务器cqexcashub01和cqexcashub02的属性

邮件收发数量统计_第1张图片

 

在【日志设置】选项卡中,确保【启用邮件跟踪日志】前面的勾已经勾选

邮件收发数量统计_第2张图片

 

为了验证统计的准确性,在测试之前,我们先向外部发送几封邮件,从下图可以看到用户jqq(蒋庆秋)向QQ邮箱发送5封;用户rb(任波)向QQ邮箱发送了2封

邮件收发数量统计_第3张图片

 

用户jmc(蒋茂春)向163邮箱发送了3封

邮件收发数量统计_第4张图片

 

然后再通过外部邮箱,向内部用户发送几封邮件

这里用户jqq(蒋庆秋)收到2封

邮件收发数量统计_第5张图片

 

用户rb(任波)收到3封

邮件收发数量统计_第6张图片

 

用户jmc(蒋茂春)收到1封

邮件收发数量统计_第7张图片

 

那么先来简单做个统计

发送 接收
jqq(蒋庆秋) 5 2
rb(任波) 2 3
jmc(蒋茂春) 3 1
合计 10 6

 

接下来在Exchange Management Shell中通过一系列的统计,将统计结果和上面表格中的数值进行对比,看能否对得上

我们先来统计11月27号这一天的邮件发送总量,由于我的环境中有2台HUB服务器,Exchange会随机选择这2台HUB服务器投递邮件,所以需要分别对cqexcashub01和cqexcashub02进行统计

Get-MessageTrackingLog -Start "11/27/2012 00:00:00" -end "11/28/2012 00:00:00" -EventId send -Server cqexcashub01 | Measure-object

Get-MessageTrackingLog -Start "11/27/2012 00:00:00" -end "11/28/2012 00:00:00" -EventId send -Server cqexcashub02 | Measure-object

-Start 起始时间 月/日/年 时:分:秒
-End 结束时间
-EventID 事件 Send(发送事件)、Receive(接收事件)
-Server HUB服务器
Measure-object 计算总和 去掉可以显示明细

 

从两次命令返回的Count值看出,cqexcashub01发送了6封,cqexcashub02发送了4封,相加的结果等于10,说明总数是对得上的

邮件收发数量统计_第8张图片

 

如果需要查看2台HUB服务器的发送明细,可以去掉 Measure-object 参数

Get-MessageTrackingLog -Start "11/27/2012 00:00:00" -end "11/28/2012 00:00:00" -EventId send -Server cqexcashub01

Get-MessageTrackingLog -Start "11/27/2012 00:00:00" -end "11/28/2012 00:00:00" -EventId send -Server cqexcashub02 

邮件收发数量统计_第9张图片

 

每次都要输入两次命令实在是太麻烦,那么来做个命令传递,先用 Get-ExchangeServer cqexcashub* 获取到2台HUB服务器,然后再将返回的值传递给 Get-MessageTrackingLog 命令

Get-ExchangeServer cqexcashub* | Get-MessageTrackingLog -Start "11/27/2012 00:00:00" -end "11/28/2012 00:00:00" -EventId send | Measure-object

最后Count值为10,方便多了

邮件收发数量统计_第10张图片

 

统计11月27日每位用户分别发送的邮件数量

Get-ExchangeServer cqexcashub* | Get-MessageTrackingLog -Start "11/27/2012 00:00:00" -end "11/28/2012 00:00:00" -EventId send | Group-Object –Property sender | Select Name,Count | Sort Count -Descending

Group-Object –Property sender 按发件人分组
Select Name,Count 筛选出Name和Count这两列
Sort Count -Descending 对Count的值进行排序

邮件收发数量统计_第11张图片

 

统计11月27日内部用户邮件接收总量

Get-ExchangeServer cqexcashub* | Get-MessageTrackingLog -Start "11/27/2012 00:00:00" -end "11/28/2012 00:00:00" -EventId Receive | Measure-object

可以看到通过此命令统计出来的接收总数量为16封,可我们内部用户只收到了6封啊,这显然不对,去掉 Measure-object 参数后再看,发现QQ邮箱和163邮箱也在统计范畴内邮件收发数量统计_第12张图片

 

将命令修改一下

Get-ExchangeServer cqexcashub* | Get-MessageTrackingLog -Start "11/27/2012 00:00:00" -end "11/28/2012 00:00:00" -EventId Receive | Where {$_.Recipients  -like "*@excontoso.tk"} | Measure-object

通过 Where {$_.Recipients -like "*@excontoso.tk"} 对收件人列做一个筛选,将内部邮箱筛选出来,现再Count值就完全吻合了

邮件收发数量统计_第13张图片

 

统计11月27日每位用户分别接收的邮件数量

Get-ExchangeServer cqexcashub* | Get-MessageTrackingLog -Start "11/27/2012 00:00:00" -end "11/28/2012 00:00:00" -EventId Receive | Group-Object –Property Recipients | Where {$_.Values  -like "*@excontoso.tk"} | Select Values,Count | Sort Count –Descending

对收件人进行分组后,同样要筛选出内部邮箱

邮件收发数量统计_第14张图片

 

统计11月27日用户jqq发送的邮件数量

Get-ExchangeServer cqexcashub* | Get-MessageTrackingLog -Start "11/27/2012 00:00:00" -end "11/28/2012 00:00:00" -EventId send -Sender "[email protected]" | Measure-object

去掉 Measure-object 可以逐一显示用户jqq所发送的邮件

邮件收发数量统计_第15张图片

 

统计11月27日【[email protected]】这个QQ邮箱的接收邮件数量,以及向这个邮箱发送过邮件的所有用户

Get-ExchangeServer cqexcashub* | Get-MessageTrackingLog -Start "11/27/2012 00:00:00" -end "11/28/2012 00:00:00" -EventId Receive -Recipients "[email protected]" | Measure-object

去掉 Measure-object 参数即可统计到向【[email protected]】发送过邮件的所有用户

邮件收发数量统计_第16张图片

 

 

-Eventid可包括BadMail、Defer Deliver、DSN、Expand、Fail、PoisonMessage、Receive、Redirect、Resolve、Send、Submit 和 Transfer。为对邮件状态进行检索。

比如下面使用Fail参数来检索一个时间段内发送失败的邮件数量:

[PS] C:\Windows\system32>Get-MessageTrackingLog -ResultSize unlimited -Start "07/01/2012" -End "07/13/2012" -EventId "Fail" -Server "srvbj06" |Measure-Object

邮件收发数量统计_第17张图片

2、查询某个邮箱的发送情况:

[PS] C:\Windows\system32>Get-MessageTrackingLog -ResultSize unlimited -Start "07/01/2012" -End "07/13/2012" -EventId "send" -Sender "[email protected]" |Measure-Object

邮件收发数量统计_第18张图片

下面在看看这个邮箱哪些邮件发送失败了

[PS] C:\Windows\system32>Get-MessageTrackingLog -ResultSize unlimited -Start "07/01/2012" -End "07/13/2012" -EventId "FAIL" -Sender [email protected]

邮件收发数量统计_第19张图片
 3、按邮箱排列出一个时间段内发送情况:

加上Group-Object命令进行分组统计这里我们计算Count的值,然后在把Count进行分组,在使用select进行筛选。

[PS] C:\Windows\system32>Get-MessageTrackingLog -ResultSize unlimited -Start "07/01/2012" -End "07/13/2012" -EventId "send" |Group-Object -Property:sender |select name,count

邮件收发数量统计_第20张图片

上面已经统计出了每个邮箱的发送情况,下面在加上sort对count数值进行一个排序,这样就能得出哪个邮箱发得最多了。

[PS] C:\Windows\system32>Get-MessageTrackingLog -ResultSize unlimited -Start "07/01/2012" -End "07/13/2012" -EventId "send" |Group-Object -Property:sender |Select name,count|sort count -Descending

邮件收发数量统计_第21张图片