邮件收发数量统计功能是Exchange中一项非常实用的功能,它可以统计出在某一个时间段内,所有用户的邮件收发数量、单个用户的邮件收发数量、收发明细等等
在做邮件收发数量统计之前,我们首先来确保Exchange启用了邮件跟踪日志(默认是启用的),打开Exchange管理控制台,如图打开HUB服务器cqexcashub01和cqexcashub02的属性
在【日志设置】选项卡中,确保【启用邮件跟踪日志】前面的勾已经勾选
为了验证统计的准确性,在测试之前,我们先向外部发送几封邮件,从下图可以看到用户jqq(蒋庆秋)向QQ邮箱发送5封;用户rb(任波)向QQ邮箱发送了2封
用户jmc(蒋茂春)向163邮箱发送了3封
然后再通过外部邮箱,向内部用户发送几封邮件
这里用户jqq(蒋庆秋)收到2封
用户rb(任波)收到3封
用户jmc(蒋茂春)收到1封
那么先来简单做个统计
发送 | 接收 | |
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,说明总数是对得上的
如果需要查看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
每次都要输入两次命令实在是太麻烦,那么来做个命令传递,先用 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,方便多了
统计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 �CProperty sender | Select Name,Count | Sort Count -Descending
Group-Object �CProperty sender | 按发件人分组 |
Select Name,Count | 筛选出Name和Count这两列 |
Sort Count -Descending | 对Count的值进行排序 |
统计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邮箱也在统计范畴内
将命令修改一下
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值就完全吻合了
统计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 �CProperty Recipients | Where {$_.Values -like "*@excontoso.tk"} | Select Values,Count | Sort Count �CDescending
对收件人进行分组后,同样要筛选出内部邮箱
统计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所发送的邮件
统计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]】发送过邮件的所有用户
-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
2、查询某个邮箱的发送情况:
[PS] C:\Windows\system32>Get-MessageTrackingLog -ResultSize unlimited -Start "07/01/2012" -End "07/13/2012" -EventId "send" -Sender "[email protected]" |Measure-Object
下面在看看这个邮箱哪些邮件发送失败了
[PS] C:\Windows\system32>Get-MessageTrackingLog -ResultSize unlimited -Start "07/01/2012" -End "07/13/2012" -EventId "FAIL" -Sender [email protected]
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
上面已经统计出了每个邮箱的发送情况,下面在加上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