User Tools

Site Tools


internet:mail:exchange:exchange

Microsoft Exchange Server

Services Status

Get-Service | Where {$_.DisplayName -Like "*Exchange*"} | ft DisplayName, Name, Status

Shut Down and Restart Exchange Services

Exchange 2013

Stop Services:

Get-service -name "msexchange*" -dependentservices | Where-Object {$_.Status -eq 'Running'} | Stop-Service

Start Services:

Get-service -name "msexchange*" -dependentservices | Where-Object {$_.Status -eq 'stopped'} | Start-Service

Using net stop:

net stop msexchangeadtopology /y
net stop msexchangefba /y
net stop msftesql-exchange /y
net stop msexchangeis /y
net stop msexchangesa /y
net stop HostControllerService
net stop MSExchangeHM
net stop MSExchangeDiagnostics
net stop MSExchangeADTopology
net stop FMS

and net start:

net start FMS
net start MSExchangeADTopology
net start MSExchangeDiagnostics
net start MSExchangeHM
net start HostControllerService
net start msexchangeIS
net start msexchangeServiceHost
net start msexchangeMailboxAssistant
net start msexchangeDelivery
net start msexchangeSubmission
net start msexchangeMailboxReplication
net start msexchangeTransport
net start msexchangeTransportLogSearch
net start msexchangeThrottling
net start msexchangeFrontEndTransport
net start msexchangeFastSearch
net start msexchangeRPC
net start msexchangeUM
net start msexchangeUMCR
net start msexchangeEdgeSync
net start msexchangeDAGMgmt
net start msexchangeRepl
net start msexchangeAntiSPAMUpdate
net start msexchangeIMAP4
net start msexchangeIMAP4BE

Exchange 2007

net stop msexchangeadtopology /y
net stop msftesql-exchange /y
net stop msexchangeis /y
net stop msexchangesa /y
net stop iisadmin /y
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"

Errors

Diagnostic-Code: smtp;550 5.7.1 RESOLVER.RST.AuthRequired; authentication required

The email problems I was having where with Distribution Groups I had created in Exchange 2007 under Recipient Group, then under Distribution Group, You have to go to the properties of the email account in question and go under the TAB “Mail flow settings”. There under Message Delivery Restrictions make sure that there is NO check mark box inside of “require that all senders are authenticated”.

Move Mailboxes to Another Database

https://www.petenetlive.com/KB/Article/0001224

Database maintenance operations such as offline defragmentation take so long that it is often recommended to simply create a new database, move mailboxes (online) to the new database, then delete the old database instead.

To prevent disk-full problems, enable Circular Logging before (or during) your mailbox migration and restart the 'Microsoft Exchange Information Store' service. Mailbox migration creates huge numbers of log files!

Exchange Admin Center → Servers → Databases → <database> → Edit → Maintenance → Enable Circular Logging → Save

Set-MailboxDatabase <Database-Name> -CircularLoggingEnabled $True
net stop "Microsoft Exchange Information Store"

net start "Microsoft Exchange Information Store"

Restore Deleted Mailbox

https://www.phy2vir.com/restore-a-deleted-mailbox-in-exchange-2013/

Show recently deleted databases:

Get-MailboxDatabase | Get-MailboxStatistics | Where {$_.DisconnectReason -eq "Disabled"} | fl DisplayName,MailboxGuid,LegacyDN,Database,TotalItemSize

Restore a recently deleted mailbox (recreate destination user and mailbox first):

Set the mailbox quota to a high enough value on the destination mailbox or the restore will fail.
New-MailboxRestoreRequest -SourceStoreMailbox <MailboxGuid> -SourceDatabase <Database> -TargetMailbox <Target Mailbox Name> -AllowLegacyDNMismatch -LargeItemLimit Unlimited -AcceptLargeDataLoss

Get-MailboxRestoreRequest | Get-MailboxRestoreRequestStatistics

Restore Failures

https://docs.microsoft.com/en-us/powershell/module/exchange/mailboxes/resume-mailboxrestorerequest

Status of restore requests:

Get-MailboxRestoreRequest | Get-MailboxRestoreRequestStatistics

Collect details of failed restore requests:

Get-MailboxRestoreRequest -Status failed | Get-MailboxRestoreRequestStatistics -IncludeReport | format-list > c:\users\"username"\restore_report.txt
Set-MailboxRestoreRequest -Identity "Identity" -LargeItemLimit Unlimited -AcceptLargeDataLoss

Always use New-MailboxRestoreRequest, but you can try the older Restore-Mailbox as a fallback.

Cleanup:

Get-MailboxRestoreRequest -Status Completed | Remove-MailboxRestoreRequest

Mailbox Recovery

Database Repair

Database repair operations will use a huge amount of disk space and create huge temp files! You can cause greater problems than you already have if you ignore this!
Database defrag and repair takes a very long time! If you have a 200GB database, you might get it back up tomorrow! eseutil /p and eseutil /d run at about 3-5GB of data per hour.
Do not make any mistakes or you might not get it back up tomorrow!

Recovery Plan Outline: http://forums.msexchange.org/fb.aspx?m=1800504795

http://msexchangeguru.com/2013/02/01/jet_errmissinglogfile-528-548/

http://www.msexchange.org/articles-tutorials/exchange-server-2003/tools/Exchange-ISINTEG-ESEUTIL.html

http://msexchangeguru.com/2011/03/02/databse-repair/

http://msexchangeguru.com/2009/07/12/exchange-database-recovery-using-eseutil-commands/

http://exchangeserverpro.com/restore-individual-mailbox-exchange-2010#eseutil

:!: If you can, you might consider shutting down all Exchange services at this point.

Check “state” of database:

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

If the state is “clean shutdown”, move all the log files from the Transaction logs folder location and then mount the stores.

If Dirty:

Check log files:

eseutil /ml "C:\Program Files\Microsoft\Exchange Server\V14\Mailbox\Mailbox Database\E00"

:!: Add /a to skip missing logfile.

If the log files are healthy, then perform the Soft recovery:

eseutil /r E00 /l "C:\Program Files\Microsoft\Exchange Server\V14\Mailbox\Mailbox Database" /d "C:\Program Files\Microsoft\Exchange Server\V14\Mailbox\Mailbox Database\Mailbox Database.edb"

If the soft recovery runs without error but the state is still dirty, you can run a full recovery:

:!: Make a backup of the database first!

eseutil /p "C:\Program Files\Microsoft\Exchange Server\V14\Mailbox\Mailbox Database\Mailbox Database.edb"

:!: If you only plan to salvage data from the disk, and do not plan to put it back in production, you can skip defragmentation to save time.

Now we defragment the database:

If you don't specify the temporary space, you had better have a very large C: drive and it will probably fill it completely causing even bigger problems! It is recommended to have 110% of the database size in free temp space.
The Exchange eseutil /d defragment temp file location defaults to %windir%\System32\ and the files are named xxxxxxx.EDB and xxxxxxx.INTEG.RAW.
If you can, such as in a virtualized environment, consider adding a very large and very fast drive just for temporary space.
After running /d, you must remove any log files before mounting the database.
eseutil /d <database_path_and_file_name> /t <temp_database_path_and_file_name>
eseutil /d "C:\Program Files\Microsoft\Exchange Server\V14\Mailbox\Mailbox Database\Mailbox Database.edb" /t "E:\TempDefrag.edb"

Now we logically repair the database and reindex:

:!: The MSExchangeIS service must be running and the database dismounted.

:!: This command is gone as of Exchange 2013.

isinteg -s servername -fix -test alltests

Database Recovery

:!: If you can, restore the mailboxes without restoring from backup.

Here we have restored the database and log files from backup:

Check for Clean Shutdown:

eseutil /mh "x:\path\to\restored\mailboxdb.edb"

Create a new recovery database in Exchange using the restored databse file and logs:

New-MailboxDatabase -Recovery -Name RecoveryDB -Server SERVERNAME -EdbFilePath "x:\path\to\restored\mailboxdb.edb" -LogFolderPath "x:\path\to\restored\logs\"

Get-MailboxStatistics -Database RecoveryDB | ft –auto

Recover Mailbox from Recovery Database

https://converteredbtopst.wordpress.com/2017/08/29/export-mailbox-from-recovery-database-exchange-2013-to-pst/

Get-MailboxStatistics -Database RecoveryDB | where displayname -eq "User Name"

:!: You must add -AllowLegacyDNMismatch if you merge to a new account.

:!: Add -TargetRootFolder if desired.

New-MailboxRestoreRequest -SourceDatabase RecoveryDB -SourceStoreMailbox "SourceUser Name" -TargetMailbox "TargetUser Name" -AllowLegacyDNMismatch -TargetRootFolder "Restored Items"

Get-MailboxRestoreRequest | Get-MailboxRestoreRequestStatistics

Cleanup:

Get-MailboxRestoreRequest -Status Completed | Remove-MailboxRestoreRequest

Export Mailbox to PST

:!: To export to PST, you must recover the mailbox first.

New-MailboxExportRequest -Mailbox username -FilePath \\server\share\path\username.pst

Get-MailboxExportRequest | Get-MailboxExportRequestStatistics

Rebuild Search Index

https://practical365.com/exchange-server/exchange-2016-failed-content-index/

:!: Rebuilding the search index will cause high CPU load.

Get-MailboxDatabaseCopyStatus * | sort name | Select name,status,contentindexstate

Stop-Service MSExchangeFastSearch
Stop-Service HostControllerService

Get-MailboxDatabase
Get-MailboxDatabase "Mailbox Database 000000000" | select EdbFilePath

Using File Manager, delete the sub-folder with a GUID for the name containing the content index files.

Start-Service MSExchangeFastSearch
Start-Service HostControllerService

Wait a while, then recheck the contentindexstate. The status will change to crawling.

Check Version

https://<serverFQDN>/mapi/emsmdb/

or

Get-ExchangeServer | fl name,AdminDisplayVersion

Then cross-reference here:

https://social.technet.microsoft.com/wiki/contents/articles/15776.exchange-server-2013-2016-and-2019-build-numbers-with-cumulative-updates.aspx

Troubleshooting

Exchange database consistency check (for full backup):

eseutil /k /i "C:\Program Files\Microsoft\Exchange Server\V14\Mailbox\Mailbox Database\Mailbox Database.edb"

https://testconnectivity.microsoft.com/

internet/mail/exchange/exchange.txt · Last modified: 2020/01/23 10:41 by gcooper