Exchange email adress policies are used to generate addresses since the early days of Exchange. Email address policies are used to automatically generate addresses for various protocols (SMTP, FAX, CCMAIL, MSMAIL). These overall use of address policies is well documented, but there is still some odd behaviour of the policies when it comes to language specific character handling.
The following list describes the common parameters:
All language specific characters and other non RFC 821/822 compliant characters are either translated or removed.
User without any language specific characters
Given Name: John Last Name : Doe Alias : JohnDoe
Email address policy results
%g.%s@mcsmemail.de = John.Doe@mcsmemail.de %m@mcsmemail.de = JohnDoe@mcsmemail.de %1g_%s@mcsmemail.de = J_Doe@mcsmemail.de
User with German language specific characters
Given Name: Michael Last Name : Müller Alias : Michael Mueller
%g.%s@mcsmemail.de = Michael.Mueller@mcsmemail.de %m@mcsmemail.de = Michael-Mueller@mcsmemail.de %2g%s@mcsmemail.de = MiMueller@mcsmemail.de
User with Scottish language specific characters
Given Name: Ian Last Name : O'Connell Alias : IanOConnell
%g.%s@mcsmemail.de = Ian.O'Connell@mcsmemail.de %m@mcsmemail.de = IanOConnell@mcsmemail.de %3g%5s@mcsmemail.de = IanO'Con@mcsmemail.de
As you might have noticed, the apostrophe is not handled as a special character but an RFC compliant character. The address policy is applied without any issues at all.
But a SMTP address containing an apostrophe leads to email transport errors and must be removed.
You can use the replacement parameter to strip all apostrophes from the surname by using the following email address policy.
%g.%r''%s@mcsmemail.de = Ian.OConnell@mcsmemail.de
This example will only remove apostrophes from the surname (%s) as the replacement parameter is placed in front of the surname parameter.
When migrating Html content from a CMS database or other sources you might find the Html as an Html encoded string.
Example:
<p><strong>Some Text</strong></p>
But you want to have the string look like this:
<p><strong>Some Text</strong></p>
The following script is a simple PowerShell script to convert an exisiting file containing the Html encoded text and save the decoded string to a new output file.
param( [string]$InputFile, [string]$OutputFile ) Add-Type -AssemblyName System.Web Write-Output "Fetching $($InputFile)" $fileContent = Get-Content $InputFile Write-Output "Converting" [System.Web.HttpUtility]::HtmlDecode($fileContent) | Out-File -FilePath $OutputFile -Encoding utf8 -Force
.\Convert-ToHtml.ps1 -InputFile '.\InputFile.txt' -OutputFile '.\Output.html'
Enjoy!
You might encounter EventId 106 errors on Exchange 2013/2016 servers.
There are some article available on how to fix this issue on servers having a full installationof Exchange Server 2013/2016.
But you might encounter this error on servers having the Exchange 2013/2016 Management Tools installed only as well. In this case the solutions described will not work as expected.
Running the New-PerfCounters cmdlet requires the Microsoft.Exchange.Management.PowerShell.Setup PowerShell snapin. This PowerShell snapin cannot be loaded on servers having the Exchange Management Tools installed.
Add-PsSnapin : The Windows PowerShell snap-in 'Microsoft.Exchange.Management.PowerShell.Setup' is not installed on this computer. At line:1 char:1 + Add-PsSnapin Microsoft.Exchange.Management.PowerShell.Setup + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (Microsoft.Excha...owerShell.Setup:String) [Add-PSSnapin], PSArgumentEx ception + FullyQualifiedErrorId : AddPSSnapInRead,Microsoft.PowerShell.Commands.AddPSSnapinCommand
The required code library is available on servers having the Exchange Management Tools installed. But the library is not added to the registry by default.
Registry of a server running Exchange Management Tools only:
Registry of a fully installed Exchange Server:
Just export the registry key Microsoft.Exchange.Management.PowerShell.Setup from an Exchange Server, fix Exchange file paths (if required) and import the regiytry file on the server having the Exchange Management Tools installed.
Example registry file:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellSnapIns\Microsoft.Exchange.Management.PowerShell.Setup] "CustomPSSnapInType"="Microsoft.Exchange.Management.PowerShell.SetupPSSnapIn" "ApplicationBase"="D:\\Program Files\\Microsoft\\Exchange Server\\V15\\bin" "AssemblyName"="Microsoft.Exchange.PowerShell.Configuration, Version=15.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" "Description"="Setup Tasks for the Exchange Server" "ModuleName"="D:\\Program Files\\Microsoft\\Exchange Server\\V15\\bin\\Microsoft.Exchange.PowerShell.configuration.dll" "PowerShellVersion"="1.0" "Vendor"="Microsoft" "Version"="15.0.0.0"
After adding the registry key, you can successfully fix the performance counter issue.
Add-PsSnapin Microsoft.Exchange.Management.PowerShell.Setup New-PerfCounters -DefinitionFileName "$exinstall\setup\perf\WorkerTaskFrameworkPerfCounters.xml”
In some scenarions the current Exchange cumulative updates (Exchange 2013 CU14, Exchange 2016 CU3) resulted in failed and corrupted search indices.
In Exchange Server 2013 the failed search service resulted in the following event log message:
Watson report about to be sent for process id: 28160, with parameters: E12IIS, c-RTL-AMD64, 15.00.1236.003, M.E.Search.Service, M.E.Data.Directory, M.E.D.D.ScopeSet.GetOrgWideDefaultScopeSet, System.ArgumentNullException, 301, 15.00.1236.000. ErrorReportingEnabled: False
A community post states that there won't be an interim hotfix.
But at least the issue has been found and will be fixed with the next cumulative updates for Exchange Server 2013 and Exchange Server 2016.