Найдите неактивные (неиспользуемые) списки рассылки в Exchange/Microsoft 365
В вашей организации Exchange или клиенте Exchange Online (Microsoft 365) вы можете создавать сотни групп рассылки (списки рассылки, списки рассылки). Списки рассылки, которые больше не используются, должны периодически удаляться администратором Exchange. В этой статье мы покажем вам, как найти и удалить неиспользуемые и пустые группы рассылки в Exchange.
Поиск неиспользуемых списков рассылки отличается от поиска неактивных пользователей или компьютеров AD. Exchange DL не имеет такого атрибута, как LastLogonDate/LastLogonTimeStamp, для отслеживания времени последнего использования объекта. Вы можете использовать журналы отслеживания Exchange, чтобы определить, были ли электронные письма отправлены в определенную группу рассылки.
Получение списка пустых групп рассылки в Exchange с помощью PowerShell
Если в группе рассылки нет пользователей, вполне вероятно, что она больше не нужна.
Вы можете использовать PowerShell для поиска пустых групп рассылки в организации Exchange. Подключитесь к серверу 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 для поиска пустых динамических DL:
Get-DynamicDistributionGroup -ResultSize Unlimited | Where-Object { (Get-Recipient -RecipientPreviewFilter (Get-DynamicDistributionGroup -Identity $_.Identity).RecipientFilter).count -eq 0} | select Name, PrimarySmtpAddressКак найти неактивные группы рассылки на сервере Exchange
Командлет Get-MessageTrackingLog используется в Exchange Server для анализа журналов транспорта. Например, вы можете подсчитать количество сообщений электронной почты, отправленных в группу рассылки за последние 90 дней, используя следующую команду:
Get-MessageTrackingLog -Start (Get-Date).AddDays(-90) -ResultSize unlimited -Recipients "dl-it_admins@active-directory.ru"| measure-objectВы можете использовать следующую команду, чтобы увеличить срок хранения журналов отслеживания электронной почты на Exchange Server до 180 дней:
Set-TransportService MUN-Ex01 -MessageTrackingLogMaxAge 180.00:00:00Чтобы найти неиспользуемые группы рассылки, вы можете использовать следующий скрипт PowerShell:
Получите список всех групп рассылки в домене и экспортируйте его в файл CSV:
Get-DistributionGroup | Select-Object PrimarySMTPAddress | Sort-Object PrimarySMTPAddress | Export-CSV all-exchange-dls.csv -notypeПеречислите DL, которые получили электронные письма за последние 30 дней:
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Если в вашей организации Exchange имеется более одного сервера с транспортной ролью (вы можете получить их список, используя
Get-TransportService), вам нужно будет найти каждый из них:
Get-MessageTrackingLog -Server Exh01 …-
Затем сравните два списка и найдите неактивные группы:
$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: hidden in the address list at $currentdate" $inactiveDL = Import-CSV -Path inactive-dls.| foreach-object { Set-Group -identity $_.PrimarySmtpAddress -notes $notes Set-DistributionGroup -identity $_.PrimarySmtpAddress -HiddenFromAddressListsEnabled $true }
Определите неактивные списки рассылки в Microsoft 365 (Exchange Online)
В Microsoft 365 вы можете отслеживать журналы электронной почты с помощью Центра администрирования Exchange (Поток почты -> Трассировка сообщений) или с помощью
Start-HistoricalSearchили
Get-MessageTraceКомандлеты PowerShell. Последняя команда имеет существенное ограничение - она позволяет искать только те письма, которые были отправлены за предыдущие 10 дней. Для нашей задачи это не подходит.
Установите модуль Exchange Online PowerShell (EXO) и подключитесь к своему арендатору:
Connect-ExchangeOnlineСледующая команда отображает количество электронных писем, отправленных на SMTP-адрес списка рассылки:
Start-HistoricalSearch -ReportTitle "Global Admin DL" -StartDate 04/20/2023 -EndDate 06/20/2023 -ReportType MessageTrace -RecipientAddress global_admins@ active-directory.ru -NotifyAddress maxb@active-directory.ruОдин клиент может использовать максимум 250 поисков по истории за 24 часа.
Чтобы запустить поиск неактивных DL, вы можете использовать следующий скрипт:
foreach ($group in Get-DistributionGroup)
{
Start-HistoricalSearch -ReportTitle $group.PrimarySmtpAddress -StartDate 04/20/2023 -EndDate 06/21/2023 -ReportType MessageTrace -RecipientAddress $group.PrimarySmtpAddress -NotifyAddress maxb@active-directory.ru
}После завершения поиска вы можете проверить, сколько писем было отправлено в DL:
Get-HistoricalSearch "Global Admin DL"
Если список сообщений пуст (
Rows = 0), это означает, что группа рассылки не использовалась в Exchange Online в течение последних 90 дней. Такой список рассылки можно считать неактивным.
Вы можете использовать группы Microsoft 365 вместо списков рассылки в Exchange Online.

