Exchange Deployment & Compliance Assessment

[6May2026] Updated to reflect conversion to PowerShell module.

Exchange on‑premises environments remain a critical part of many organizations’ messaging infrastructure. That also makes them frequent audit targets and attractive attack surfaces. Over time, configuration drift, mixed Exchange versions, and evolving security guidance make it increasingly difficult to keep the server compliant, especially in less strict managed environments.

The Exchange Deployment & Compliance Assessment (EDCA) was created to answer that question with evidence. It’s a PowerShell-based assessment tool, implemented as a PowerShell module, that collects information from Exchange servers and the Exchange organization. This information is then analyzed and evaluated against best practices and some well-known compliance control frameworks. The result is an (interactive) HTML report that can be used to check and monitor compliance, as well as to review remediation steps for each control. Edge Transport servers can also be added to the analysis; you only need to collect their data separately, as they are usually standalone servers. Their data file can then be added to the other data files to produce a single overview.

I have published a sample interactive report here.

Key features

  • Support for Exchange 2016, Exchange 2019, and Exchange Subscription Edition (SE)
  • Evaluate Exchange Server on-premises with Mailbox Server and Edge Transport roles against 7 compliance frameworks, including common Best Practices.
  • Uses Remote PowerShell to connect to Exchange servers, and can use WinRM to collect system info from domain controllers; no Exchange Management Shell or Active Directory module dependency.
  • Produces an interactive HTML report with framework scoring, with options for filtering and searching.
  • Reported controls provide context, impact, and remediation instructions.
  • The Report offers dark mode support, a print/PDF function, and the ability to hide skipped controls.
  • If more reports are found, a trend chart is added to the scoring widgets.
  • Option to generate a sample remediation script for failed controls (experimental).

EDCA is read‑only by design, not altering configuration items, changing system state, or automatically applying remediations. Even if controls can be automated (some cannot), the underlying process usually needs to follow a change process that also reviews the impact. The remediation steps or generated remediation script should be treated as a template with reviewable PowerShell sample code.

Usage

The EDCA module is published on the PowerShell Gallery, so to install and import the EDCA module, you need to run:

Install-Module -Name EDCA
Import-Module EDCA

EDCA uses a collection, analysis, and reporting step. These steps are run when you do not specify any additional parameters when calling Invoke-EDCA:

Invoke-EDCA

When you run this on a server in an Exchange organization, provided you have sufficient permissions, it will discover all Exchange servers, collect information about Mailbox servers, and the Exchange organization. The collected information is stored in the Data folder, where analysis results will also be stored. The generated Report will be stored in a folder named Output.

When you run this on an Edge Transport server, it will collect information from the local server, similar to running EDCA with the -Local switch, so you can pick up the data file for further processing. More on usage scenarios and operating modes in the README here.

The parameters of interest are:

  • Local runs against the local Exchange server.
  • Collect runs against the local Exchange environment or Edge Transport server.
  • Servers run against one or more specified Exchange servers.
  • ThrottleLimit limits the number of Exchange servers interrogated in parallel.
  • Report produces a Report using collected data or, when Collect is not specified, using info from the Data subfolder.
  • Framework to limit the Frameworks being used to check for compliance.
  • RemediationScript to generate a template to remediate failed controls.
  • DataPath to override the default Data.
  • OutputPath to override the default Output.

For example, to call Invoke-EDCA and only use the CIS framework, you would use:

Invoke-EDCA -Framework CIS

The default Data and Output folders are created in the current working folder.

Note that, to produce a report, information will first be analyzed; the result is stored in an analysis_xxx.json file in the Data folder. This can also be used for further processing, as it contains metadata and structures for compliance scores and findings.

Frameworks

FrameworkOfficial Reference(s)Official URL
Best PracticeCommon best practices for Exchange Server deployments, including CSS Exchange recommendations
ANSSI 🇫🇷Mise en œuvre sécurisée d’un serveur Windows
Recommandations de sécurité relatives à TLS
Sécuriser la journalisation dans un environnement Microsoft AD
Transition post-quantique de TLS 1.3
messervices.cyber.gouv.fr
BSI 🇩🇪IT-Grundschutz-Kompendium Edition 2023
Modules: SYS.1.1 · SYS.1.2.3 · APP.2.2 · APP.5.2
bsi.bund.de
CIS 🇺🇸CIS Microsoft Exchange Server 2019 Benchmark
CIS Microsoft Windows Server 2019/2022 Benchmark
CIS Controls v8
cisecurity.org
CISA 🇺🇸Microsoft Exchange Server Security Best Practices Guide
Advisory AA21-062A: Mitigate Exchange Server Vulnerabilities
Binding Operational Directive 18-01
Known Exploited Vulnerabilities Catalog
cisa.gov
DISA 🇺🇸Microsoft Exchange 2019 Mailbox Server STIG
Microsoft Exchange 2016 Mailbox Server STIG
public.cyber.mil/stigs
NIS2 🇪🇺🇳🇱NIS2 Directive (EU) 2022/2555
NCSC-NL TLS Guidelines 2025-05
eur-lex.europa.eu
ncsc.nl
ISM 🇦🇺Information Security Manual, published by Australian Signals Directorate (ASD)cyber.gov.au

Feedback

EDCA is currently released as a preview. I strongly recommend using it in test or lab environments first, especially while controls, scoring, and reporting continue to be tweaked and evolve. Feedback is very welcome.

The project is published on GitHub at https://github.com/michelderooij/EDCA, where you can also submit any issues or other suggestions. If you are not keen on using GitHub for this, use the comments section below.

The README.MD includes more details on permission and connectivity requirements, usage examples, and the latest updates.

Forefront TMG 2010 SP2 Rollup 5

ForeFrontA short notice for those utilizing TMG in their environment on the release of Rollup 5 for Microsoft Forefront Threat Management Gateway (TMG) 2010, Service Pack 2 (KB2954173).

Changes in this update:

  • 2963805 Account lockout alerts are not logged after you install Rollup 4 for TMG 2010 SP2
  • 2963811 FIX: The TMG Firewall service (wspsrv.exe) may crash when the DiffServ filter is enabled
  • 2963823 “1413 Invalid Index” after you enable cookie sharing across array members
  • 2963834 HTTPS traffic may not be inspected when a user accesses a site
  • 2967726 New connections are not accepted on a specific web proxy or web listener in Threat Management Gateway 2010
  • 2965004 EnableSharedCookie option doesn’t work if the Forefront TMG service runs under a specific account
  • 2932469 An incorrect value is used for IPsec Main Mode key lifetime in Threat Management Gateway 2010
  • 2966284 A zero value is always returned when an average counter of the “Forefront TMG Web Proxy” object is queried from the .NET Framework
  • 2967763 The “Const SE_VPS_VALUE = 2” setting does not work for users if the UPN is not associated with a real domain
  • 2973749 HTTP Connectivity verifiers return unexpected failures in TMG 2010

TMG support will end on April 14th, 2015 and extended support will end on April 14th, 2020.

You can request Forefront TMG SP2 RU5 directly from support here.

Forefront UAG EOL Announcement

ForeFrontAlmost one and a half year after the End of Life announcement of TMG (and other products in the Forefront product line), Microsoft yesterday announced the End of Life of one of the other Forefront products, Unified Access Gateway or UAG as we all know it. To be honest, this announcement didn’t come as a big surprise.

The TMG EOL notice in September 2012 said, “It is important to note that there are no significant changes to the Forefront Identity Manager or Forefront Unified Access Gateway roadmaps”. Apparently Microsoft changed its mind somewhere over the last 15 months. Forefront UAG won’t be available anymore per July 1st, 2014; mainstream support ends April 14th, 2014 and extended support ends April 14th, 2020.

Suggested alternative is Windows Server 2012 R2 with its Web Application Proxy (WAP) role. Though not being on par with UAG or TMG, WAP can provide DirectAccess capabilities and application publishing. Other vendors offer alternative products like KEMP load balancers equipped with their Edge Security Pack (ESP) or F5 with their BIG-IP Local Traffic. Manager (LTM) products.

Customers with Software Assurance utilizing UAG are granted a Windows Server 2012 R2 Standard license. As of December 1st, those customers are also exempt from ordering additional UAG licenses.

Forefront TMG 2010 SP2 Rollup 4

ForeFrontA short blog on the release of Rollup 4 for Microsoft Forefront Threat Management Gateway (TMG) 2010 Service Pack 2 (KB2870877).

Changes in this update:

  • 2889345 Accounts are locked out beyond the AccountLockoutResetTime period in Forefront Threat Management Gateway 2010 SP2
  • 2890549 Incorrect Performance Monitor values when queried from a .NET Framework app in Forefront Threat Management Gateway 2010
  • 2890563 “URL” and “Destination Host Name” values are unreadable in the web proxy log of Forefront Threat Management Gateway 2010
  • 2891026 Firewall Service leaks memory if Malware Inspection is enabled in Forefront Threat Management Gateway 2010
  • 2888619 A password change is unsuccessful if a user’s DN attribute contains a forward slash and an Active Directory LDAP-defined special character in Forefront Threat Management Gateway 2010
  • 2863383 “Query stopped because an error occurred while it was running” when you run a non-live query in Forefront Threat Management Gateway 2010 SP2
  • 2899720 Threat Management Gateway 2010 incorrectly sends “Keep-Alive” headers when it replies to Media Player WPAD file requests
  • 2899716 Firewall service (Wspsrv.exe) crashes when a web publishing request is handled in Forefront Threat Management Gateway 2010
  • 2899713 Access to certain SSL websites may be unavailable when HTTPS Inspection is enabled in Forefront Threat Management Gateway 2010

This again shows TMG isn’t “dead” since it received it’s End-of-Life status.. yet. Note that TMG support will end on April 14th, 2015 and extended support will end on April 14th, 2020.

You can request Forefront TMG SP2 RU4 directly from support here.

Forefront TMG 2010 SP2 Rollup 3

ForeFrontA short blog on the release of Rollup 3 for Microsoft Forefront Threat Management Gateway (TMG) 2010 Service Pack 2.

For Exchange, this Rollup fixes unexpected authentication prompts when using OWA published using Forefront Threat Management Gateway (TMG) 2010 in conjunction with RSA authentication and Forms-based Authentication (FBA). For a full list of changes, consult knowledgebase article kb2735208.

This again proves TMG isn’t “dead” since it received it’s End-of-Life status. So again, when you got TMG, don’t panic: For TMG, support will end on April 14th, 2015 and extended support will end on April 14th, 2020. You have some time to look into alternatives.

You can request Forefront TMG SP2 RU3 directly from support here.