Public/SM_Common.ps1

<#
.SYNOPSIS
    Retrieves the ARC (Authenticated Received Chain) and Enhanced Filtering settings for the SEPPmail inbound connector.
 
.DESCRIPTION
    Checks the configuration of the SEPPmail inbound connector and related settings to verify
    if they are correctly configured for ARC/CBC (Certificate Based Connector) operation.
     
    The cmdlet validates:
    - EFSkipIPs setting (should be empty for ARC)
    - Hosted Connection Filter Policy IPAllowList (should be empty for ARC)
    - EFSkipLastIP setting (should be enabled for ARC)
    - Trusted ARC Sealers configuration
     
    Outputs informational messages indicating whether each setting is correctly configured.
 
.EXAMPLE
    Get-SM365ARCSetting
     
    Displays the current ARC and Enhanced Filtering settings for the SEPPmail inbound connector.
 
.INPUTS
    None. You cannot pipe objects to this cmdlet.
 
.OUTPUTS
    None. Outputs informational messages about the configuration status.
 
.NOTES
    - Requires an active Exchange Online PowerShell session
    - Requires the SEPPmail inbound connector '[SEPPmail] Appliance -> ExchangeOnline' to exist
    - Use Set-SM365ARCSetting to configure the settings correctly
 
.LINK
    https://docs.seppmail.com/ch-en/04_com_powershell.html
#>

Function Get-SM365ARCSetting {
    [CmdLetBinding(
        HelpURI = 'https://docs.seppmail.com/ch-en/04_com_powershell.html'
    )]
    param (
    )

    begin {
        Write-Verbose "Query Inbound Connector Setting"
        $ib = Get-Inboundconnector -Identity '[SEPPmail] Appliance -> ExchangeOnline'
        $hcfp = Get-HostedConnectionFilterPolicy
        $arcdom = (Get-ArcConfig).ArcTrustedSealers
    }

    process {
        if (-not $ib) {
            Write-Warning "Could not find an Inbound Connector with the name '[SEPPmail] Appliance -> ExchangeOnline'. Install connectors as required."
            return
        }

        $checks = @(
            @{ Ok = -not $ib.EFSkipIPs      ; OkMsg = 'EfSkipIPs setting has no IP range'         ; BadMsg = 'EfSkipIPs has values' }
            @{ Ok = -not $hcfp.IPAllowList  ; OkMsg = 'Hosted Connection Filter Policy is empty'  ; BadMsg = 'Hosted Connection Filter Policy has values' }
            @{ Ok = $ib.EFSkipLastIp -eq $true; OkMsg = 'EfSkipLastIP is enabled'                 ; BadMsg = 'EFSkipLastIP is disabled' }
        )

        foreach ($check in $checks) {
            if ($check.Ok) {
                Write-Verbose "ARC setting OK - $($check.OkMsg)"
            } else {
                Write-Warning "ARC setting BAD - $($check.BadMsg)"
            }
        }

        if ($arcdom) {
            return $arcdom
        }
        Write-Warning "ARC setting BAD - No trusted ARC sealers configured"
    }
    end {
    }
}

<#
.SYNOPSIS
    Configures ARC (Authenticated Received Chain) and Enhanced Filtering settings for SEPPmail connectors.
 
.DESCRIPTION
    Configures the SEPPmail inbound and outbound connectors and related Exchange Online settings
    to support ARC/CBC (Certificate Based Connector) functionality.
     
    The cmdlet performs the following actions:
    - Sets EFSkipLastIP to $true on the inbound connector
    - Clears EFSkipIPs on the inbound connector
    - Clears the Hosted Connection Filter Policy IPAllowList
    - Configures trusted ARC sealers based on the connector certificates
     
    This configuration is required when using Certificate Based Connectors (CBC) with the SEPPmail Appliance.
 
.EXAMPLE
    Set-SM365ARCSetting
     
    Configures the ARC settings for the SEPPmail connectors to support CBC operation.
 
.INPUTS
    None. You cannot pipe objects to this cmdlet.
 
.OUTPUTS
    None. Displays the updated configuration using Get-SM365ARCSetting.
 
.NOTES
    - Requires an active Exchange Online PowerShell session
    - Requires both SEPPmail connectors to be configured
    - Use Get-SM365ARCSetting to verify the configuration after running this cmdlet
    - See https://docs.seppmail.com/de/09_ht_mso365_ssl_certificate.html for CBC setup details
 
.LINK
    https://docs.seppmail.com/ch-en/04_com_powershell.html
#>

Function Set-SM365ARCSetting {
    [CmdLetBinding(
        HelpURI = 'https://docs.seppmail.com/ch-en/04_com_powershell.html'
    )]
    param (
    )

    begin {
        Write-Verbose "Query Inbound Connector Setting"
        $ib = Get-Inboundconnector -Identity '[SEPPmail] Appliance -> ExchangeOnline'
        $ob = Get-OutboundConnector -Identity '[SEPPmail] ExchangeOnline -> Appliance'
        $hcfp = Get-HostedConnectionFilterPolicy
    }
    process {
        if ($ib -and $ob -and $hcfp) {
            Write-Verbose "Setting the Inbound Connector EfSkipIPs to null and EfSkipLastIP to enabled to support ARC"
            Set-InboundConnector -Identity $ib.Identity -EFSkipLastIP $true -EFSkipIPs $null
            
            Write-Verbose "Setting Hosted Connection Filter Policy withName $hcfp.Identity to null"
            Set-HostedConnectionFilterPolicy -Identity $hcfp.Identity -IPAllowList $null

            Write-Verbose "Setting TrustedArcSealers to InboudConn TLSCertName $ib.TlsSenderCertificateName and OutBoundConn TLSDomain $ob.TLSDomain"
            [string[]]$existingArcsealers = (get-arcconfig).arcTrustedsealers
            [string[]]$NewArcsealers = @($ib.TlsSenderCertificateName , $ob.TLSDomain)
            $ArcTrustedSealers = Add-UniqueStringsToArray -ExistingArray $existingArcsealers -NewStrings $NewArcsealers
            Set-ArcConfig -Identity Default -ArcTrustedSealers $ArcTrustedSealers

            Write-Verbose "Setting HostedConnectionFilterpolicy with name $hcfp.Identity to an empty IPAllowList"
            Set-HostedConnectionFilterPolicy -Identity $hcfp.Identity -IPAllowList $null

        } else {
            Write-Information "SEPPmail Appliance Connectors not fully configured. Inbound or Outbound Connectors are missing. (Re)Install with New-SM365Connectors"
        }
    }

    end {
        Get-SM365ARCSetting
    }
}


# SIG # Begin signature block
# MIIVyAYJKoZIhvcNAQcCoIIVuTCCFbUCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDBs/jpzt162a7D
# XNUNRhYc6gGBbUu2mcgcdJC5SKuS/6CCEgQwggVvMIIEV6ADAgECAhBI/JO0YFWU
# jTanyYqJ1pQWMA0GCSqGSIb3DQEBDAUAMHsxCzAJBgNVBAYTAkdCMRswGQYDVQQI
# DBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoM
# EUNvbW9kbyBDQSBMaW1pdGVkMSEwHwYDVQQDDBhBQUEgQ2VydGlmaWNhdGUgU2Vy
# dmljZXMwHhcNMjEwNTI1MDAwMDAwWhcNMjgxMjMxMjM1OTU5WjBWMQswCQYDVQQG
# EwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMS0wKwYDVQQDEyRTZWN0aWdv
# IFB1YmxpYyBDb2RlIFNpZ25pbmcgUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEBAQUA
# A4ICDwAwggIKAoICAQCN55QSIgQkdC7/FiMCkoq2rjaFrEfUI5ErPtx94jGgUW+s
# hJHjUoq14pbe0IdjJImK/+8Skzt9u7aKvb0Ffyeba2XTpQxpsbxJOZrxbW6q5KCD
# J9qaDStQ6Utbs7hkNqR+Sj2pcaths3OzPAsM79szV+W+NDfjlxtd/R8SPYIDdub7
# P2bSlDFp+m2zNKzBenjcklDyZMeqLQSrw2rq4C+np9xu1+j/2iGrQL+57g2extme
# me/G3h+pDHazJyCh1rr9gOcB0u/rgimVcI3/uxXP/tEPNqIuTzKQdEZrRzUTdwUz
# T2MuuC3hv2WnBGsY2HH6zAjybYmZELGt2z4s5KoYsMYHAXVn3m3pY2MeNn9pib6q
# RT5uWl+PoVvLnTCGMOgDs0DGDQ84zWeoU4j6uDBl+m/H5x2xg3RpPqzEaDux5mcz
# mrYI4IAFSEDu9oJkRqj1c7AGlfJsZZ+/VVscnFcax3hGfHCqlBuCF6yH6bbJDoEc
# QNYWFyn8XJwYK+pF9e+91WdPKF4F7pBMeufG9ND8+s0+MkYTIDaKBOq3qgdGnA2T
# OglmmVhcKaO5DKYwODzQRjY1fJy67sPV+Qp2+n4FG0DKkjXp1XrRtX8ArqmQqsV/
# AZwQsRb8zG4Y3G9i/qZQp7h7uJ0VP/4gDHXIIloTlRmQAOka1cKG8eOO7F/05QID
# AQABo4IBEjCCAQ4wHwYDVR0jBBgwFoAUoBEKIz6W8Qfs4q8p74Klf9AwpLQwHQYD
# VR0OBBYEFDLrkpr/NZZILyhAQnAgNpFcF4XmMA4GA1UdDwEB/wQEAwIBhjAPBgNV
# HRMBAf8EBTADAQH/MBMGA1UdJQQMMAoGCCsGAQUFBwMDMBsGA1UdIAQUMBIwBgYE
# VR0gADAIBgZngQwBBAEwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC5jb21v
# ZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNAYIKwYBBQUHAQEE
# KDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZI
# hvcNAQEMBQADggEBABK/oe+LdJqYRLhpRrWrJAoMpIpnuDqBv0WKfVIHqI0fTiGF
# OaNrXi0ghr8QuK55O1PNtPvYRL4G2VxjZ9RAFodEhnIq1jIV9RKDwvnhXRFAZ/ZC
# J3LFI+ICOBpMIOLbAffNRk8monxmwFE2tokCVMf8WPtsAO7+mKYulaEMUykfb9gZ
# pk+e96wJ6l2CxouvgKe9gUhShDHaMuwV5KZMPWw5c9QLhTkg4IUaaOGnSDip0TYl
# d8GNGRbFiExmfS9jzpjoad+sPKhdnckcW67Y8y90z7h+9teDnRGWYpquRRPaf9xH
# +9/DUp/mBlXpnYzyOmJRvOwkDynUWICE5EV7WtgwggYaMIIEAqADAgECAhBiHW0M
# UgGeO5B5FSCJIRwKMA0GCSqGSIb3DQEBDAUAMFYxCzAJBgNVBAYTAkdCMRgwFgYD
# VQQKEw9TZWN0aWdvIExpbWl0ZWQxLTArBgNVBAMTJFNlY3RpZ28gUHVibGljIENv
# ZGUgU2lnbmluZyBSb290IFI0NjAeFw0yMTAzMjIwMDAwMDBaFw0zNjAzMjEyMzU5
# NTlaMFQxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxKzAp
# BgNVBAMTIlNlY3RpZ28gUHVibGljIENvZGUgU2lnbmluZyBDQSBSMzYwggGiMA0G
# CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCbK51T+jU/jmAGQ2rAz/V/9shTUxjI
# ztNsfvxYB5UXeWUzCxEeAEZGbEN4QMgCsJLZUKhWThj/yPqy0iSZhXkZ6Pg2A2NV
# DgFigOMYzB2OKhdqfWGVoYW3haT29PSTahYkwmMv0b/83nbeECbiMXhSOtbam+/3
# 6F09fy1tsB8je/RV0mIk8XL/tfCK6cPuYHE215wzrK0h1SWHTxPbPuYkRdkP05Zw
# mRmTnAO5/arnY83jeNzhP06ShdnRqtZlV59+8yv+KIhE5ILMqgOZYAENHNX9SJDm
# +qxp4VqpB3MV/h53yl41aHU5pledi9lCBbH9JeIkNFICiVHNkRmq4TpxtwfvjsUe
# dyz8rNyfQJy/aOs5b4s+ac7IH60B+Ja7TVM+EKv1WuTGwcLmoU3FpOFMbmPj8pz4
# 4MPZ1f9+YEQIQty/NQd/2yGgW+ufflcZ/ZE9o1M7a5Jnqf2i2/uMSWymR8r2oQBM
# dlyh2n5HirY4jKnFH/9gRvd+QOfdRrJZb1sCAwEAAaOCAWQwggFgMB8GA1UdIwQY
# MBaAFDLrkpr/NZZILyhAQnAgNpFcF4XmMB0GA1UdDgQWBBQPKssghyi47G9IritU
# pimqF6TNDDAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADATBgNV
# HSUEDDAKBggrBgEFBQcDAzAbBgNVHSAEFDASMAYGBFUdIAAwCAYGZ4EMAQQBMEsG
# A1UdHwREMEIwQKA+oDyGOmh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGlnb1B1
# YmxpY0NvZGVTaWduaW5nUm9vdFI0Ni5jcmwwewYIKwYBBQUHAQEEbzBtMEYGCCsG
# AQUFBzAChjpodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3RpZ29QdWJsaWNDb2Rl
# U2lnbmluZ1Jvb3RSNDYucDdjMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5zZWN0
# aWdvLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEABv+C4XdjNm57oRUgmxP/BP6YdURh
# w1aVcdGRP4Wh60BAscjW4HL9hcpkOTz5jUug2oeunbYAowbFC2AKK+cMcXIBD0Zd
# OaWTsyNyBBsMLHqafvIhrCymlaS98+QpoBCyKppP0OcxYEdU0hpsaqBBIZOtBajj
# cw5+w/KeFvPYfLF/ldYpmlG+vd0xqlqd099iChnyIMvY5HexjO2AmtsbpVn0OhNc
# WbWDRF/3sBp6fWXhz7DcML4iTAWS+MVXeNLj1lJziVKEoroGs9Mlizg0bUMbOalO
# hOfCipnx8CaLZeVme5yELg09Jlo8BMe80jO37PU8ejfkP9/uPak7VLwELKxAMcJs
# zkyeiaerlphwoKx1uHRzNyE6bxuSKcutisqmKL5OTunAvtONEoteSiabkPVSZ2z7
# 6mKnzAfZxCl/3dq3dUNw4rg3sTCggkHSRqTqlLMS7gjrhTqBmzu1L90Y1KWN/Y5J
# KdGvspbOrTfOXyXvmPL6E52z1NZJ6ctuMFBQZH3pwWvqURR8AgQdULUvrxjUYbHH
# j95Ejza63zdrEcxWLDX6xWls/GDnVNueKjWUH3fTv1Y8Wdho698YADR7TNx8X8z2
# Bev6SivBBOHY+uqiirZtg0y9ShQoPzmCcn63Syatatvx157YK9hlcPmVoa1oDE5/
# L9Uo2bC5a4CH2RwwggZvMIIE16ADAgECAhBIqMP3CCLHOHtOKuaWNyeFMA0GCSqG
# SIb3DQEBDAUAMFQxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0
# ZWQxKzApBgNVBAMTIlNlY3RpZ28gUHVibGljIENvZGUgU2lnbmluZyBDQSBSMzYw
# HhcNMjYwNDE1MDAwMDAwWhcNMjcwNzE0MjM1OTU5WjBmMQswCQYDVQQGEwJERTEP
# MA0GA1UECAwGQmF5ZXJuMSIwIAYDVQQKDBlTRVBQbWFpbCBEZXV0c2NobGFuZCBH
# bWJIMSIwIAYDVQQDDBlTRVBQbWFpbCBEZXV0c2NobGFuZCBHbWJIMIICIjANBgkq
# hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvAFzE8MbJpvQt+IdIh1M+bKYsJBFDk4b
# 9ySe25IrCi00B9o5XmQtIw42MqyIKbUq1tDARtp9KTQedEP9W+rflAF2l+0Z046J
# kiqumU9/enbqWLDyln1aS/p7HOgwZFMhnsR9zH0MfFckiklUmkzJO+vmzYAK7ZmD
# xajNLJs0gkGRU2/BecAx/TSvLXMaKONsKZCyMKQCnwo1mCY/tFl5EgUz7YQFrPOR
# BQGfQke/hkdBfQDqNRsi/J6+KhJWc6LvgQihdRg/INQbQsTxlow18NWvyFsjjueH
# 7kG6HR4YKfbv07xgrsIh8xvq9ZJ1SBhLXmkg4SdoQGASjqR6o3keAX+bDRFf+hml
# WWJp/FqVHR5QomF3vbK2/bbz4jAclYSPx/sPasNJ0YnKFkgmowZ7Ysa0KA0/egBg
# tI4gJ+8V7zrqIVEG3rMQh9KCdMnJqP2aM9o4gUzQvE1M4x606liX9EWwdLLS+fe7
# 9o+Fzo5oH4wBE/En6hQQkzseHHu+TXCDd6zUUZ/PlTK0gTaDIRXt6UzPNqJ4RiRC
# W2pNFcPt078qqVTuwKUXoE4ufxGgXKFrZlCYST/9eG1TnW2oq19nz8A333GCsL3g
# poNIKvfmDyGMMNzvx2aeqn2v6e75z8kH19iGSNZ51xT+WgS9F1aIvjz08/T7XAv7
# iDPF1/gPIp8CAwEAAaOCAakwggGlMB8GA1UdIwQYMBaAFA8qyyCHKLjsb0iuK1Sm
# KaoXpM0MMB0GA1UdDgQWBBS30/Tq+alF3j2BY5up8n5zpAU23DAOBgNVHQ8BAf8E
# BAMCB4AwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDAzBKBgNVHSAE
# QzBBMDUGDCsGAQQBsjEBAgEDAjAlMCMGCCsGAQUFBwIBFhdodHRwczovL3NlY3Rp
# Z28uY29tL0NQUzAIBgZngQwBBAEwSQYDVR0fBEIwQDA+oDygOoY4aHR0cDovL2Ny
# bC5zZWN0aWdvLmNvbS9TZWN0aWdvUHVibGljQ29kZVNpZ25pbmdDQVIzNi5jcmww
# eQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY3J0LnNlY3RpZ28u
# Y29tL1NlY3RpZ29QdWJsaWNDb2RlU2lnbmluZ0NBUjM2LmNydDAjBggrBgEFBQcw
# AYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETc3VwcG9ydEBz
# ZXBwbWFpbC5jaDANBgkqhkiG9w0BAQwFAAOCAYEAi7fmb5UYoemWG3CC4K2UZWVr
# R6GOfi8gbJKgjPbKO4zrCrU/x6cOdyp6scKZfUEGFDf8KH6pP4pAQv1Hsbi49gU2
# kxoUWLlCiipn05qJY663DHx9hlStej/ZdEatou0wyCDiG5xD7kmG+1t6iLyyCBgE
# B88tJpzTjI61qXmBTS/FGEOAsB4SDEW1ngA7bc5FOv4IUKA43hp8M+N3GeYFzDqw
# JELYEfVVYheBW3o7q4VrCdfFEuaQihOtvfDfYpP6ANgekNn8HdsMT8rx9D1I50Rl
# i/qQFo2BOuPyb2SIQPzJvCs5wgi5qgp1nHiN6igumu2Cz7BmGjOazGUgCSUY5Qwy
# E8+F+R2tVM+2O15rfX01+e56ZfojBEiEjMwfPHs3fa3V3gokWWNwUMkton/v0R/n
# l2zjmOr2okohOINZEDh9frg21zUCN5ZD8Y4zQWuiJLCvvvBZs0JR4c9xl2k2wtw/
# QLPhGU69zM3smGpRoLE8M6zvUvSU7jXjvefazUniMYIDGjCCAxYCAQEwaDBUMQsw
# CQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSswKQYDVQQDEyJT
# ZWN0aWdvIFB1YmxpYyBDb2RlIFNpZ25pbmcgQ0EgUjM2AhBIqMP3CCLHOHtOKuaW
# NyeFMA0GCWCGSAFlAwQCAQUAoIGEMBgGCisGAQQBgjcCAQwxCjAIoAKAAKECgAAw
# GQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisG
# AQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIHfEIoEczoYmnizyaaCzgqaxG72KdkVD
# /huGj9sQKwWyMA0GCSqGSIb3DQEBAQUABIICAKCy7rvXIROMQUAZX7TzEysBqCvU
# m4ShqiJT+prFcElWwh9taCm3et7dPuebO0o6P/o3GVwhQ4KtYRd2OXsxM0qiwPeM
# /6zKvMghM3Q5uSV9ak9fL4Y8XXmVF2thAyPr+++WoDobhdiC7HN/k89sjYa85AXm
# wpAXI3COc/A4yHHZAwOjmfuypjFC5DLaT88L3dfd/VjhgLUgehxZ/Im9OMuCou8K
# rmXeJAdBWPYTaAmW/SJysNrFA0UtP7n6JnZOMhSD24Hff8ZwuLBPgGmeGuwxwrke
# zYRxvPKjvUkLUNYsyGz31E4ALcYBPKYoYFP9XrP8590UqgqK4nTFedKmetHfBNxz
# jYclA7ooOGjDjveYz0S6IsF4DhwxXiB9zUBXa8pneDRzvDrmvWqPkI4E1q4phz8E
# JuA3ioEt4jXjYSe+Jy1HACzb3Xw4GeW0XFHS6qglc+U/xzutGCEAQPQ/SlHm7OTs
# 3Rmy5cvmpH1S5Cf4z7YYnzEYu65NSwE17FfZHjV2dN29QCqiiu7dHC5H2ViqNh7T
# jyiV3egRAkC3i9axZXHxdHqbniQfMWS6NZoPUi++JFvvWKdtkUyiWS4UA+1eorAX
# rUHbWTwyf+YGwW5Scn94oAzbPLw/h5yscnrkiJE9af4SJyRvoxih5P5b3NgzfbIl
# AIu3WZ9KNtb7c+ls
# SIG # End signature block