Со временем в организации Exchange или тенанте Exchange Online (Microsoft 365) накапливается сотни групп рассылки (Distribution List, DL) . Часть из них может не использоваться и их нужно периодически удалять. В этой статье мы покажем, как найти неиспользуемые и пустые группы рассылок в Exchange.
Поиск неиспользуемых групп рассылки отличается от поиска неактивных компьютеров/пользователей в AD . У DL нет атрибута типа LastLogonDate
/ LastLogonTimeStamp
, позволяющего определить время последнего использования объекта. С помощью журналов отслеживания Exchange вы можете определить, отправились ли письма на указанную группу рассылки или нет.
Если группа рассылки не содержит пользователей, вероятно она более не нужна. Подключитесь к своему Exchange Server с помощью PowerShell.
Чтобы найти пустые группы рассылки в организации Exchange, используйте такой PowerShell скрипт:
Get-DistributionGroup –ResultSize Unlimited |Where-Object { (Get-DistributionGroupMember –Identity $_.Name –ResultSize Unlimited).Count -eq 0} | select Name, PrimarySmtpAddress
Проанализируйте полученный список групп рассылки и удалите/скройте ненужные вам DL с помощью команды Remove-DistributionGroup.
Get-DynamicDistributionGroup -ResultSize Unlimited | Where-Object { (Get-Recipient -RecipientPreviewFilter (Get-DynamicDistributionGroup -Identity $_.Identity).RecipientFilter).count -eq 0} | select Name, PrimarySmtpAddress
Для анализа транспортных логов в Exchange Server используется командлет Get-MessageTrackingLog . Например, Вы можете посчитать количество писем, отправленных на определенную группу рассылки за последние 90 дней с помощью команды:
Get-MessageTrackingLog -Start (Get-Date).AddDays(-90) -ResultSize unlimited -Recipients " [email protected] "| measure-object
Set-TransportService HQExch1 -MessageTrackingLogMaxAge 180.00:00:00
Чтобы найти неиспользуемые группы рассылки, можно использовать такой сценарий PowerShell:
Get-DistributionGroup | Select-Object PrimarySMTPAddress | Sort-Object PrimarySMTPAddress | Export-CSV all-exchange-dls.csv –notype
Get-MessageTrackingLog -Start (Get-Date).AddDays(-30) -EventId Expand -ResultSize Unlimited |Sort-Object RelatedRecipientAddress | Group-Object RelatedRecipientAddress |Sort-Object Name | Select-Object @{label=”PrimarySmtpAddress”;expression={$_.Name}}, Count | Export-CSV exchange-active-dls.csv –notype
Get-TransportService
), нужно выполнить поиск на каждом из них: Get-MessageTrackingLog –Server Exh1 ….
$alldl = Import-CSV -Path all-exchange-dls.csv
$activedl = Import-CSV -Path exchange-active-dls.csv
Compare-Object $alldl $activedl -Property PrimarySmtpAddress -SyncWindow 500 |Sort-Object PrimarySmtpAddress | Select-Object -Property PrimarySmtpAddress |Export-Csv inactive-dls.csv –NoType
$currentdate = Get-Date
$notes = "Inactive, скрыта из адресной книги $currentdate"
$inactiveDL = Import-CSV -Path inactive-dls.| foreach-object
{
Set-Group -identity $_.PrimarySmtpAddress -notes $notes
Set-DistributionGroup -identity $_.PrimarySmtpAddress -HiddenFromAddressListsEnabled $true
}
В Microsoft 365 вы можете выполнять поиск по почтовым логам с помощью Exchange Admin Center ( Mail Flow -> Message Trace ) или с помощью PowerShell командлетов Start-HistoricalSearch
и Get-MessageTrace
. Последний командлет имеет существенное ограничение – он позволяет искать письма только за последние 10 дней и не подходит для нашей задачи.
Установите на свой компьютер модуль Exchange Online PowerShell (EXOv2) и подключитесь к своему тенанту:
Connect-ExchangeOnline
Следующий команда позволит вывести количество писем, отправленных на SMTP адрес определённой группы рассылки:
Start-HistoricalSearch -ReportTitle "DL Name" -StartDate 03/19/2022 -EndDate 05/18/2022 -ReportType MessageTrace -RecipientAddress global_server_admins@ remontka.com -NotifyAddress [email protected]
Для запуска поиска неактивных DL среди групп рассылок, можно использовать такой скрипт:
foreach ($group in Get-DistributionGroup)
{
Start-HistoricalSearch -ReportTitle $group.PrimarySmtpAddress -StartDate 03/19/2022 -EndDate 05/18/2022 -ReportType MessageTrace -RecipientAddress $group.PrimarySmtpAddress -NotifyAddress [email protected]
}
После окончания поиска можно проверить сколько писем было отправлено на email DL:
Get-HistoricalSearch "DL Name"
Если список писем пуст (в Rows = 0
), значит эта группа рассылки не использовалась в Exchange Online в течении последних 90 дней. Такую группу рассылки можно считать неактивной.
Если говорить о том, какие лучшие дистрибутивы Linux мы знаем, то этот список может быть…
Хотя Ubuntu и поставляется со встроенным обозревателем Firefox многие пользователи считают что это не самая…
Что такое Remmina? Remmina — это совершенно бесплатный и свободный клиент так называемого удаленного рабочего…
Как мы знаем, Ubuntu это самая популярная сборка из систем на базе ядра Linux. У…
Выбор ноутбука для каждого пользователя это довольно кропотливый процесс. Люди стараются подобрать ноутбук который будет…
Если вы решили ознакомиться с операционной системой Linux более детально и задались вопросом как установить…