Поиск по сайту:

Найдите неактивные (неиспользуемые) списки рассылки в 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:

  1. Получите список всех групп рассылки в домене и экспортируйте его в файл CSV:

    Get-DistributionGroup | Select-Object PrimarySMTPAddress | Sort-Object PrimarySMTPAddress | Export-CSV all-exchange-dls.csv -notype
  2. Перечислите 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 …
  3. Затем сравните два списка и найдите неактивные группы:

    $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
  4. Вы можете скрыть неиспользуемые группы рассылки в глобальном списке адресов:

    $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.

Статьи по данной тематике