Home » Posts tagged 'exchange 2013'
Tag Archives: exchange 2013
Exchange 2013 OAB Download Error (0x80190194) : ‘The operation failed
Recently I had an issue where users could not download the offline address book using any version of outlook. The error users report is Task ‘email’ reported error (0x80190194) : ‘The operation failed
There are many blog posts on the net that give different fixes for this error but in my case the problem still persisted.
I was able to observe the OAB files being updated on the server, I was able to browse the OAB.xml file from the client web browser, Outlook Test Connection returned the correct OABURL in the XML response. There were no errors on the client or server side event logs that suggested any hint of an issue. After a day of frustration I found the cause of the problem through off-piste troubleshooting which turned out to be corrupt arbitration mailboxes.
I should probably state that this environment was a migration from 2007 to 2013 previously so I think that perhaps the migration did not go that smoothly, but exchange quietly hid the issue.
Anyway to fix the issue this is what I did
Mark is an Independent Microsoft Teams Consultant with over 15 years experience in Microsoft Technology. Mark is the founder of Commsverse, a dedicated Microsoft Teams conference and former MVP. You can follow him on twitter @UnifiedVale
Move Arbitration Mailboxes to New Database
To Move all the hidden system mailboxes from a database to another (or arbitration mailboxes) use the following powershell commandlet in EMS
Get-Mailbox -Arbitration | New-MoveRequest -TargetDatabase <target databse>
Mark is an Independent Microsoft Teams Consultant with over 15 years experience in Microsoft Technology. Mark is the founder of Commsverse, a dedicated Microsoft Teams conference and former MVP. You can follow him on twitter @UnifiedVale
Remove Soft Deleted Mailboxes from Exchange Database
When moving mailboxes between databases you sometimes experience the moves completing with a warning. The warning may be that post move cleanup could not be completed on the source mailbox database. This means that you will see disconnected mailboxes in EMC even though the users mailbox is live on the other database. In this circumstance you need to remove the disconnected or soft deleted mailboxes from the old database to free up space.
You can do this by first obtaining the mailbox GUID of the soft deleted mailbox using this command
Get-MailboxStatistics -Database <dbname> | Where {$._DisconnectREason -eq "SoftDeleted"} | fl MailboxGuid
Then you can use the output of this to then remove the mailbox using this command
Remove-StoreMailbox -Database <dbname> -Identity <mailboxguid> -MailboxState SoftDeleted -Confirm:$false
To remove all soft deleted mailboxes from a database in one go you can use this command
Get-MailboxStatistics -Database MBD01 | where {$_.DisconnectReason -eq "SoftDeleted"} | foreach {Remove-StoreMailbox -Database $_.database -Identity $_.mailboxguid -MailboxState SoftDeleted}
Mark is an Independent Microsoft Teams Consultant with over 15 years experience in Microsoft Technology. Mark is the founder of Commsverse, a dedicated Microsoft Teams conference and former MVP. You can follow him on twitter @UnifiedVale
Adding Out Of Office Notice to Exchange User’s Mailbox Using Powershell
Administrators can set user’s OOO notifications directly from EMS by using the following command
Set-MailboxAutoReplyConfiguration <alias> -AutoReplyState enabled -ExternalAudience all -InternalMessage <Message to internal senders> -ExternalMessage <Message to external senders>
Mark is an Independent Microsoft Teams Consultant with over 15 years experience in Microsoft Technology. Mark is the founder of Commsverse, a dedicated Microsoft Teams conference and former MVP. You can follow him on twitter @UnifiedVale
Creating a Receive Connector for TLS (Encrypted) E-mail Exchange 2013
Email transmissions between companies sometimes need to be encrypted in transit. In order for this encryption to work across links both exchange servers must have a valid and trusted SSL certificate. If using Internal CA certificates, both exchange servers must have the each others Root CA cert and any Intermediates installed locally in the relevant certificate stores, and must be able to lookup the certificate revocation list of the certificate. Therefore each network myst have a CRL publishing point available to each other.
To create a Receive Connector to accept TLS encrypted email you must first declare the remote email domain in the TlsReceiveDomainSecureList of exchange 2013. This is done using the Set-TransportConfig exchange management shell command
Set-TransportConfig -TLSReceiveDomainSecureList @{Add="remotedomain.com"}
Now to create the receive connector
New-ReceiveConnector -Name TLSReceive -Usage Custom -Bindings "10.0.10.10:25" -TransportRole "FrontEndTransport" -AuthMechanism TLS -DomainSecureEnabled $true -Fqdn "tlsmail.domain.com" -RequireTLS $true -TlsCertificateName [s]subject name
To get the subject name of the certificate use the Get-ExchangeCertificate cmdlet.
Mark is an Independent Microsoft Teams Consultant with over 15 years experience in Microsoft Technology. Mark is the founder of Commsverse, a dedicated Microsoft Teams conference and former MVP. You can follow him on twitter @UnifiedVale
Removing Soft Deleted Mailboxes from Exchange
When performing mailbox moves sometimes they complete with warnings. When you interrogate the move log you may find that the move was successful but the request failed to clean up the source database.
Microsoft say they resolved this in Microsoft Exchange 2010 SP3 but I have seen this happen in later releases SP3 CU5 and 2013.
To manually remove these disconnected mailboxes you need to use EMS. First find the disconnected mailbox in the source database
Get-MailboxStatistics -Database <source database name> | Where { $_.DisconnectReason -eq "SoftDeleted" } | fl DisplayName, MailboxGUID
Then use the following command to remove them
Remove-StoreMailbox –Database <source database name> –Identity <user mailbox GUID> –MailboxState Softdeleted
You will need to wait for the maintenance routine to run on the database before the white space is reclaimed
Mark is an Independent Microsoft Teams Consultant with over 15 years experience in Microsoft Technology. Mark is the founder of Commsverse, a dedicated Microsoft Teams conference and former MVP. You can follow him on twitter @UnifiedVale
Emailing Users when Password is about to Expire
I had one request from a customer recently that asked if it was possible to email users before the their active directory passwords expire as it was causing issues with remote users.
I created a PowerShell script which I added as a scheduled task on one domain controller that runs once a day. The script queries AD for the date the user last changed their password and compared it against AD password policy maximum age limit. If this reached a specified time such as 5 days before, the user would be emailed once per day with 5 days to go. Please note that you will need an exchange server or mail server that will allow unauthenticated email to be sent from the DC you home this script on.
$smtpServer=”exchangecasserver.domain.local”
$from = “passwordreminder@domain.local”
$expireindays = 5
#Get Users From AD who are enabled
Import-Module ActiveDirectory
$users = get-aduser -filter * -properties * |where {$_.Enabled -eq “True”} | where { $_.PasswordNeverExpires -eq $false } | where { $_.passwordexpired -eq $false }
foreach ($user in $users)
{
$Name = (Get-ADUser $user | foreach { $_.Name})
$emailaddress = $user.emailaddress
$passwordSetDate = (get-aduser $user -properties * | foreach { $_.PasswordLastSet })
$maxPasswordAge = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge
$expireson = $passwordsetdate + $maxPasswordAge
$today = (get-date)
$daystoexpire = (New-TimeSpan -Start $today -End $Expireson).Days
$subject=”Your password will expire in $daystoExpire days”
$body =”
Dear $name,
<p> Your Password will expire in $daystoexpire days.<br>
To change your password, Logon to the domain Internal Network on a PC / Laptop, press CTRL ALT Delete and chose Change Password <br>
<p>Thanks, <br>
</P>”
if ($daystoexpire -lt $expireindays)
{
Send-Mailmessage -smtpServer $smtpServer -from $from -to $emailaddress -subject $subject -body $body -bodyasHTML -priority High
}
Mark is an Independent Microsoft Teams Consultant with over 15 years experience in Microsoft Technology. Mark is the founder of Commsverse, a dedicated Microsoft Teams conference and former MVP. You can follow him on twitter @UnifiedVale
Unattended Installation of Exchange 2013
Performing an unattended installation of Exchange 2013 is pretty simple. This is useful if you want to install exchange using custom settings such as renaming the default database or placing the database or log files on separate drives etc.
From the installation media folder open command prompt and use the following command line switches to prepare the Active Directory for Exchange 2013
Setup.exe /PrepareAD /IAcceptExchangeLicensingTerms /OrganizationName “ExchangeOrg”
Once completed run the following
Setup.exe /Mode:install /IAcceptExchangeServerLicenseTerms /r:CA,MB /TargetDir: E:\Exchange /CustomerFeedbackEnabled:False /Mdbname:MBXDB01 /DbFilePath:E:\Databases\MBXDB01.mdb /LogFolderPath:F:\Logs\MBXDB01
Note: If installing Exchange 2013 on multiple servers and you are splitting the Client Access role from the Mailbox role, you must install the first Mailbox server first BEFORE installing a Client Access Server.
Mark is an Independent Microsoft Teams Consultant with over 15 years experience in Microsoft Technology. Mark is the founder of Commsverse, a dedicated Microsoft Teams conference and former MVP. You can follow him on twitter @UnifiedVale
Installing Exchange 2013 Server Pre-requisites
To install Exchange Server 2013 requires certain roles and features. These can be automatically installed via the GUI install of Exchange Server, however it is more efficient to install these via PowerShell
Powershell Command
Install-WindowsFeature AS-HTTP-Activation, Desktop-Experience, NET-Framework-45-Features, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, RSAT-Clustering-Mgmt, RSAT-Clustering-PowerShell, Web-Mgmt-Console, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation,RSAT-ADDS
This command will install all roles and features required for either the mailbox or client access exchange role.
After the server has rebooted you will need to install the following application packages
UCMA 4.0 SDK http://www.microsoft.com/en-gb/download/details.aspx?id=35463
UCMA 4.0 Client Runtime http://www.microsoft.com/en-us/download/details.aspx?id=34992
Office 2010 Filter Pack http://www.microsoft.com/en-gb/download/details.aspx?id=17062
Office 2010 Filter Pack SP2 http://www.microsoft.com/en-gb/download/details.aspx?id=39668
Reboot once more and then begin the Exchange 2013 Installation.
Mark is an Independent Microsoft Teams Consultant with over 15 years experience in Microsoft Technology. Mark is the founder of Commsverse, a dedicated Microsoft Teams conference and former MVP. You can follow him on twitter @UnifiedVale