de-DEen-GB
 
MVP - Most Valuable Professional
rss

Just can't get enough of IT

This blog is about mostly anything in IT. But the primary focuses are Microsoft Technologies like Exchange, Office 365, Azure and Cloud Security.

When you install a Cumulative Update for Exchange Server 2016 you might receive the following informational message:

MAPI over HTTP, the preferred Outlook desktop client connectivity with Exchange server, is currently not enabled.
Consider enabling it using: Set-OrganizationConfig -MapiHttpEnabled $true
For more information, visit: http://technet.microsoft.com/library(EXCHG.150)/ms.exch.setupreadiness.WarnMapiHttpNotEnabl
ed.aspx

This modern protocol for Outlook has been introduced to Exchange Server with Exchange Server 2013 SP1. The protocol removes the dependency to the Windows Server RPC over HTTP component. The reduced complexity enhances the reliability of the client access protocoll. It's available for quite some time now. 

You can enable MAPI over HTTP on the organization level using the following Exchange cmdlet:

Set-OrganizationConfig -MapiHttpEnabled $true

You can still controll the protocol setting at the user level by deactiviting MAPI of HTTP for certain users, if required:

Set-CASMailbox -Identity [USER] -MapiHttpEnabled:$false

If your IT infrastructue is still not ready for MAPI of HTTP, your IT components pretty outdated. It's time to move forward and to modernize the infrastructure. 

NOTE
Did you know that MAPI over HTTP connects to Exchange Server using TLS to encrypt the connection? Even though that the protocol name is "overHTTP" it literally uses HTTPS securing the connection.


What are you reasons to not enable MAPI over HTTP? Let me know.

Links

 

Enjoy Exchange Server 2016!

 

Read More »
This article was originally posted on April 1st 2018


The latest downloadable build of Exchange Server 2016 Cumulative Update 9 disclosed an information that was previously shown accidently to the public by Greg T. during his breakout session BRK3249 - Modern Authentication for Exchange Server On-Premises at Microsoft Ignite 2017.  

BRK3249 - Modern Authentication for Exchange Server On-Premises

As part of the global harmonization of the product name space of the well established Outlook brand the next release of Exchange Server will be named Outlook Server 2019.

This name change was mentioned originally on this slide:

BRK3249 - Modern Authentication for Exchange Server On-Premises - Leak

 

Give it a thought and you'll realize that this change makes absolute sense as different product names for the same software function distract customers and users. 

  • Outlook
  • Outlook for iOS
  • Outlook for Android
  • Outlook on the web
  • Outlook Server

Another reason for renaming Exchange Server is a new functionality for integrating personal mailbox files (PST). It was and still is a tedious task for administrators to get hold of all those PST files in use by end users. Instead of implementing a complex and data protection safe process to import PST files to the primary users mailbox the new Outlook Server 2019 offers synchronized PST folders. A functionality we've waited for for years.

Two new functions are introduced as part the new modern Outlook Server 2019

  • PST Sync
    Synchronized PST files across DAG member servers
  • Linked PST Files
    New Outlook function to connect to server based PST files advertised by AutoDiscover

How does it work?

  • The  $env:ExchangeInstallPath contains a new folder named PSTSync
    The new folder can be accessed by end users using https://<your OWA FQDN>/PSTSync 
  • Add new subfolder for each user with PST files, assign Owner access to the subfolder and inform the users to upload their PST files using that link
  • The uploaded PST files are automatically renamed andf synchronized between the DAG member servers using PSTSync
  • Exisiting PST files are automatically advertised by AutoDiscover as LinkedPSTFile when queried by a modern Outlook version

The following diagram illustrates the new functionality in a simple Outlook Server 2019 setup:

The new Outlook Server functionality

The following screenshot illustrates the new PSTSync folder and some sample PST file for a user with SAMAccountName JohnDoe

PSTSync Sample for JohnDoe

 

It's good the see that there is a future for a email server product like Exchange Server and that after so many years of cloud only an on-premises only feature got added.

 

Links

 

Enjoy the day and Happy Easter!

 

 

Read More »
On January 5, 2018
0 Comment
525 Views

Sometimes you have the need to download the Offline Addressbook (OAB) for the Outlook email client manually.

When initiating a manual OAB download you might encounter a 0x80200051 error. A common mitigation scenario is to switch between Outlook Online-Mode and Outlook Cached-Mode multiple times. This mitigation scenario does not solve the issue.

OAB Download Error Message (DE)


When you active Outlook Cached-Mode it is required to perform a full OAB download. The OAB download dialogue provides an option to download OAB changes only. This option ist selected by default. To start a full OAB download you must deselect the checkbox.


OAB Download Settings (DE)


Using this download setting you will not encounter the mentioned error and the Offline Addressbook is downloaded by your Outlook email client sucessfully.

Enjoy Outlook!

 

 

Read More »

When you delete a public folder using a legacy Outlook client, you can easily restore the deleted folder and it's content using the Recover Deleted Items function. 

Due to a fancy trick implemented in Outlook 2013 and Outlook 2016 the recovered folder will not be recovered using it's full name.

This phenomenon has been verified with Exchange On-Premises and Exchange Online on the server side and Outlook 2013/2016 and Outlook 365 ProPlus.

The following example uses public folders in Exchange Online and Outlook 365 ProPlus.

Example

In this example I will delete and recover a public folder named My Public Folder.

Public folder hierarchy before deletion

After deletion of My Public Folder and it's content, I need to select the original parent folder and click the Recover Deleted Items button in the button bar.

Select original parent folder

Recover Deleted Items

The Recover Deleted Items dialogue opens and we select the deleted item for recovery. The dialogue displays the original name of the deleted folder.

Recover Deleted Items (DE)

After recovering the deleted folder the folder is recovered with the first character only.

Recovered public folder with first character only

That's an annoying result in regards to customer self-care when users restore deleted items on their own behalf.

But wait, there is a solution available.

Solution

The solution requires today's primary administrative tool available: PowerShell.

Step 1

Get an overview of public folders currently located in the public folder dumpster

Get-PublicFolder –Identity “\NON_IPM_SUBTREE” –Recurse 

Name             Parent Path
----             -----------
NON_IPM_SUBTREE
[...]
My Public Folder \NON_IPM_SUBTREE\DUMPSTER_ROOT\DUMPSTER_EXTEND\RESERVED_1\RESERVED_1\65722859-3...
Sub Folder 1     \NON_IPM_SUBTREE\DUMPSTER_ROOT\DUMPSTER_EXTEND\RESERVED_1\RESERVED_1\65722859-3...
Sub Folder 2     \NON_IPM_SUBTREE\DUMPSTER_ROOT\DUMPSTER_EXTEND\RESERVED_1\RESERVED_1\65722859-3...
[...]

 

Step 2

Export the list of public folders currently located in the public folder dumpster and find the identity of the deleted public folder you want to recover

Get-PublicFolder –Identity “\NON_IPM_SUBTREE” –Recurse  | fl | Out-File D:\TMP\publicfolderdumpster.txt

publicfolderdumpster.txt excerpt:


RunspaceId                     : 6ce9588e-829b-4592-aedc-85f9a2e2c963
Identity                       : \NON_IPM_SUBTREE\DUMPSTER_ROOT\DUMPSTER_EXTEND\RESERVED_1\RESERVED_1\65722859-366a-4e0
                                 9-81fe-ea576ec7a6f7\My Public Folder
Name                           : My Public Folder
MailEnabled                    : False
MailRecipientGuid              : 
ParentPath                     : \NON_IPM_SUBTREE\DUMPSTER_ROOT\DUMPSTER_EXTEND\RESERVED_1\RESERVED_1\65722859-366a-4e0
                                 9-81fe-ea576ec7a6f7

Step 3

Recover the deleted public folder to the correct parent target folder

Set-PublicFolder –Identity "\NON_IPM_SUBTREE\DUMPSTER_ROOT\DUMPSTER_EXTEND\RESERVED_1\RESERVED_1\65722859-366a-4e09-81fe-ea576ec7a6f7\My Public Folder" –Path “\TestFolders” –Verbose

As a result the public folder is recovered with it's original name.

Notes

There are some other things to consider when recovering deleted modern public folders.

Public folders originally located in the hierarchy root are always recovered to the public folder mailbox holding the primary hierarchy. 

Public folders originally located in the hierarchy root will replace the permissions of child public folders when restored. 

More on these default restore behaviours can be read here.

Links

Nevertheless, enjoy modern public folders.

 

 

Read More »

Exchange Server 2013Exchange Server 2016Description

This script imports multiple PST files located in a single directory into a user mailbox or a user mailbox archive. 

Due to some filename limitations of the New-MailboxImportRequest cmdlet in reagards to the UNC path, the PST filenames are sanitized. Any unsupported (unwanted) character is removed. You can modify the replacement function as needed. This might be necessary as the PST filenames can be used as target folder names during import.

Original filenames:

Filenames before renaming

Renamed filenames:

Filenames after renaming

When using the FilenameAsTargetFolder switch each PST file is imported into a separate target folder.

PST filenames used as target folder

After successfully importing a PST file, the PST can optionally be renamed to .imported. This simplifies a re-run of the script in the case that you a lot of PST files for a user or a large number of files as part of archive solution offboarding process.

NOTE:
This script utilizes the GlobalFunctions PowerShell module for logging. Please prepare your system for the use of the GlobalFunctions module first.

Steps performed:

  1. Sanitize PST filenames
  2. Create new mailbox import request
  3. Monitor status of created import request
    1. When still running, continue monitoring status
    2. When successfully finished, save import request statistics report to log file and continue with next PST
    3. Rename the imported PST file to .imported
    4. When aborted, continue with next PST or exit script

Examples

 

Example PowerShell Output

.\Start-MailboxImport.ps1 -Identity JohnDoe -Archive -FilePath "\\ROBERTKWEISS\e$\PSTImport\JohnDoe" -FilenameAsTargetFolder -BadItemLimit 10 -ContinueOnError -SecondsToWait 90
Note: Script will wait 90s between each status check!
Create New-MailboxImportRequest for user: JohnDoe and file: \\ROBERTKWEISS\e$\PSTImport\JohnDoe\Myoldarchive.pst into the archive. Targetfolder:"Myoldarchive".
Waiting for import JohnDoe-Myoldarchive.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive.pst to be completed. Status: InProgress
Waiting for import JohnDoe-Myoldarchive.pst to be completed. Status: InProgress
Waiting for import JohnDoe-Myoldarchive.pst to be completed. Status: InProgress
Import request JohnDoe-Myoldarchive.pst completed successfully.
Import request JohnDoe-Myoldarchive.pst deleted.
Create New-MailboxImportRequest for user: JohnDoe and file: \\ROBERTKWEISS\e$\PSTImport\JohnDoe\Myoldarchive1.pst into the archive. Targetfolder:"Myoldarchive1".
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: InProgress
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: InProgress
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: InProgress
Import request JohnDoe-Myoldarchive1.pst completed successfully.
Import request JohnDoe-Myoldarchive1.pst deleted.
Script finished.

Version History

  • 1.0, Initial community release
  • 1.1, log will now be stored in a subfolder (name equals Identity)
  • 1.2, PST file renaming added
  • 1.3, Module ActiveDirectory removed
  • 1.4, AcceptLargeDatalost would now be added if BadItemLimit is over 51
  • 1.5, Parameter IncludeFodlers added
  • 1.6, Parameter TargetFolder added
  • 1.7, Parameter Recurse added
  • 1.8, PST file rename after successful import added

Links

Last updated: 2017-02-02

Follow me

Additional Note

This Powershell script has been optimized using the ISESteroids™ add-on. Learn more about ISESteroidshere.

 

 

Read More »