Praveen

Praveen

Couple of weeks back, I was in preparation for a small script which would help me in import the user thumbnail into Active Directory. Fortunately, I received an email showcasing about one such free product from Exclaimer “Exclaimer Outlook Photos”. This software is Simply Superb, and I confidently can say that you never need to look for any other tool to manage your outlook photos.

Exclaimer Outlook Photos lets you import photos into the Active Directory to give everyone a photo portrait in the Outlook People Pane, their SharePoint profile and on Microsoft Lync. The software is a complete package with immense range of GUI Management features such as view, import, edit etc.

Highlight:

Outlook Photos is completely free. You get full functionality the moment you download: no license keys or no paid set-up. There is also no need to install it on your Domain Controller or Exchange server.

Plus, with Outlook Photos, you get all the additional benefits you would expect from choosing a solution from one of the world's leading email utility companies.

Batch-import

Don’t worry about learning Active Directory or PowerShell commands and go straight to importing, editing and storing photos in Active Directory. Batch-import feature allows importing multiple photos at once by selecting the folder or drive with your photos and migrate them all in a single click. It auto-matches pictures to names or other data in the Active Directory e.g. matching the user 'Karen Green' with her photo in 'KarenGreen.jpg' so you don't have to.

Crop and Resize Photos

The major worry to me was to tackle the size and resolution of the photo. With this excellent tool, the photos are automatically cropped and adjusted if they are not the right size. Following snapshot shows the mouse over address book popup in outlook.

In addition, this software helps you to,

- Review the photos users already have and decide whether to replace them.

- Let your customers, clients and corporate partners see your photo portrait too.

- Wherever the user is, if they’re in your domain, you can control their photos.

- Trusted by administrators all over the world in some of the largest and smallest organizations.

Integrate the software with Exclaimer’s award-winning Signature Manager range, if you already have them.

Download Now

Additional Benefits are,

Free software: Exclaimer Outlook Photos is completely free. You get full functionality the moment you download: no license keys, no paid set-up and automatic updates.

Install anywhere: Downloading software that gets tacked onto valuable IT utilities can be a pain. We make sure that this is not an issue as there is no need to install it on your Domain Controller or Exchange server. No matter where you are, if you are logged in as a domain admin, you can update the Active Directory photos easily.

No need to make changes: It is simply an import tool, so you don’t need to make any adjustments to Exchange, Outlook or any of your resources. The software doesn’t modify or jeopardize any of the tools that you rely on.

The software was even voted the ‘Best Outlook Add-On’ in the MSExchange.org Readers’ Choice Awards the first year it was nominated.

I strongly make use of this wonderful tool. Why to wait, get your hand dirty with Exclaimer Outlook Photos, and share your experience!!!

Download Now

-Praveen

In my previous post, I have shared a script to Monitor Enterprise Vault Partition Growth / Size. If you are using that, it will be easy for you to understand this script as well. As you are aware, many of us run the pre and post backup script to make the EV servers ready for backup mode and release it. These scripts are normally scheduled or ran by the backup software. Regardless of the way it ran, the script provide a little information to the administrators about the status of store and index backup mode status.

This script is written to capture the backup mode status of all available store and Index location. You may schedule this script to run at a specified time, and verify the status at a glance and thus avoid regular check by logging into the EV server/Console.

Note - The Enterprise Vault scripts will only run on x86 powershell version. This limitation is because the commands from EV are not designed to work in 64 bit version of powershell. Ensure you run the script in x86 powershell.

Download the Script Here

The Full Script:

Import-Module "C:\Program Files (x86)\Enterprise Vault\Symantec.EnterpriseVault.PowerShell.AdminAPI.dll"

Import-Module "C:\Program Files (x86)\Enterprise Vault\Symantec.EnterpriseVault.PowerShell.Core.dll"

Import-Module "C:\Program Files (x86)\Enterprise Vault\Symantec.EnterpriseVault.PowerShell.IMAP.dll"

Import-Module "C:\Program Files (x86)\Enterprise Vault\Symantec.EnterpriseVault.PowerShell.Monitoring.dll"

$BkpFile = "C:\Scripts\HTML\Backup_Mode.htm" #Change the Value

$serverlist = (Get-EVComputers | select ComputerNameAlternate).ComputerNameAlternate

$evsite = (Get-EVSite | select Name).Name

$ModeValue = "False"

$date = ( Get-Date ).ToString('yyyy/MM/dd - hh:mm')

$smtphost = "yourSMTP_Server" #Change the Value

$from = "This email address is being protected from spambots. You need JavaScript enabled to view it." #Change the Value

$to = "This email address is being protected from spambots. You need JavaScript enabled to view it." #Change the Value

New-Item -ItemType file $BkpFile -Force

Function writeHtmlHeader

{

       param($fileName)

       Add-Content $fileName "<html>"

       Add-Content $fileName "<head>"

       Add-Content $fileName "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>"

       Add-Content $fileName '<title>Enterprise Vault MSMQ Monitor</title>'

       add-content $fileName '<STYLE TYPE="text/css">'

       add-content $fileName "<!--"

       add-content $fileName "td {"

       add-content $fileName "font-family: Tahoma;"

       add-content $fileName "font-size: 11px;"

       add-content $fileName "border-top: 1px solid #999999;"

       add-content $fileName "border-right: 1px solid #999999;"

       add-content $fileName "border-bottom: 1px solid #999999;"

       add-content $fileName "border-left: 1px solid #999999;"

       add-content $fileName "padding-top: 0px;"

       add-content $fileName "padding-right: 0px;"

       add-content $fileName "padding-bottom: 0px;"

       add-content $fileName "padding-left: 0px;"

       add-content $fileName "}"

       add-content $fileName "body {"

       add-content $fileName "margin-left: 5px;"

       add-content $fileName "margin-top: 5px;"

       add-content $fileName "margin-right: 0px;"

       add-content $fileName "margin-bottom: 10px;"

       add-content $fileName ""

       add-content $fileName "table {"

       add-content $fileName "border: thin solid #000000;"

       add-content $fileName "}"

       add-content $fileName "-->"

       add-content $fileName "</style>"

       Add-Content $fileName "</head>"

       Add-Content $fileName "<body>"

}

Function writeTableMemHeader

{

       param($fileName)

       Add-Content $fileName "<tr bgcolor=#B0AE5B>"

       Add-Content $fileName "<td width='10%' align='center'>Server/Site Name</td>"

       Add-Content $fileName "<td width='30%' align='center'>Index Location</td>"

       Add-Content $fileName "<td width='15%' align='center'>Backup Mode Status</td>"

       Add-Content $fileName "</tr>"

}

Function writeTableMemHeader2

{

       param($fileName)

       Add-Content $fileName "<tr bgcolor=#B0AE5B>"

       Add-Content $fileName "<td width='10%' align='center'>Server/Site Name</td>"

   Add-Content $fileName "<td width='30%' align='center'>Vault Store</td>"

   Add-Content $fileName "<td width='15%' align='center'>Backup Mode Status</td>"

       Add-Content $fileName "</tr>"

}

Function writeHtmlFooter

{

       param($fileName)

   Add-Content $fileName "</body>"

   Add-Content $fileName "<br/><br/>"

       Add-Content $fileName "</html>"

}

Function writememInfo

{

       param($fileName,$server, $IndexPath, $bkpmode)

      

       Add-Content $fileName "<tr>"

       Add-Content $fileName "<td>$server</td><td>$IndexPath</td>"

       If ("$bkpmode" -eq "False")

       {

              Add-Content $fileName "<td bgcolor='#086105' align=center>OFF</td>"

       }

       Else

       {

              Add-Content $fileName "<td bgcolor='#FF6B17' align=center>ON</td>"

       }            

       Add-Content $fileName "</tr>"

}

writeHtmlHeader $BkpFile

   add-content $BkpFile "<table width='55%'>"

       add-content $BkpFile "<tr bgcolor='#CCCCCC'>"

       add-content $BkpFile "<td colspan='3' height='25' align='center'>"

       add-content $BkpFile "<font face='tahoma' color='#003399' size='4'><strong>Enterprise Vault Backup Mode Monitor - $date</strong></font>"

       add-content $BkpFile "</td>"

       add-content $BkpFile "</tr>"

       add-content $BkpFile "</table>"

foreach ($server in $evsite)

{

       Add-Content $BkpFile "<table width='55%'><tbody>"

       Add-Content $BkpFile "<tr bgcolor='#CCCCCC'>"

       Add-Content $BkpFile "<td width='55%' align='center' colSpan=3><font face='tahoma' color='#003399' size='2'><strong> $server </strong></font></td>"

       Add-Content $BkpFile "</tr>"

       writeTableMemHeader $BkpFile

       $indexs = Get-IndexLocationBackupMode $server -EVSiteName archival | select-object indexrootpath, backupmode

       foreach ($index in $indexs) {

              $IndexPath = $index.IndexRootPath

              $bkpmode = $index.BackupMode

      

       writememInfo $BkpFile $server $IndexPath $bkpmode

       }

       #Add-Content $BkpFile "</table>"

  

   writeTableMemHeader2 $BkpFile

   $stores = Get-VaultStoreBackupMode -EVServerName $server -Name archival -EvObjectType Site | select-object VaultStoreName, BackupMode

       foreach ($store in $stores) {

              $storename = $store.VaultStoreName

              $bkpmode = $store.BackupMode            

      

       writememInfo $BkpFile $server $storename $bkpmode

       }

   Add-Content $BkpFile "</table>"

}

Writehtmlfooter $BkpFile

#Sending Email

   $subject = "Attention: Enterprise Vault HEALH CHECK REPORT"

   $body = Get-Content $BkpFile

   $smtp= New-Object System.Net.Mail.SmtpClient $smtphost

   $msg = New-Object System.Net.Mail.MailMessage $from, $to, $subject, $body

   $msg.isBodyhtml = $true

   $smtp.send($msg)

   # --------- Script Ends ----------------

Download the Script Here

Share your experience!

-Praveen

Enterprise Vault, one of the widely used/accepted solution for Email and File Archiving. The solution has improved drastically in version 11. However, it lack control in many area such as monitoring, partition size monitoring etc.

This script will help you to extract the existing size of all open partitions across all Enterprise Vault Servers. The script is tested on Enterprise Vault Ver 11.0. Download the complete script do few modification to work with your infra.

Note - The Enterprise Vault scripts will only run on x86 powershell version. This limitation is because the commands from EV are not designed to work in 64 bit version of powershell. Ensure you run the script in x86 powershell.

Download the Script Here

The Full Script:

Import-Module "C:\Program Files (x86)\Enterprise Vault\Symantec.EnterpriseVault.PowerShell.AdminAPI.dll"

Import-Module "C:\Program Files (x86)\Enterprise Vault\Symantec.EnterpriseVault.PowerShell.Core.dll"

Import-Module "C:\Program Files (x86)\Enterprise Vault\Symantec.EnterpriseVault.PowerShell.IMAP.dll"

Import-Module "C:\Program Files (x86)\Enterprise Vault\Symantec.EnterpriseVault.PowerShell.Monitoring.dll"

$PartitionSize = "C:\Scripts\HTML\Partition_Size.htm" #Update the path you wish to save the HTML output

$serverlist = (Get-EVComputers | select ComputerNameAlternate).ComputerNameAlternate

$evsite = (Get-EVSite | select Name).Name

$ModeValue = "False"

$date = ( Get-Date ).ToString('yyyy/MM/dd - hh:mm')

#Update with your infra details (Only if you wish to receive email notification)

$smtphost = "smtp.yourdomain.local"

$from = "This email address is being protected from spambots. You need JavaScript enabled to view it."

$to = "This email address is being protected from spambots. You need JavaScript enabled to view it."

 

New-Item -ItemType file $PartitionSize -Force

 

Function writeHtmlHeader 

{ 

       param($fileName) 

       Add-Content $fileName "<html>"

       Add-Content $fileName "<head>"

       Add-Content $fileName "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>"

       Add-Content $fileName '<title>Enterprise Vault MSMQ Monitor</title>'

       add-content $fileName '<STYLE TYPE="text/css">'

       add-content $fileName  "<!--"

       add-content $fileName  "td {"

       add-content $fileName  "font-family: Tahoma;"

       add-content $fileName  "font-size: 11px;"

       add-content $fileName  "border-top: 1px solid #999999;"

       add-content $fileName  "border-right: 1px solid #999999;"

       add-content $fileName  "border-bottom: 1px solid #999999;"

       add-content $fileName  "border-left: 1px solid #999999;"

       add-content $fileName  "padding-top: 0px;"

       add-content $fileName  "padding-right: 0px;"

       add-content $fileName  "padding-bottom: 0px;"

       add-content $fileName  "padding-left: 0px;"

       add-content $fileName  "}"

       add-content $fileName  "body {"

       add-content $fileName  "margin-left: 5px;"

       add-content $fileName  "margin-top: 5px;"

       add-content $fileName  "margin-right: 0px;"

       add-content $fileName  "margin-bottom: 10px;"

       add-content $fileName  ""

       add-content $fileName  "table {"

       add-content $fileName  "border: thin solid #000000;"

       add-content $fileName  "}"

       add-content $fileName  "-->"

       add-content $fileName  "</style>"

       Add-Content $fileName "</head>"

       Add-Content $fileName "<body>"

} 

 

Function writeHtmlFooter 

{ 

       param($fileName)

    Add-Content $fileName "</body>"

    Add-Content $fileName "<br/><br/>"

       Add-Content $fileName "</html>"

} 

 

 

Function writeTableMemHeader 

{ 

 

       param($fileName) 

       Add-Content $fileName "<tr bgcolor=#B0AE5B>"

       Add-Content $fileName "<td width='10%' align='center'>Server Name</td>"

       Add-Content $fileName "<td width='30%' align='center'>Folder Path</td>"

       Add-Content $fileName "<td width='15%' align='center'>Size in GB</td>"

       Add-Content $fileName "</tr>"

} 

 

 writeHtmlHeader $PartitionSize

 

       add-content $PartitionSize  "<table width='55%'>"

       add-content $PartitionSize  "<tr bgcolor='#CCCCCC'>"

       add-content $PartitionSize  "<td colspan='3' height='25' align='center'>"

       add-content $PartitionSize  "<font face='tahoma' color='#003399' size='4'><strong>Enterprise Vault Store Open Partition Size Monitor - $date</strong></font>"

       add-content $PartitionSize  "</td>"

       add-content $PartitionSize  "</tr>"

       add-content $PartitionSize  "</table>"

 

Function writememInfo 

{ 

       param($fileName,$server, $FolderName, $Size)

      

       Add-Content $fileName "<tr>"

       Add-Content $fileName "<td>$server</td><td>$FolderName</td>"

       If ("$Size" -gt "100")

       {

              Add-Content $fileName "<td bgcolor='#086105' align=center>$Size</td>"

       }

       Else

       {

              Add-Content $fileName "<td bgcolor='#FF6B17' align=center>$Size</td>"

       }            

       Add-Content $fileName "</tr>"

}

 

Function AddObject {

       Param ($FileObject, $FolderRef)

       $Size = [double]($FSO.GetFolder($FileObject.FullName).Size)

       $Script:TotSize += $Size

       If ($Size)

       {      $SizeInGB = CalculateSize $Size

       }

       Else

       {      $SizeInGB = "0.00"

        $Size = 0

       }

       $Script:Report += New-Object PSObject -Property @{

              'Folder Name' = $FileObject.FullName

              Size = $SizeInGB

       }

 writememInfo $PartitionSize $server $Folder $Report.Size

}

 

Function CalculateSize {

       Param ([double]$Size)

       If ($Size -gt 10000)

       {      $ReturnSize = "{0:N2}" -f ($Size / 1GB)

       }

       Else

       {      $ReturnSize = .01

       }

       Return $ReturnSize

}

 

    Add-Content $PartitionSize "<table width='55%'><tbody>"

       Add-Content $PartitionSize "<tr bgcolor='#CCCCCC'>"

       Add-Content $PartitionSize "<td width='55%' align='center' colSpan=3><font face='tahoma' color='#003399' size='2'><strong> $evsite </strong></font></td>"

       Add-Content $PartitionSize "</tr>"

    writeTableMemHeader $PartitionSize

 

foreach($server in $serverlist)

{

    $localhost = Get-content env:computername

    if ($server -ne $localhost)

    {

        $FolderList = Invoke-Command -ComputerName $server -ScriptBlock {

        Import-Module "C:\Program Files (x86)\Enterprise Vault\Symantec.EnterpriseVault.PowerShell.Core.dll"

        Get-EVVaultStorePartition | Where {$_.Status -eq "Open"}

    }

    $FolderList = $FolderList.Location

}

else

{

    $FolderList = Get-EVVaultStorePartition | Where {$_.Status -eq "Open"}

    $FolderList = $FolderList.Location

}

foreach($Folder in $FolderList)

{

    $Report = @()

    $TotSize = 0

    $FSO = New-Object -ComObject Scripting.FileSystemObject

    $UNCFolder = $Folder.Replace(':','$')

    $UNCFolder = "\\" + $server+ "\" + $UNCFolder

    $DirPath = Get-Item -Path $UNCFolder

    AddObject $DirPath $Folder

}

}

 

writeHtmlFooter $PartitionSize

 

 

#Sending Email

 

   $subject = "Attention: Enterprise Vault HEALH CHECK REPORT"

   $body =  Get-Content $PartitionSize

   $smtp= New-Object System.Net.Mail.SmtpClient $smtphost

   $msg = New-Object System.Net.Mail.MailMessage $from, $to, $subject, $body

   $msg.isBodyhtml = $true

   $smtp.send($msg)

Download the Script Here

Share your experience!

Note - Test before you apply on production server.

-Praveen

Event ID 15021, HTTPEvent Error An error occurred while using SSL configuration for endpoint 0.0.0.0:444 – Exchange Server 2013

Error Decription:

An error occurred while using SSL configuration for endpoint 0.0.0.0:444. The error status code is contained within the returned data.

You will find the multiple events are thrown every minute with similar description.

This is a common error I observed in Exchange Server 2013. You will observe the all or few of the following,

1. Exchange Administration Center (EAC) returns blank page
2. The OWA allows login, but returns blank similar to EAC result
3. Outlook or any other Exchange Clients will fail to connect.
4. Exchange Management Shell Fails to connect.

This happens, I suppose, due to the usage of non-existed certificate. I have verified the ID of the certificate in question with the available certificate in my SSL store, however I did not find the one which was assigned to 0.0.0.0:444.

How to Fix:

1. View the certificate binding, and identify and delete the certificate assigned to IP:Port
2.  Assing (Add) a valid certificate to it which is used by IP:Port 127.0.0.1:443.

Procedure:

Open Command Prompt (because EMS is broken)

1. Run “netsh http show sslcert

    Note down the Certificate Hash and Application ID of the certificate assigned to IP:Port 127.0.0.1:443.

2.  Run the below command to delete certificate assigned for IP:Port 0.0.0.0:444

    netsh http delete sslcert ipport=0.0.0.0:444

3. Run the below command to add the noted certificate to ipport=0.0.0.0:444

    netsh http add sslcert ipport=0.0.0.0:444 certhash=1234ed434 appid="{1010101010}"

    Note – replace the certhash and appid with the value noted earlier.

Wait for a while, and you will no longer observe the error events in the Event log and the Exchange will start functioning as normal. It is recommended to take a restart of the server post these changes.

 

-Praveen

 

The previously reported issue with Cumulative Update 6 (CU6) for Microsoft Exchange Server 2013, that you cannot manage Exchange Online mailboxes by using Exchange Admin Center (EAC) from an on-premises server. This issue has been addressed by Microsoft in lightning response, the following script will help you to fix this issue.

Download: Exchange Online mailboxes cannot be managed in Exchange Server 2013 CU6

To know more about the issue, please see Exchange Online mailboxes cannot be managed by using EAC after you deploy Exchange Server 2013 CU6

-Praveen

Microsoft Exchange team is announcing the availability of Update Rollup and Cumulative Updates for Exchange Server 2007 SP3, Exchange Server 2010 SP3 and Exchange Server 2013.

Each of the following links will lead you to the respective pages for more detail and download.

Exchange Server 2007 SP3

More Info Link:- Update Rollup 14 for Exchange Server 2007 Service Pack 3

Download Link - Update Rollup 14 for Exchange Server 2007 Service Pack 3 (KB2936861)

Exchange Server 2010 SP3

More Info Link:- Update Rollup 7 for Exchange Server 2010 Service Pack 3

Download Link:- Update Rollup 7 For Exchange 2010 SP3 (KB2961522)

Exchange Server 2013

More Info Link:- Cumulative Update 6 for Exchange Server 2013

Brief Info:- Released: Cumulative Update 6 for Exchange Server 2013

Download Link:- Cumulative Update 6 for Exchange Server 2013 (KB2961810)

 

Share you experience, which will be helpful in planning and executing the updates.

Update from other blogs:

There are few issues observed of applying the CU6 for Exchange 2013, please read carefully and understand if your scenario has any simlarity with it.

Exchange 2013 CU6 hybrid and co-existence bugs cause administrators to despair

Solution/Fix: Exchange 2013 CU6 hybrid and co-existence bugs - Microsoft Released Script to Fix it

The above script to be applied post the installation of CU6.

-Praveen

In the past we all had nightmares about the recovery of a failed or crashed exchange server. But from the version 2010 (even in 2007) the recovery process became really painless and easy. The following steps will help you to recover a completely failed/crashed server from scratch.

Though all of us know, I would like to emphasize the fact that most of the exchange configuration information are stored in the AD database and we only need to recover the application by using the AD information and then complete the Database recovery and other customized exchange settings.


Note – This document is reference only for Exchange server which are not part of Database Availability Group. If you wish to get more details about DAG member recovery, please follow 
Recovery Installation of a DAG Member with Multi Roles – Exchange Server 2010.

Before we proceed, please ensure that a proper account with required permissions are used to complete the activity.

Other thumb rules,

  • Prepare a server with OS and patches similar to failed server
  • Use the same hostname as the failed server
  • Same drive letters and capacity of disks should be used
  • Similar hardware capacity should be used to avoid performance issues.

Recovery Procedure for Exchange Server 2013, SP1

1. Logon AD console and reset the failed server computer account

Reset

2. Join the prepared server with similar characteristics and same host name (as stated above) to domain. Recovery will fail if the pre-requisite did not match with the failed server.

3. Log back in to the server being recovered using an account which has required permissions assigned and open the command prompt. Navigate to the location where Exchange Installation files are extracted and execute the cmdlet, Setup /m:RecoverServer /IAcceptExchangeServerLicenseTerms

setup recover cmd

4. Now sit back and relax, the process will automatically read the information from AD and recover the server.

Progress1

5. After the successful recovery process, please proceed with the custom configurations and restorations such as,

Exchange Virtual directory settings,
Restoration of Databases

Note – It is recommended to restart the server before the start of DB restore and other custom settings.

Share your experience!

-Praveen

This video will help you to deal with applying the service pack on Exchange Server 2010 DAG Cluster. Microsoft has made the upgrade process fairly simple by the introduction couple of scripts. I will exhibit the behavior of these scripts and its usage in the Cluster infrastructure during the installation of Service Pack 3 on Exchange DAG Cluster with 3 nodes.

 Hope this will give an overall idea and a proper approach in your upgrade plans.

-Praveen

 

As active sync, one of the common technologies used for mobility of email, is used very widely now a days. So it is very important to know the volume of Exchange 2003 Active Sync (EAS) usage.

EAS logs a lot of data in IIS about what’s going on, but parsing out this will be a huge headache. To analyze the data we can use the Log Parser tool from Microsoft.
Download Log Parser tool from below link:

http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&displaylang=en
We can use SQL scripts to work with the Log parser tool to generate the hit ratio of EAS usage.
Note – We should enable the IIS W3C Extended Log File Format.

The output will also give you the details of user alias name of the users who are currently using the Exchange Active Sync feature. This way the EAS usage report can be generated.

Saturday, 10 July 2010 04:40

Exchange 2007 SP3 S/MIME MisMatch

Hope you all would have planned to upgrade your Exchange 2007 to Exchange 2007 SP3. In this post I would like to inform you one of the issues reported.

In Exchange 2007 SP3, there is a mismatch between OWA (Outlook Web Access) S/MIME control. An active X component provides the S/MIME support in OWA. So, after you upgrade the exchange 2007 with SP3, the user will be prompted to install the upgraded version of the control into their client computers. The mechanism works in this way, the code checks the ‘Version’ of the client S/MIME control (MIMECTL.DLL) in end user’s computer with the ProductVersion of MSI file (OWASMIME.MSI) on the CAS server. During the SP3 release, the version of the MSI has incremented to 8.3.83.2. However, the DLL in MSI retained to the old one (8.3.83.0). So even though the client has updated the S/MIME version it will still prompt them to install the latest version (in IE browser).

Page 3 of 15
theme by reviewshub