Добавление и удаление необходимых разрешений. Автоматическое удаление логов

Добавление и удаление необходимых разрешений. Автоматическое удаление логов

03.05.2019

При внедрении Exchange возникает неприятная ситуация – мы вроде бы все требования по месту для Exchange выполнили, но оно неумолимо уменьшается… начинаем разбираться и понимаем что всевозможные логи растут быстрее чем мы предполагали, так как же с ними бороться? Далее описаны способы по усечению\перемещению различных логов, в общем все то, что поможет нам решить проблему. Отдельно замечу, что вся информация есть в технической библиотеке technet 🙂 и здесь она всего лишь подобрана для определенной задачи: напомнить способы решения проблем с нехваткой места по причине разрастания логов.

Transaction logs

Журнал транзакций наиважнейший элемент Exchange. Приведем пример: при отправке сообщения транзакция сначала записывается в журнал. Пока транзакция не передалась в базу данных Exchange, эти данные существуют только в системной памяти и журналах транзакций. В случае аварии вы теряете содержимое памяти, и все, что у вас остается, это записи в журнале транзакций. Эти журналы важны для восстановления поврежденной базы. То же самое касается и других транзакций: полученных сообщений, удаленных элементов и сообщений, перемещенных в другие папки. Соответственно данные логи растут очень быстро, как же их уменьшить?

1. Резервное копирование

Одной из функций, выполняемых при успешном завершении полной или добавочной архивации, является усечение файлов журнала транзакций, которые больше не требуются для восстановления базы данных. Exchange 2013 поддерживает только резервные копии Exchange на основе службы теневого копирования томов (VSS).

Отличная статья по настройке резервного копирования с использованием Windows Server Backup

2. Включение Circular Logging

При включении circular logging журнал транзакций очищается сразу после того, как транзакции помещаются в базу данных.

С помощью EAC Circular Logging включается так:

При включенном циклическом ведении журнала расширенного обработчика хранилищ дополнительные файлы журнала не создаются, вместо этого при необходимости перезаписывается текущий файл журнала. Однако в среде с непрерывной репликацией(DAG) файлы журнала необходимы для доставки и преобразования журналов. В результате при включении циклического ведения журнала непрерывной репликации текущий файл журнала не перезаписывается, а для процесса доставки и преобразования журналов создаются закрытые файлы журнала, т.е обеспечивается непрерывность журналов, а журналы не удаляются, пока они необходимы для репликации. Служба репликации Microsoft Exchange и служба банка данных Microsoft Exchange взаимодействуют с помощью удаленного вызова процедур (RPC), касающихся того, какие файлы журнала могут быть удалены.

3. Перемещение Transaction logs

Ну и в конце концов мы можем переместить логи вместе с базой в другое место\другой диск.

Для этого есть прекрасный командлет Move-DatabasePath . Приведем пример переноса базы данных MDB01 и журналов транзакций на диск M в соответствующие директории:

Move-Databasepath “MDB01” –EdbFilepath “M:\DB\MDB01\database\mdb01.edb” –LogFolderpath “M:\DB\MDB01\logs\”

Queue Database

Это конечно не логи, но если вам необходимо освободить место то перемещение данной базы может вам помочь. Queue Database — это временное хранилище сообщений, ожидающих следующую стадию обработки. Каждая очередь представляет собой логический набор сообщений, которые обрабатываются сервером транспорта в определенном порядке. Все очереди хранятся в одной базе данных ESE. Очереди размещаются только на серверах почтовых ящиков или на пограничных транспортных серверах. Местоположение базы данных очереди и ее журналов транзакций контролируется ключами в XML-файле конфигурации приложения %ExchangeInstallPath%Bin\EdgeTransport.exe.config.

Все что мы можем сделать с нею, это переместить ее в другое место. Достаточно исчерпывающая информация о перемещении находится в библиотеке technet в статье Change the Location of the Queue Database

Transport Logs

Журналы транспорта предоставляют сведения о происходящем в транспортном конвейере. Достаточно исчерпывающая информация о отключении\включении логирования и их перемещении находится в библиотеке technet в статье Transport Logs .

В Microsoft Exchange Server 2013 доступны следующие журналы транспорта:

  • Agent logs
  • Connectivity logs
  • Message tracking and delivery reports
  • Pipeline tracing
  • Protocol logs
  • Routing table logs

Protocol logs через EAC: servers\servers\выбрать сервер\transport logs\protocol log

Например изменить путь хранения Message Tracking через EAC: servers\servers\выбрать сервер\transport logs\message tracking log.

Отдельно замечу что переместить можно только в локальную папку. Проблему с размещением на сетевом ресурсе можно обойти использовав команду mklink и создав ссылку на сетевой ресурс. Например создайте ссылку mklink /d «D:\HubReceiveSMTPLog» \\Server\HubReceiveSMTPLog , теперь вы можете используя командлет Set-TransportService и параметр –ReceiveProtocolLogPath «D:\HubReceiveSMTPLog» хранить ReceiveSMTP логи на сетевом ресурсе. Данный способ подходит и для других логов.

IIS log files

В логе IIS у вас будет информация например о подключении вашего ipad с помощью протокола activesync. Размер IIS логов, если за ним не уследить может быть очень большим. Как же их автоматом удалить или переместить на другой диск?

1.Автоматическое удаление логов

Запускайте ежедневно через scheduler следующий скрипт ps1 (измените путь хранения логов если нужно) и все ваши логи IIS старше 30 дней будут удаляться не требуя вашего внимания.

set-location c:\inetpub\logs\LogFiles\W3SVC1\

foreach ($File in get-childitem) {

if ($File.LastWriteTime -lt (Get-Date).AddDays(-30)) {

del $File

Запускать скрипт ps1 через scheduler вы можете следующим образом:

  • Создайте задачу в scheduler
  • Создайте action: start a program
  • В поле program/script: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
  • В поле add arguments(optional): -command “pathTOscript\name.ps1”

2.Перемещение логов в другое место

  • Откройте IIS Manager from Administrative Tools и выберете Default Web Site.

  • Откройте Logging (щелкните два раза на иконке Logging)
  • Измените место хранения логов

  • Сохраните изменения. Следующий файл лога запишется в новое место хранения
  • Тоже самое можно сделать при мощи powershell:

Import-Module WebAdministration

Set-ItemProperty ‘IIS:\Sites\Default Web Site’ -name logfile.directory «D:\IISLogs»

Папка Logging

И наконец папка Logging которая по умолчанию находится в ‘C:\Program Files\Microsoft\Exchange Server\V15\Logging. Здесь хранится множество логов различных служб, и может занимать достаточно большое количество места. Особенно выделяются по объему diagnostic and performance log files которые находятся в папке ‘C:\Program Files\Microsoft\Exchange Server\V15\Logging\Diagnostics

На просторах интернета было найдено простое решение этого вопроса, запускайте ежедневно через scheduler и все логи из этих папок старше 14 дней перестанут вас беспокоить 🙂

gci ‘C:\Program Files\Microsoft\Exchange Server\V15\Logging’,’C:\inetpub\logs’ -Directory | gci -Include ‘*.log’,’*.blg’ -Recurse | ? LastWriteTime -lt (Get-Date).AddDays(-14) | Remove-Item

P.S. Я лично предпочитаю резать только diagnostics:

gci ‘C:\Program Files\Microsoft\Exchange Server\V15\Logging\Diagnostics’ -Directory | gci -Include ‘*.log’,’*.blg’ -Recurse | ? LastWriteTime -lt (Get-Date).AddDays(-2) | Remove-Item

Удаление писем в Exchange 2013 бывает необходимо выполнить только из единственного почтового ящика, в случае отправки одному получателю, но встречаются и более сложные случаи, например, когда генеральный директор отправил конфиденциальные данные группе рассылки или, ещё хуже, целой компании. В последнем случае крайне нежелательно, чтобы вообще кто-то прочитал письмо и поэтому время идет даже не на минуты, а на секунды — надо как можно скорее удалить письмо вообще у всех сотрудников. Именно для такого сценария предназначена эта статья — чтобы под рукой всегда была подробная инструкция, в которой только и нужно что подставить свои данные в команду, выполнить её на вашем сервере и все будет готово и останется лишь ждать пока запрос будет обработан. Итак, начнем.

Найти больше информации по настройке и администрированию Exchange 2013 на моем блоге вы сможете в основной статье тематики — .

Нет смысла что-то выдумывать, просто цитата из статьи «Поиск и удаление сообщений «:

Поиск в почтовых ящиках. Эта роль позволяет искать сообщения в нескольких почтовых ящиках в пределах организации. Администраторы не имеют этой роли по умолчанию. Чтобы назначить себя этой роли для поиска в почтовых ящиках, добавьте себя в группу ролей «Управление обнаружением». См. раздел Назначение разрешений обнаружения электронных данных в Exchange .

Импорт и экспорт почтовых ящиков. Эта роль позволяет удалять сообщения из почтового ящика пользователя. По умолчанию эта роль группе ролей не назначена. Для удаления сообщений из почтовых ящиков пользователей следует добавить роль «Импорт и экспорт почтовых ящиков» в группу ролей «Управление организацией». Дополнительные сведения см. в разделе Добавление роли в группу ролей .

Удаление письма из одного ящика

Отозвать сообщение пока оно ещё не прочитано можно прямо из outlook. Как это сделать для версий outlook 2010, 2007, 2003 можно прочитать в статье «ОТЗЫВ ОТПРАВЛЕННЫХ ПИСЕМ В OUTLOOK 2010, 2007, 2003 «, либо на официальном сайте MS Office в учебных курсах «Учебные курсы по Outlook 2013 «, урок «Отзыв и замена отправленных сообщений «. Нас будет интересовать более сложный случай, когда сообщение уже помечено прочтенным.

Для этого выполним команду powershell, нам необходимо название почтового ящика, а также тема сообщения:

C:\Windows\system32>Search-Mailbox -Identity «egor01» -SearchQuery «Subject:’test message"» -DeleteContent

До и после удаления:

Удаление писем в Exchange 2013 у группы получателей

Логика проста — командлет «Get-Mailbox » возвращает список всех почтовых ящиков, который потом скармливается командлету «Search-Mailbox «. Если вы хотите удалить письма у определенной группы получателей, логично воспользоваться командлетом «Get-DistributionGroupMember «. Для увеличения скорости обработки команды можно отключить запрос на удаление при первом его появлении указав «да для всех». Все просто, переходим сразу к делу:

C:\Windows\system32>Get-Mailbox -ResultSize Unlimited | Search-Mailbox -SearchQuery «Subject:’test message"» -DeleteContent

Добрый день!. В прошлой статье, о автоматическом подключении почтового ящика в Outlook , я рассказал, что буду чаще рассказывать про Microsoft Exchange Server, который я долго обходил стороной. Продолжаю придерживаться своему обещанию, и сегодня хочу поведать, о том как можно выгрузить список почтовых ящиков в Exchange Server , это очень часто встречающаяся необходимость, которую выполняют системные администраторы в свои трудовые будни. Я расскажу, как фильтровать все это дело, подсчитывать общее количество почтовых ящиков, и научу все это выгружать в текстовый файл, для последующего анализа. Уверен, что данная заметка окажется весьма полезной, тем людям, кто только начал работать с этим монстром от Microsoft.

Как выгрузить список почтовых ящиков в Exchange Server

Хочу отметить, что данные команды будут работать как на Microsoft Exchane Server 2010, так и на 2013-16. И так, первая задача, узнать какие активные почтовые ящики есть на нашем Exchange Server, для выполнения нашей задачей мы воспользуется командлетом powershell Get-Mailbox . Открываем Exchange Management Shell (EMS), она находится в меню "Пуск"

Кстати Exchange Management Shell (EMS) имеет, только в 2010 SP1 почтовом сервере, свыше 500-та командлетов, так, что работать в ней можно очень серьезно.

Пишем вот такую команду:

Get-Mailbox | select -expand EmailAddresses | %{$_.SmtpAddress}

На выходе вы получаете список ящиков, учьтите, что время получения результата, прямо завит от количества почт на сервере Exchane, поэтому консоль powershell может подвисать. У меня получился вот такой вывод, содержащий адреса электронных почтовых ящиков Exchange, вы сразу у себя заметите, что вывод команды отдается все не по алфавиту, что не всегда удобно для анализа.

Чтобы выгрузка списка почтовых адресов была по алфавиту, то вам нужно слегка видоизменить вашу команду:

Get-Mailbox | select -expand EmailAddresses | %{$_.SmtpAddress} | sort

В итоге я уже получил список почтовых ящиков в базе Exchange, отформатированный по алфавиту, что позволяет более упрощенно производить поиск п/я.

Но результаты выгрузки списка почтовых ящиков могут быть длинными и не умещаться на экране вывода powershell, для этого удобно все это дело будет выгрузить в текстовый файл, по которому легко будет и производить поиск и фильтровать. Для этого в есть командлет Out-File .

Get-Mailbox | select -expand EmailAddresses | %{$_.SmtpAddress} | sort | Out-File C:\scripts\all_mailbox.txt

  • Где Out-File C:\scripts\all_mailbox.txt - это путь до файла all_mailbox.txt в папке C:\scripts\, вы его меняете на свое значение

WARNING: By default, only the first 1000 items are returned. Use the ResultSize parameter to specify the number of items returned. To return all items, specify "-ResultSize Unlimited". Be aware that, depending on the actual number of items, returning all items can take a long time and consume a large amount of memory. Also, we don"t recommend storingn the results in a variable. Instead, pipe the results to another task or script to perform batch changes.

Обратите внимание, что по умолчанию выводится только 1000 ящиков, если нужно больше, то придется ввести параметр -ResultSize Unlimited .

Теперь давайте мы узнаем информацию, сколько у нас адресов почтовых ящиков в базе почтового сервера, для этого выполните:

Get-Mailbox | select -expand EmailAddresses | %{$_.SmtpAddress} | measure

У меня на одном из серверов их оказалось 2159 штук.

Еще бывают задачи от руководства или сотрудников, это посчитать и получить список почтовых ящиков на определенном домене, если кто-то не в курсе, то Microsoft Exchange Server позволят обслуживать огромное количество доменов, это нормальная практика. В итоге мы воспользуемся вот такой конструкцией.

Если вы хотите получить названия почтовых адресов в организации, чаще всего это ФИО и дату их создания, то выполните такую команду:

Get-Mailbox | Select-Object Name,WhenCreated | Out-File C:\scripts\all_name.txt

Как видите я получил точную дату, когда были созданы почты в организации и кому в плане ФИО, они принадлежат.

Чтобы выгрузить список пользователей, которые не заходили в почтовый ящик более, чем 30 дней с выгрузкой в файл, то выполните

Get-Mailbox -resultsize unlimited | Get-MailboxStatistics |?{$_.LastLogonTime -lt (date).adddays(-30)} | ft DisplayName,ItemCount,LastLogonTimeLast,LogoffTime,LastLoggedOnUserAccount -auto | Out-File C:\scripts\OLD_mailbox.txt

Это позволит вам выявить пользователей, кто за зря занимает место в базе данных Exchange сервера. Еще могут быть ситуации, когда вам нужно выяснить какие почтовые адреса были созданы вашей почтовой системе, например, за последние 20 дней, для этого выполните:

Обратите внимание, что в выводе ft, вы можете задавать много параметров, например, база данных database. Можно даже узнать, за конкретный месяц, так, например, получите список почтовых ящиков за сентябрь

Ну и за весь год, на момент написания статьи это 2018 год.

Бонусный скрипт получения списка адресов с размерами

Get-mailbox -OrganizationalUnit "holding.com/Users/" -resultsize unlimited | sort Name | %{
$Size=Get-MailboxStatistics $_.SamAccountName
$_ | Select-object Name, SamAccountName, @{Name="Size";Expression={((($Size).TotalItemSize).value).toMB()+((($Size).TotalDeletedItemSize).value).toMB()}}} | export-csv -encoding unicode -NoTypeInformation C:\scripts\mailbox..csv

В выводе будет реальный размер почтовых ящиков в базе данных Exchange сервер с учетом удаленных писем из каталога Recoverable Items. Скачать готовый скрипт можно по ссылке слева.

Как видите получить список всех почтовых адресов в организации Exchange, очень просто, для этого не нужно быть гуру Powershell и мега крутым программистом, достаточно выучить несколько конструкций и ключей.



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows