Microsoft Exchange - заметки по администрированию

Microsoft Exchange

В этой записи буду собирать заметки связанные с администрированием почтового сервера Microsoft Exchange. Рекомендации, команды, решение ошибок и прочая полезная информация которая может пригодится администратору Exchange.

Перезапуск Exchange без перезагрузки сервера

Bat скрипт для выключения сервисов Microsoft Exchange 2003:

net stop “Microsoft Exchange Information Store” /y
net stop “Microsoft Exchange System Attendant” /y
net stop “Microsoft Exchange IMAP4″ /y
net stop “Microsoft Exchange Routing Engine” /y
net stop “Microsoft Exchange POP3″ /y
net stop “Microsoft Exchange Management” /y
net stop IISAdmin /y

Имейте в виду что IIS использует не только Exchange

Bat скрипт для включения сервисов Microsoft Exchange 2003:

net start “Microsoft Exchange Information Store”
net start “Microsoft Exchange System Attendant”
net start “Microsoft Exchange MTA Stacks”
net start “Microsoft Exchange IMAP4″
net start “Microsoft Exchange Routing Engine”
net start “Microsoft Exchange POP3″
net start “Microsoft Exchange Management”
net start IISAdmin

Скрипт выключения Microsoft Exchange 2007

net stop msexchangeadtopology /y
net stop msftesql-exchange /y
net stop msexchangeis /y
net stop msexchangesa /y
net stop iisadmin /y

Скрипт включения Microsoft Exchange 2007

net start "World Wide Web Publishing Service"
net start "Microsoft Exchange Information Store"
net start "Microsoft Exchange System Attendant"
net start "Microsoft Search (Exchange)"
net start "Microsoft Exchange Information Store"
net start "Microsoft Exchange Unified Messaging"
net start "Microsoft Exchange Transport Log Search"
net start "Microsoft Exchange Transport"
net start "Microsoft Exchange Service Host"
net start "Microsoft Exchange Search Indexer"
net start "Microsoft Exchange Replication Service"
net start "Microsoft Exchange Mail Submission"
net start "Microsoft Exchange Mailbox Assistants"
net start "Microsoft Exchange File Distribution"
net start "Microsoft Exchange EdgeSync"
net start "Microsoft Exchange Anti-spam Update"
net start “Microsoft Exchange IMAP4″
net start “Microsoft Exchange POP3″

Закончилось место и логи транзакций

По умолчанию Exchange хранит свою базу данных по адресу "C:\Program Files\Microsoft\Exchange Server\Mailbox\First Storage Group\", то есть на системном диске. Данные хранятся в файле базы данных: "Mailbox Database.edb" и логах транзакций, имена которых выглядят приблизительно вот так: "E0000000017.log". Лог транзакций имеет размер не более чем 1 мегабайт.  Но таких логов может быть очень много. Их имя отличается лишь порядковым номером в конце. Если пришло или отправилось письмо через Exchange, то вся информация (вместе с содержимым письма) сначала записывается в файл лога транзакций и лишь позже информация из этих логов заносится в базу данных. Также есть файл с именем "E00.chk" в котором хранится информация о том, с какого последнего лога транзакций не были записаны данные в базу данных. То есть логи с порядковым номером меньше чем этот лог уже не нужны. Очень частая проблема когда эти логи просто забивают полностью весь системный диск и ОС перестает корректно работать. Поэтому заранее рекомендую: размещайте базу данных Exchange не на системном диске. Просто так удалять эти логи нельзя. Я могу назвать три способа как очистить логи. Очистка логов вручную При помощи следующей команды смотрим какой последний лог был записан в базу данных:

eseutil /mk "C:\Program Files\Microsoft\Exchange Server\Mailbox\First Storage Group\E00.chk" | find "Checkpoint:"

В ответ команда выдаст пару строк, одна из которых будет приблизительно вот такая: Checkpoint: (0xF356,80,0) Нас интересует "F356" - это и есть номер последнего  не записанного в базу данных Exchange транзакционного лога. Все логи которые идут перед ним можно удалять. Можно это автоматизировать при помощи Powershell скрипта:

$temp = (eseutil /mk «C:\Program Files\Microsoft\Exchange Server\Mailbox\First Storage Group\E00.chk»)[13]
$Bottom_Log_File = $temp.remove($temp.IndexOf(«,»)).remove(0,$temp.IndexOf(«x»)+1)
Get-ChildItem «C:\Program Files\Microsoft\Exchange Server\Mailbox\First Storage Group» | Where-Object { $_.Name.Length -eq 15 -AND $_.Name -like «E00*.log» -AND $_.Name.Substring(3+8-$Bottom_Log_File.length,$Bottom_Log_File.length) -lt $Bottom_Log_File } | foreach($_) {remove-item $_.fullname}

Можно прописать периодический запуск скрипта в планировщике задач. Создание резервной копии сервера встроенными средствами Windows При резервном копировании автоматически делается ровно то же, что и описано в "Ручном способе" - система смотрит в файл "E00.chk" и удаляет все логи с меньшим порядковым номером. Чтобы это работало в Exchange 2007, должен быть установлен Exchange SP2 Включение циклических логов и перемонтирование хранилища В режиме циклических логов (Circular Logging) файлы не накапливаются, а перезаписываются. Но если вдруг что-то случится с базой данных. То мы не сможем накатить все логи на базу данных восстановленную из последней резервной копии, так как их не будет, ведь они перезаписываются. То есть все письма и данные которые записывались в базу после резервного копирования до момента сбоя будут утрачены. Можно просто включить циклическое логирование, перемонтировать хранилище, подождать пока все логи запишутся в базу и удалятся и после этого отключить циклическое логирование и снова перемонтировать базу данных. Либо не отключать циклическое логирование, тут уже решать Вам. Как это делается можно посмотреть вот в этом видео: youtube.com

Доступ к чужим ящикам в Exchange 2007

Для того, чтобы просмотреть содержимое чужих почтовых ящиков необходимо выполнить следующие действия:

  • Открываем Exchange Managment Console
  • Переходим в ней по адресу Microsoft Exchange - Recipient Configuration - Mailbox
  • Кликаем правой кнопкой мышки по необходимому ящику и выбираем пункт "Manage Full Access Permission"
  • В открывшемся окне нажимаем на кнопку "add" и добавляем того пользователя, которому нужно предоставить доступ к ящику. Жмем подтверждающие кнопки
  • У пользователя, которому предоставлен доступ, открываем Outlook 2007
  • В главном меню Outlook 2007 выбираем "Сервис - Настройка учетных записей"
  • В открывшемся окне "Настройка учетных записей" на вкладке "Электронная почта" выбираем аккаунт (он скорее всего будет единственный) и жмем кнопку "изменить"
  • В окне "Изменить учетную запись электронной почты" жмем на кнопку "другие настройки"
  • В появившемся окне "Microsoft Exchange" переходим на вкладку "Дополнительно" и жмем на кнопку "Добавить"
  • В окне "добавление почтового ящика" вводим учетку или почтовый ящик, к которому предоставлен доступ и далее жмем потвержающие кнопки.

Что и как нажимать в Outlook я показал на скриншоте ниже:

предоставление доступа к ящику

В результате в Outlook вы увидите +1 почтовый ящик в котором можно читать и отвечать на почтовые сообщения как так же как и со своего, на изображении ниже их у меня множество:

Множество почтовых ящиков в Outlook

 

Остальное заметки о Microsoft Exchange

Посмотреть размер почтовых ящиков в Exchange 2007: Запускаем "Exchange Management Shell" и вводим команду:

Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | ft DisplayName,@{label="TotalItemSize(MB)";expression={$_.TotalItemSize.Value.ToMB()}},ItemCount

Посмотреть статус размонтированной базы: "грязное" или "чистое" Грязное - не корректное, после этого нужно производить процесс восстановления базы данных, так как ее монтирование вряд ли произойдет. Чистое - корректное размонтирование. Команда:

eseutil /mh "C:\Program Files\Microsoft\Exchange Server\Mailbox\First Storage Group\Mailbox Database.edb"

И смотрим чтобы в строке "State:" было "Clean Shutdown"  - чистое.

Разрешить отправлять сообщения без авторизации с определенного IP

  • В Exchange 2007 открываем Exchange Managment Console - Server Configuration - Hub Transport
  • В Receive Connectors создаем коннектор.
  • В коннекторе на вкладке Network в блоке "Receive mail from..." указываем IP адреса с которых хотим отправлять письма без аутентификации
  • На вкладке Authentication оставляем галочку только возле пункта "Transport Layer Security (TLS)"
  • На вкладке "Permission Groups" указываем Anonymous users

Разрешить отправлять письма без авторизации для группы рассылки

  • В Exchange 2007 открываем Exchange Managment Console - Recipient Configuration - Distribution Group
  • Нажимаем правой кнопкой мышки на необходимой группе рассылки и выбираем "Properties"
  • На вкладке "Mail Flow Settings" выделяем мышкой "Mesage Delivery Restrictions" и жмем кнопку "Properties"
  • В появившемся окне "Message Delivery Restrictions" убираем галочку с "Require that all senders are authenticated"

Ошибка "An Exchange 2007 server on which an address list service is active cannot be found."

Решение: Запустите "Microsoft Exchange System Attendant" сервис в оснастке Services.msc

Ошибка "EventID 9554 – Unable to update Mailbox SD in the DS":

Пример ошибки:

Unable to update Mailbox SD in the DS. Mailbox Guid: 844fec0b-405a-4e74-9b7d-3fea8e1373ae. Error Code 0x80070005

Решение:

Выясните какому пользователю принадлежит этот ящик, команда в Exchange Management Shell:

Get-MailboxStatistics | Where-Object { $_.MailboxGuid -eq '844fec0b-405a-4e74-9b7d-3fea8e1373ae' } | ft DisplayName, MailboxGuid

Далее:

  • Откройте оснастку Active Directory Users and Computers
  • Найдите учетную запись пользователя - правый клик "свойства" - вкладка "security" - кнопка "advanced"
  • Ставим галочку наследования разрешений с родительских объектов - "include inheritable permissions from object's parents" и применяем кнопками "OK".

Полезные ссылки и используемые источники:

Понравилось? =) Поделись с друзьями:

Обсудить