Michel de Rooij, with over 25 years of mixed consulting and automation experience with Exchange and related technologies, is a consultant for Rapid Circle. He assists organizations in their journey to and using Microsoft 365, primarily focusing on Exchange and associated technologies and automating processes using PowerShell or Graph. Michel's authorship of several Exchange books and role in the Office 365 for IT Pros author team are a testament to his knowledge. Besides writing for Practical365.com, he maintains a blog on eightwone.com with supporting scripts on GitHub. Michel has been a Microsoft MVP since 2013.
With great honor and joy I can announce that I have been awarded the Microsoft Most Valuable Professional award for the seventh consecutive year, again in the category Office Apps & Services. Congratulations to other new and re-awarded MVPs as well, and kudos to the MVP program in undertaking the monstrous task of reviewing and evaluating thousands of contributions every award cycle.
With another award cycle also comes the time to have a look at the MVP statistics. Below numbers are taken from the public MVP site. July 3rd is chosen as the first days the site gets updated and new awardees need to turn in their NDA before they show up on the site.
Because people can get awarded each month, the comparison to July 3rd of every year indicates only yearly trend. Therefor we’ll also compare the numbers to those of June to see the impact on long-term MVP population, as awardees from January are only up for consideration in July 2021 for example.
From the numbers, it is clear that this cycle the number of MVPs went a bit down from 2.998 in June 2020 to 2.850 now (-5%), but it is higher than the 2.634 (+8%) of July 2019.
The following table contains the changes per award category from July 2019 and June 2020 to July 2020. I will leave the interpretation up to you.
Expertise
July 2019
June 2020
Change
July 2020
Change
Cloud and Datacenter Management
232
242
4%
209
-10%
Microsoft Azure
409
455
11%
463
13%
Office Apps & Services
491
530
8%
512
4%
Business Applications
166
234
41%
240
45%
Data Platform
332
375
13%
358
8%
Developer Technologies
644
742
15%
697
8%
Enterprise Mobility
106
119
12%
113
7%
AI
84
109
30%
122
45%
Office Development
47
60
28%
64
36%
Windows Development
119
123
3%
110
-8%
Windows and Devices for IT
57
55
-4%
43
-25%
Total Awards
2687
3044
13%
2931
9%
Total MVPs
2634
2998
14%
2849
8%
Note: The total number of MVPs doesn’t equal the total number of awardees, as MVPs can be awarded in more than one category; there are now 82 people awarded in multiple categories’; an increase of 57% compared to June 2019.
When zooming in on the Office Apps & Services category, the awards per country are shown below, including change compared to last year. Be advised that 26 OAS MVPs are anonymous or have profiles without information on residency.
Country
Number
Country
Number
Country
Number
Australia
24 (20%)
India
13 (0%)
Saudi Arabia
1 (0%)
Austria
3 (0%)
Ireland
1 (0%)
Serbia
1 (0%)
Belgium
5 (-38%)
Israel
1 (0%)
Singapore
3 (0%)
Bosnia and Herzegovina
1 (0%)
Italy
5 (-17%)
Slovakia
1 (0%)
Brazil
8 (-20%)
Japan
20 (-10%)
Slovenia
2 (0%)
Bulgaria
2 (0%)
Korea
12 (0%)
South Africa
4 (-20%)
Cambodia
1 (100%)
Luxembourg
1 (100%)
Spain
12 (50%)
Canada
33 (6%)
Macedonia, FYRO
2 (0%)
Sri Lanka
1 (0%)
China
17 (6%)
Malaysia
1 (0%)
Sweden
9 (80%)
Colombia
5 (25%)
Mexico
5 (0%)
Switzerland
3 (50%)
Croatia
5 (25%)
Myanmar
1 (100%)
Taiwan
4 (0%)
Czech Republic
2 (0%)
Nepal
1 (0%)
Thailand
2 (-34%)
Denmark
6 (0%)
New Zealand
6 (0%)
The Netherlands
22 (4%)
Egypt
1 (0%)
Nigeria
2 (100%)
Turkey
2 (0%)
El Salvador
1 (0%)
Norway
6 (0%)
Ukraine
2 (0%)
Finland
4 (33%)
Pakistan
1 (-50%)
United Arab Emirates
1 (-50%)
France
18 (-10%)
Poland
6 (50%)
United Kingdom
33 (17%)
Germany
24 (-4%)
Portugal
3 (50%)
United States
123 (2%)
Hungary
2 (0%)
Russia
9 (12%)
Uruguay
1 (0%)
And last, the number of Office Apps & Services and total number of MVP’s over the last years, before and after the award cycle.
June 2017
July 2017
June 2018
July 2018
March 2019
July 2019
June 2020
July 2020
OSS
532
449
490
383
622
491
530
512
-16%
9%
-22%
62%
-21%
8%
-3%
Total
4134
3490
3815
3030
3205
2634
2998
2849
-16%
9%
-21%
6%
-18%
14%
-5%
On a final note, the above data is static; some MVPs have build great dashboards which allow you to work with the data more interactively (if they have updated their data set, that is). Some noteworthy mentions:
Update 22feb2021: Added note about enabling SMTP Authentication.
Not too long ago, the Exchange product group enabled Modern Authentication (or OAuth2) support for IMAP and SMTP in Exchange Online, and shortly after for POP3 as well. This support was much needed with the imminent deactivation of Basic Authentication. With Modern Authentication available, vendors, developers as well as organizations running custom scripts are given time to adopt Modern Authentication where applicable.
By delaying the original end date of Basic Authentication from October 13, 2020 to Q3’ish 2021 due to the Corona situation, the adoption period is increased significantly. That does not mean however developers and organizations can sit back and relax: Act sooner rather than later, the end of Basic Authentication is nigh.
The benefits of Modern Authentication are of course that it is a more secure model (e.g. resistant to password spray attacks), as well that it can leverage Microsoft 365 functionality like Conditional Access to limit protocols to certain locations.
That said, in this article I will show you how to approve usage of a popular 3rd party e-mail application Thunderbird, using IMAP protocol in conjunction with the Modern Authentication scheme. The procedures below have been run against Thunderbird 78.0b4 on Windows as well as Ubuntu.
Third Party Applications Before we move on to Thunderbird, we first make sure the organization settings allow for third party applications to access your mailbox Exchange Online. This process has been blogged about for common popular applications, such as the native iOS Mail app or the Gmail app on Android. So, how to go ahead if your organization restricts access to third party applications, and they only want to allow specific applications, which is of course good practice.
The easiest way to add Thunderbird to the allowed applications and grant consent to the organization, is by constructing an admin consent URL. To construct the consent URL, take the following URL:
Replace <TenantID> with your Tenant ID. This piece of information can be found under the Azure Active Directory blade in the Azure portal.
Replace <AppID> with the Application ID (sometimes also referred to as Client ID) of the application you want to provide consent for. As we can see in the table below, the ID of Thunderbird is 08162f7c-0fd2-4200-a84a-f25a4db0b584.
Application
ID
Thunderbird
08162f7c-0fd2-4200-a84a-f25a4db0b584
Gmail app
2cee05de-2b8f-45a2-8289-2a06ca32c4c8
iOS Accounts (Apple Mail app)
f8d98a96-0999-43f5-8af3-69971c7bb423
Open your browser, and visit this URL as an administrator. You will be greeted with a consent form, in which you will be asked to accept for your organization. Because the redirect_uri is empty here, you will likely be send to a non-existing location after giving consent, but that’s OK.
When you look at the Enterprise Applications blade in the Azure Portal, you will notice the Thunderbird app has been added. Here you can further customize it, like any enterprise application supporting Modern Authentication, e.g.
Restrict access to specific users or groups.
Use Conditional Access to restrict access to certain locations.
Another thing to note is that permissions for Thunderbird app will have been translated to the following Graph permissions:
API
Permission
Type
Microsoft Graph
Read and write access to mailboxes via IMAP.
Delegated
Microsoft Graph
Read and write access to mailboxes via POP.
Delegated
Microsoft Graph
Read and write access to mailboxes via SMTP AUTH.
Delegated
Microsoft Graph
Sign in and read user profile.
Delegated
We should now be ready on the back-end.
Thunderbird Now as an end user, start Thunderbird. Do not start configuring the account yet, as we first need to modify a Thunderbird setting to allow for successful Modern Authentication through a browser popup. Click the ‘hamburger’ menu to open the Options window. Scroll all the way down, and open the Config Editor. Click ‘I Accept the risk’. In the settings overview, set General.UserAgent.CompatMode.Firefox setting to True:
Preference Name
Status
Type
Value
general.useragent.compatMode.firefox
modified
boolean
True
Close the Config Editor and Preferences tab. We can now set up our account in Thunderbird.
Select Add Mail Account, and enter your name and e-mail address. You can leave the password empty, as we will be using an Oauth token which we will retrieve later on. Press Continue to have Thunderbird figure out where your mailbox is hosted. When it properly discovers the mailbox location, it will set the configuration as follows:
If Thunderbird can’t figure out your settings (for some reason the Windows build could, but the Ubuntu build couldn’t), configure them as indicated above. We can’t select OAuth2 for authentication here, so leave Authentication as is; we will correct this right after we click Done.
Note: Configure manually would be the place you expect to set authentication to OAuth2 straight away, but with the build we used, the OAuth2 option is not available from the manual account setup dialog. Therefore, we need to set up the account and correct settings afterwards.
In the Server Settings window related to your account, select OAuth2 authentication:
In the Outgoing Server (SMTP) settings, select Offic365 (Microsoft) – smtp.office365.com, click Edit and set authentication for outbound SMTP to OAuth2 as well. Note: The Thunderbird build running on Ubuntu doesn’t provide the OAuth2 authentication option for SMTP.
When finished, click ‘Get Messages’. The familiar Microsoft 365 authentication browser dialog should show up. After signing in, the next question will be to grant consent to the Thunderbird application to it can access your mailbox data and send e-mail:
Note that this dialog can not be suppressed, as currently only interactive applications are supported. If you are working on an app or script which needs unattended access, please use Graph API.
After the user provides consent, Thunderbird is ready and will start fetching your default folders and mail items. If you want to view additional folders, you need to subscribe to them by right-clicking the account and picking Subscribe. Only folders with mail-items are supported, despite you can select every folder in your mailbox including Calendar or Contacts.
Note: If you encounter problems sending messages, please check the CASMailbox setting SmtpClientAuthenticationDisabled. If it is set to $true, you need to disable it to enable SMTP authentication, e.g.
Logging If you have people in your organization requiring some form of proof that Modern Authentication is being used, you can use the Enterprise Applications / Sign-Ins view from the Azure Active Directory portal.
Alternatively, you can use Thunderbird’s built-in logging capabilities. To accomplish the latter, set the following environment variables before starting Thunderbird:
The Exchange Team released the quarterly Cumulative Updates for Exchange Server 2019 as well as Exchange 2016. Like the previous two Cumulative Updates, these require .NET Framework 4.8.
Apart from fixes as well as security updates included from the previous CU, these update contain the following changes for both builds:
Added additional file types to default OWA Mailbox Policy for Blocked File Extensions. More information in KB4559446.
Added support to Restore-RecoverableItems for easier usage. More details in KB4547707.
Links to the updates as well as a description of changes and fixes are described below.
4559441 Foreign language characters set in RejectMessageReasonText of a transport rule aren’t shown correctly in Exchange Server 2019
4547707 Enable piping for Restore-RecoverableItems in Exchange Server 2019
4549689 HMA EvoSTS certificate rollover causes authentication prompts due to stalled key on worker process spawn (warmup phase) in Exchange Server 2019
4559446 Changes to Outlook on the web blocked file extensions and MIME types in Exchange Server 2019
4559440 Export to a PST for an eDiscovery search fails Exchange Server 2019
4559439 EAS creates failure report if a message with unknown recipients is in Drafts in Exchange Server 2019
4559442 2080 Events caused by empty values in HKLM\SYSTEM\CurrentControlSet\Services\MSExchange ADAccess\Instance0 in Exchange Server 2019
4559438 Edge Transport server hangs in Exchange Server 2019
4559443 Managed Folder Assistant fails with Event ID 9004 NotInBagPropertyErrorException in Exchange Server 2019
4559437 PR_RECIPIENT_ENTRYID is computed if no email address or type in Exchange Server 2019
4559444 Conversion from HTML to RTF removes non-breaking space in Exchange Server 2019
4559436 Attachments with properties (like Azure Information Protection labels) not always matching in Exchange Server 2019
4559435 Introduce an OrganizationConfig flag to enable or disable recipient read session in Exchange Server 2019
Exchange 2016 CU17 fixes:
4559444 Conversion from HTML to RTF removes non-breaking space in Exchange Server 2016
4559435 Introduce an OrganizationConfig flag to enable or disable recipient read session in Exchange Server 2016
4547707 Enable piping for Restore-RecoverableItems in Exchange Server 2019 and 2016
4559436 Attachments with properties (like Azure Information Protection labels) don’t always match in Exchange Server 2016
4559437 PR_RECIPIENT_ENTRYID is computed if no email address or type in Exchange Server 2016
4559438 Edge Transport server hangs in Exchange Server 2016
4559439 EAS creates failure report if a message with unknown recipients is in Drafts in Exchange Server 2016
4559440 Export to a PST for an eDiscovery search fails in Exchange Server 2016
4559441 Foreign language characters set in RejectMessageReasonText of a transport rule aren’t shown correctly in Exchange Server 2016
4559442 2080 Events caused by empty values in HKLM\SYSTEM\CurrentControlSet\Services\MSExchange ADAccess\Instance0 in Exchange Server 2016
4549689 HMA EvoSTS certificate rollover causes authentication prompts due to stalled key on worker process spawn (warmup phase) in Exchange Server 2016
4559443 Managed Folder Assistant fails with Event ID 9004 NotInBagPropertyErrorException in Exchange Server 2016
4559446 Changes to Outlook on the web blocked file extensions and MIME types in Exchange Server 2016
Notes:
These Cumulative Updates do not contain schema changes compared to their previous Cumulative Update.
When upgrading from an n-2 or earlier version of Exchange, or an early version of the .NET Framework, consult Upgrade Paths for CU’s & .NET.
Don’t forget to put the Exchange server in maintenance mode prior to updating. Regardless, setup will put the server in server-wide offline mode post-analysis, before making actual changes.
When using Exchange hybrid deployments or Exchange Online Archiving (EOA), you are required to delay installing at most one version (n-1).
If you want to speed up the update process for systems without internet access, you can follow the procedure described here to disable publisher’s certificate revocation checking.
Cumulative Updates can be installed directly; no need to install RTM prior to installing Cumulative Updates.
Once installed, you can’t uninstall a Cumulative Update nor any of the installed Exchange server roles.
The order of installation shouldn’t matter with the “every server is an island” concept, yet recommended is to upgrade internet-facing, non-internet-facing servers first, followed by Edge Transports.
Caution:
As for any update, I recommend to thoroughly test updates in a test environment prior to implementing them in production. When you lack such facilities, hold out a few days and monitor the comments on the original publication or forums for any issues.
With the emergency to facilitate working from home due to the Corona pandemic, many organizations were faced with a dilemma. When running Exchange 2013 or some even Exchange 2010 on-premises, and a desire to start using Microsoft Teams, organizations were confronted with the following requirements for integrating Microsoft Teams with Exchange on-premises (source):
Users with mailboxes hosted on-premises must be synchronized to Azure Active Directory.
Running Exchange 2016 Cumulative Update 3 or later on-premises.
OAuth needs to be configured (via Hybrid Configuration Wizard, or manual as MVP fellow Jaap blogged about here).
Recently, an additional requirement was added to explain that for delegates to schedule calendar meetings on behalf of another person, some additional steps are required (steps 2-3 mentioned here).
Now as you might know, Exchange 2010 does not support OAuth authentication. But, by putting Exchange 2016 in front of Exchange 2010, Exchange 2016 can be used for dealing with OAuth authentication, as well as dealing with client traffic as it can down-level proxy to Exchange 2010 for mailboxes hosted on those servers. Looking at these requirements, organizations might conclude that putting Exchange 2016 CU3 in front of their Exchange environment, and configuring OAuth would suffice the requirement to integrate Teams with their Exchange on-premises environment.
Alas, the additional requirement for full Teams integration is that the mailbox server hosting the mailbox should support REST API. Teams leverages Graph REST API calls to interact with mailboxes. In an Hybrid Exchange setup, on-premises mailboxes are identified, and related REST API calls will be directed at the on-premises REST endpoint, landing on your Exchange environment. The requirement for REST API support is something which is not explicitly stated in the Teams integration article, despite my earlier pull request.
It is however stated implicitly in an article on REST support in Hybrid Exchange or the original publication on REST API support in Exchange 2016 CU3 by the Exchange PG, two articles which you might easily have missed or forgotten about. Either way, it states that “All on-premises mailboxes that will use the REST APIs must be located on databases located on Exchange 2016 CU3 servers”.
Thus, with REST API support only being available per Exchange 2016 CU3, Teams will not fully integrate with mailboxes hosted on earlier versions of Exchange. Exchange 2016 can be used to offload OAuth when your mailbox is still on Exchange 2010 (which works fine for Exchange Web Services for Free/Busy, for example), but Exchange 2010 does not support REST API, and thus will never understand those ‘weird’ (proxied) requests landing on /api virtual directory, typical of REST API calls. Consequently, you will see AutodiscoverV2 and REST API calls greeted with a 404:
Typically, first thing users usually will notice missing is the Calendar integration:
Knowing this, the assumption could be that this combination doesn’t work at all, but as often the truth lies somewhere in the middle. You can use Teams when mailboxes are still hosted on pre-Exchange 2016 CU3, if you can live with the limitations. Below I have included a short overview of these, or other noteworthy items. The information is complementary to the How Exchange and Teams interact article. I hope it may help in discussions on what works and what doesn’t.
Disclaimer: Validated with mailbox hosted on Exchange 2010 with Exchange 2016 in front, OAuth and SkypeOnline AppId configured, and using Outlook 2016 C2R. Information may be subject to change. The list may not be conclusive; if you have any additional observations, please leave them in the comments.
Actions
Works
Comment
Create & View Meetings in Teams
No
No Calendar integration as this requires Outlook Calendar REST API. Visual clue is absence of the Calendar button.
Modify User Photo in Teams (client)
No
Doesn’t work when mailbox is hosted in Exchange on-premises.
Call History
Yes
History propagates to mailboxes hosted in Exchange on-premises in ‘Teams Calls’ folder.
Access Outlook Contacts
No
Works only with Exchange Online mailboxes.
Voicemail
Yes
May use & receive voice-mail, but can’t play from Teams.
Free/Busy status
Yes
Uses EWS.
Create & View/Update Teams Meetings from Outlook
Yes
Using default Teams Meeting add-in.
Create Teams Meetings from Outlook as Delegate
No
Teams Scheduler uses AutodiscoverV2 to discover delegate EWS endpoint, and fails. Outlook will display “Sorry, but we can’t connect to the server right now. Please try again later.”
View/Update Teams Meetings from Outlook as Delegate
Yes
EWS is used to fetch and update the calendar item.
MailTips in Teams
No
MailTips like Out of Office are not shown in Teams. MailTips work for Exchange 2016 CU3+.
Create & View Channel Meetings in Teams
No
Doesn’t work when mailbox is hosted in Exchange on-premises.
Share to Teams
No
Doesn’t work when mailbox is hosted in Exchange on-premises.
Of course, the better experience is to be had when your mailbox is hosted on Exchange 2016 CU3 or later (including Exchange 2019), or best when you simply host them in Exchange Online. However, given the circumstances and pressure from the organization to use Teams, that route might not be an option for everyone. Organizations may look at substantial investments in time and resources. In those cases, it might be good to know of alternative less preferable scenarios, and more important, any possible limitations you might encounter when taking a shortcut.
The Exchange Team released the quarterly Cumulative Updates for Exchange Server 2019 as well as Exchange 2016. Like the previous Cumulative Updates, these require .NET Framework 4.8. Apart from fixes as well as security updates included from the previous CU, these update contain the following changes for Exchange 2019 CU5:
Updated Exchange calculator (v10.4).
Fixes an issue with Manage-MetaCacheDatabase.ps1 to configure MCDB.
Fixes partial word searches when using Outlook in online mode.
Links to the updates as well as a description of changes and fixes are described below.
4552472 Exchange Server 2019 Sizing Calculator version 10.4 is available
4536552 Export-ModernPublicFolderStatistics.ps1 is not working in Exchange Server 2019
4538303 Exchange 2019 Setup Prerequisite Check fails for .NET 4.8 Framework in CU4 on Windows builds 1909 and 1903
4547705 Authentication loop between msft.sts.microsoft.com/adfs and OWA in Exchange Server 2019
4547706 Birthday isn’t correctly synced to iOS native mail app in Exchange Server 2019
4547708 Elevation of privileges possible when Active Directory permissions role is granted in Exchange Server 2019
4547709 InternetWebProxyBypassList is ignored by Mailbox Replication service in Exchange Server 2019
4547710 New-MailboxSearch with In-Place Hold enabled replaces all values in msExchUserHoldPolicies if adding a value in Exchange Server 2019
4547711 Public folder permissions aren’t applied from Outlook in Exchange Server 2019 hybrid environment
4547712 Outlook on the web (OWA) exposes junk operations even if disabled via OwaMailboxPolicy in Exchange Server 2019
4547713 IsOnlineMeeting is always false for Teams-only meetings in Exchange Server 2019
4547714 Can’t add remote shared mailbox using ECP into distribution group in Exchange Server 2019 hybrid environment
4547715 New created search folder retention policy is changed in Exchange Server 2019
4547719 MCDB status is “Offline” and SSDs are not formatted in Exchange Server 2019
4547720 Partial word searches not working for mailboxes in Outlook online mode in Exchange Server 2019
4547721 Exchange Sizing Calculator still supports mail.que database over 2 TB in Exchange Server 2019
4547722 Can’t go from Office 365 to Enterprise in Exchange Server 2019 Exchange admin center (EAC) if Chrome SameSite Cookie is enabled
4547723 Can’t sign in to Office 365 if configuring hybrid with Chrome SameSite Cookie enabled in Exchange Server 2019
4536987 Description of the security update for Microsoft Exchange Server 2019: February 11, 2020
Exchange 2016 CU16 fixes:
4547705 Authentication loop between msft.sts.microsoft.com/adfs and OWA in Exchange Server 2016
4547706 Birthday isn’t correctly synced to iOS native mail app in Exchange Server 2016
4547708 Elevation of privileges possible when Active Directory permissions role is granted in Exchange Server 2016
4547709 InternetWebProxyBypassList is ignored by Mailbox Replication service in Exchange Server 2016
4547710 New-MailboxSearch with In-Place Hold enabled replaces all values in msExchUserHoldPolicies if adding a value in Exchange Server 2016
4547711 Public folder permissions aren’t applied from Outlook in Exchange Server 2016 hybrid environment
4547712 Outlook on the web (OWA) exposes junk operations even if disabled via OwaMailboxPolicy in Exchange Server 2016
4547713 IsOnlineMeeting is always false for Teams-only meetings in Exchange Server 2016
4547714 Can’t add remote shared mailbox by using ECP into distribution group in Exchange Server 2016 hybrid environment
4547715 New created search folder retention policy is changed in Exchange Server 2016
4547722 Can’t go from Office 365 to Enterprise in Exchange Server 2016 Exchange admin center (EAC) if Chrome SameSite Cookie is enabled
4547723 Can’t sign in to Office 365 if configuring hybrid with Chrome SameSite Cookie enabled in Exchange Server 2016
4547716 Event ID 1325 and Test-ExchangeSearch crashes application pool with NullReferenceException in Exchange Server 2016
4536987 Description of the security update for Microsoft Exchange Server 2016: February 11, 2020
Notes:
These Cumulative Updates do not contain schema changes compared to their previous Cumulative Update.
When upgrading from an n-2 or earlier version of Exchange, or an early version of the .NET Framework, consult Upgrade Paths for CU’s & .NET.
Don’t forget to put the Exchange server in maintenance mode prior to updating. Regardless, setup will put the server in server-wide offline mode post-analysis, before making actual changes.
When using Exchange hybrid deployments or Exchange Online Archiving (EOA), you are required to delay installing at most one version (n-1).
If you want to speed up the update process for systems without internet access, you can follow the procedure described here to disable publisher’s certificate revocation checking.
Cumulative Updates can be installed directly; no need to install RTM prior to installing Cumulative Updates.
Once installed, you can’t uninstall a Cumulative Update nor any of the installed Exchange server roles.
The order of installation shouldn’t matter with the “every server is an island” concept, yet recommended is to upgrade internet-facing, non-internet-facing servers first, followed by Edge Transports.
Caution:
As for any update, I recommend to thoroughly test updates in a test environment prior to implementing them in production. When you lack such facilities, hold out a few days and monitor the comments on the original publication or forums for any issues.