Администратор on-prem Exchange или облачного Exchange Online (в Microsoft 365) должен контролировать размеры почтовых ящиков пользователей. В этой статье мы покажем, как узнать текущие размеры почтовых ящиков и задать квоты на размер ящиков пользователей в Exchange. Статья разбита на два блока: в первом мы рассмотрим особенности настройки ограничениям на размеры ящиков в наземном Exchange Server 2019/2016/2013, а второй посвящен квотам на размеры ящиков в облачном Microsoft 365 (Exchange Online).
Как получить размер почтового ящика в Exchange 2019/2016/2013?
Текущий размер ящика пользователя можно посмотреть в графической консоли Exchange Admin Center. Найдите пользователя в разделе Recipients, откройте его свойства и перейдите в секцию Mailbox Usage. На данном скриншоте видно, что текущий размер ящика 26 Мб (использовано 0% из 100 доступных Гб).
Но мне гораздо удобнее использовать PowerShell для получения информации о размере ящиков пользователей на Exchange Server. Запустите EMS (Exchange Management Shell) или подключитесь к своему серверу Exchange удаленно.
Для получения базовой статистики почтового ящика пользователя на сервере Exchange используется командлет Get-MailboxStatistics. В качестве аргумента указывается имя пользователя. При запуске без параметров выводится имя пользователя (DisplayName), количество элементов в ящике (ItemCount), лимит ящика (StorageLimitStatus) и время последнего доступа (LastLogonTime).
Get-MailboxStatistics jlukas
Чтобы получить общий размер ящика (размер всех элементов в ящике) и размер удаленных элементов, нужно выполнить такую команду:
Get-MailboxStatistics jlukas |ft DisplayName, TotalItemSize, ItemCount, totaldeleteditemsize, storagelimitstatus
Можно получить список всех ящиков, расположенных в определенной почтовой базе:
Get-Mailbox -Database MSK-MBX1| Get-MailboxStatistics | ft displayname,totaldeleteditemsize,totalitemsize
Эту таблицу можно отсортировать по полю с размером ящика пользователя и вывести, к примеру, топ 10 самых больших ящиков.
Get-Mailbox -Database MSK-MBX1| Get-MailboxStatistics | sort-object totalitemsize –descending | Select-Object displayname, totalitemsize -First 10
Если результат выполнения команды нужно выгрузить в CSV, нужно добавить
| Export-CSV top10mailbox.csv
Изменить квоту на размер ящиков в Exchange Server
Для ограничения размера ящиков в Exchange Server используются квоты. Вы можете установить квоту на уровне базы данных или конкретного почтового ящика.
Информацию по текущим квотам базы данных можно вывести так:
Get-MailboxDatabase -Identity MSK-MBX2| fl *quota
Квоты задаются с помощью трех параметров:
- IssueWarningQuota — размер ящика, после достижения которого пользователь начинает получать уведомления о приближении к лимиту ящика;
- ProhibitSendQuota — размер ящика, при достижении которого запрещена отправка писем;
- ProhibitSendReceiveQuota — размер ящика, при достижении которого блокируется и отправка и получение писем.
Чтобы изменить размеры квот для базы, используется такая команда:
Set-MailboxDatabase -Identity MSK-MBX2 -IssueWarningQuota 19GB -ProhibitSendQuota 19.5GB -ProhibitSendReceiveQuota 20GB
Также вы можете задать квоты базы данных из графического интерфейса Exchange admin center (EAC). Перейдите в раздел Servers -> Databases -> выберите базу данных -> перейдите на вкладку Limits.
Квоты почтовой базы применяются для всех ящиков в базе. Однако, вы можете выставить для определенных ящиков персональные квоты. В этом случае они будут переопределять квоты почтовой базы. Чтобы к ящику применялись персональные квоты, нужно отключить наследования квоты с базы данных (
UseDatabaseQuotaDefaults = false
) и задать новые значения:
Set-Mailbox -Identity jlukas -IssueWarningQuota 30GB -ProhibitSendQuota 40GB -ProhibitSendReceiveQuota 50GB -UseDatabaseQuotaDefaults $false
Настройки персональных квот для ящика можно вывести так:
Get-Mailbox -Identity jlukas | fl UseDatabaseQuotaDafaults,IssueWarningQuota,ProhibitSendQuota,ProhibitSendReceiveQuota
Либо вы можете задать персональные квоты ящика через EAC в свойствах ящика на вкладке Mailbox Usage. Включите опцию Customize the settings for this mailbox и задайте новые лимиты для ящика.
Новые квоты применяются к ящику не сразу. Нужно подождать 2-3 часа или воспользоваться командлетом
Update-StoreMailboxState username
для принудительной синхронизации ящика с аккаунтом в AD.
Следующая команда вернет список ящиков, размеры которых превысили или приблизился к заданной квоте:
Get-MailboxStatistics -Server MSK-MB-2| where{($_.StorageLimitStatus -contains“IssueWarning”) -or ($_.StorageLimitStatus -contains “ProhibitSend”)}
Размер почтового ящика в Exchange Online (Microsoft 365)
В Exchange Online (Microsoft 365) лимит на размер ящика зависит от назначенного плана и типа ящика. Большинство ящиков Microsoft 365 ограничены размером 50 Гб. Если вы назначили пользователям лицензий Microsoft E3 и E5, размер лимита для таких ящиков увеличен до 100 Гб, и всего 2 Гб для лицензии F3.
Кроме того, в зависимости от назначенного плана пользователь может использовать архивный ящик (In-Place Archive) с ограничением 50 Гб. А при использовании подписки Exchange Online Plan 2 или Exchange Online Plan 1 (с лицензией Exchange Online Archiving add-on) размер архивного ящика может достигнуть 1.5 Тб, при условии роста до 1 Гб в день.
Текущий размер ящика пользователя Exchange Online можно получить из Exchange Admin Center.
Также вы можете получить информацию о размере ящика и квоте с помощью PowerShell. Подключитесь к своему тенанту Exchange Online с помощью командлета:
Connect-ExchangeOnline
Вывести информацию о размере ящика пользователя и количестве элементов в нем:
Get-ExoMailboxStatistics kbuldogov|select ItemCount,TotalItemSize
Либо информацию о всех почтовых ящиках в тенанте с сортировкой по размеру:
Get-ExoMailbox| Get-ExoMailboxStatistics |select DisplayName,ItemCount,TotalItemSize|Sort-Object -Property TotalItemSize –Descending
Найти все ящики, размер которых превышает 50Гб:
Get-EXOMailbox | Get-EXOMailboxStatistics | Where-Object {[int64]($PSItem.TotalItemSize.Value -replace '.+\(|bytes\)') -gt "50GB"} | Sort-Object TotalItemSize -Descending | Select-Object DisplayName, ItemCount, TotalItemSize
Общий размер всех ящиков пользователей в вашем тенанте Microsoft 365:
((Get-EXOMailbox -ResultSize Unlimited | Get-EXOMailboxStatistics).TotalItemSize.Value.ToMB() | measure-object -sum).sum
Информацию по квотам ящика в соответствии с назначенным планом можно вывести так:
Get-EXOMailbox kbuldogov -PropertySets Quota
ProhibitSendQuota : 99 GB (106,300,440,576 bytes) ProhibitSendReceiveQuota : 100 GB (107,374,182,400 bytes) RecoverableItemsQuota : 30 GB (32,212,254,720 bytes) RecoverableItemsWarningQuota : 20 GB (21,474,836,480 bytes) CalendarLoggingQuota : 6 GB (6,442,450,944 bytes) UseDatabaseQuotaDefaults : False IssueWarningQuota : 98 GB (105,226,698,752 bytes) RulesQuota : 256 KB (262,144 bytes) ArchiveQuota : 110 GB (118,111,600,640 bytes) ArchiveWarningQuota : 100 GB (107,374,182,400 bytes)
Вы можете включить архивный ящик для пользователя:
Enable-Mailbox -Identity kbuldogov -Archive
Чтобы сделать архив автоматически расширяющимся:
Enable-Mailbox -Identity kbuldogov -AutoExpandingArchive
Вы можете вывести список ящиков с включенным архивом и размер архивных ящиков:
Get-ExoMailbox -Archive | Get-ExoMailboxStatistics |select DisplayName,ItemCount,TotalItemSize
Попробовал
Get-MailboxStatistics -Server MSK-MB-2| where{($_.StorageLimitStatus -contains“IssueWarning”) -or ($_.StorageLimitStatus -contains “ProhibitSend”)}
Почему то у меня просто курсор на следующую строку перепрыгивает и все
Какая версия Exchange? Сейчас под рукой только Exchange 2010 — в нем команда работает нормально.
При выводе команды DisplayName отображается ????????
Значит у вас DisplayName ящиков на русском.
Попробуйте изменить кодировку в консоли:
[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("utf-8")
Либо попробуйте выгрузить в CSV с помощью
export-csv c:\mbxstats.xls -Encoding UTF8
Вот рабочая команда для 2013-го Эксча:
Get-MailboxStatistics -Database MAIL-ARH-07| Get-MailboxStatistics | ft displayname,totaldeleteditemsize,totalitemsize
у вас опечатка
Set-Mailbox -Identity jlukas -IssueWarningQuota 30GB -ProhibitSendQuota 40GB -ProhibitSendReceiveQuota 50GB -UseDatabaseQuotaDafaults $false
UseDatabaseQuotaDafaults в слове Defaults
Спасибо, пофиксил 🙂
подскажите какой размер ящика верный если
Get-MailboxStatistics -Identity $user |ft DisplayName, TotalItemSize
Выдает:
DisplayName TotalItemSize
———— ————-
**** 363 MB (380,644,006 bytes)
А команда
Get-MailboxFolderStatistics -Identity $user -FolderScope All | select Name,ItemsInFolder,FolderSize
Name ItemsInFolder FolderSize
—- ————- ———-
входящие 4441 288.4 MB (302,390,065 bytes)
почему тогда в первой команде всего 363мб?
как удалить вопрос 🙂
стыдно воспринял 4441 288.4 MB как одно число.
Привеь, а можно ли настроить квоты при создании ящика по должности например?
Менеджерам например 2Гб, Администрация 10Гб
Можно использовать отдельные базы для разных пользователей с разными квотами.
Либо сделать несложные PowerShell скрипты с проверкой поле Должность в AD и назначением соотвестсвующей квоты (использовать при заведении, или запускать регулярно через планировщик).
Спасибо большое за совет, про отдельную базу даже не подумал.
Подскажите пожалуйста, что такое TotalDeletedItemSize?
Спасибо, командой посмотрел размер реальный всех ящиков
((Get-Mailbox -Database db01 -ResultSize Unlimited | Get-MailboxStatistics).TotalItemSize.Value.ToMB() | measure-object -sum).sum