有人问我,我们是否可以了解我们收到了多少外部邮件,以及哪些外部域是最“活跃”的。
基本上,我们需要一份报告,详细说明我们在指定时间段内从外部域收到了多少封邮件:我想这就是我们所要求的。
*@gmail.com; 450
*@yahoo.com; 200
我习惯使用 Powershell,并开始在那里寻找,但我真的没有找到任何能给我带来我想要的结果的东西。Get-MailFlowStatusReport、Get-MailTrafficReport 和 Get-MailTrafficSummaryReport 为我提供了收发邮件的原始数字,但据我所知,它们并没有提供所要求的更详细的报告。
理论上,我应该能够编写一些程序,使用 Get-MessageTrace 遍历所有邮箱并提取所有外部地址。但这是大材小用,而且可能需要很长时间才能运行。更不用说这只能给我最近十天的统计数据。
MS Graph 可能有更好的工具来处理这种类型的报告,但我几乎没有使用过 Graph,而且我在谷歌搜索中也没有在 EAC 中找到符合我们要求的任何内容。
答案1
Exchange Online 确实保存了每个发件人域的现成统计数据。因此,您必须下载跟踪日志并自行进行统计。
一种选择是使用获取消息跟踪命令,例如:
Get-MessageTrace -StartDate "2021-09-28" -EndDate "2021-10-07" -SenderAddress "*@gmail.com" -PageSize 5000
您必须牢记几个限制:
- 这开始日期参数不能早于10从今天开始的几天内。如果您需要更大的日期范围,我建议您每天下载数据并将其保存在磁盘或 OneDrive 上。然后您可以使用脚本进行计数,或使用 Excel/Power BI 进行可视化
- 该命令返回的最大记录数为5000. 因此,您可能必须在 PowerShell 脚本中实现分页逻辑
另一个选择是使用Exchange 管理门户邮件跟踪>可下载的报告
这是一种手动方法,我不确定它是否可以自动化,但它可能足以进行一次性分析。它可以返回过去 90 天的数据
希望这可以帮助
答案2
您想搜索多长时间的邮件?如果您想查看少于 7 天的邮件的邮件跟踪结果,您可以运行以下命令来搜索来自所有外部发件人的电子邮件:
Get-MessageTrace -StartDate "2021/10/1" -EndDate "2021/10/8" | where{$_.SenderAddress -notlike "*@company.onmicrosoft.com"} | Select-Object -Property SenderAddress | Export-Csv "C:\external.csv"
运行命令后,您将获得一个.csv 文件,然后您可以使用 Excel(数据透视表)的功能来计算外部发件人的数量:
如果你想查看超过 7 天的邮件的邮件追踪结果,你可以尝试邮件追踪报告和合规性搜索,但在追踪或搜索中不能指定为外部发件人。