Exchange 2019: Endringer

Oppdatert:25. februar 2025

Dette dokumentet innholder en beskrivelse av endringer som er gjort etter at Exchange 2019 kom i produksjon.

1   Sikkerhet

Det er nå anbefalt å skru av RemotePowershell for alle som ikke er admin. Foreøpig er det satt på alt av lenkede kontoer dvs. mailbrukere):

$Users = Get-User -ResultSize unlimited -Filter { IsLinked -eq $true }
$Users | foreach {Set-User -Identity $_ -RemotePowerShellEnabled $false}

Når Exchange installeres opprettes det en mailboks for brukeren som gjør installasjonen. Vi ønsker ikke at administrator-brukerne skal ha en mailboks, samtidig vil vi ikke fjerne AD-brukeren. Derfor:

Disable-Mailbox bore_drift
Disable-Mailbox trotsai_drift
...
Disable-Mailbox iv_drift

Resten av brukerne er gått igjennom og fjernet med noe alla:

$others = get-user -ResultSize unlimited -Filter { RemotePowerShellEnabled -eq $true -and RecipientType -eq "UserMailbox"}
$ohters | ft Identity,RecipientType*
...
$others | where { $_.RecipientTypeDetails -ne "RoomMailbox" } | Set-User -RemotePowerShellEnabled $false
$others | where { $_.RecipientTypeDetails -ne "SharedMailbox" } | Set-User -RemotePowerShellEnabled $false

TODO: Oppdater Cererbrum-modulen så nye brukere automatisk får dette satt.

2   Disk

OS-disken bruker mye mer på logging, samt at mail.que kan vokse seg stor. Vi har derfor bedt om mer disk til OSet og C-disken er nå på 500 GB. Selve utvidelsen gjøres enkelt med diskpart:

DISKPART> list volume

    Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
    ----------  ---  -----------  -----  ----------  -------  ---------  --------
    Volume 0     D                       DVD-ROM         0 B  No Media
    Volume 1                      NTFS   Partition   2047 GB  Healthy
        C:\disks\n\
    Volume 2                      NTFS   Partition   2047 GB  Healthy
        C:\disks\o\
    ...
    Volume 12    C                NTFS   Partition    399 GB  Healthy    Boot
    Volume 13        Recovery     NTFS   Partition    499 MB  Healthy    Hidden
    Volume 14                     FAT32  Partition     99 MB  Healthy    System
    ...

Siden OS-disken er volum 12, så velges den. Man kan også dobbeltverifisere det med detail volume (da ser man også at det er ledig plass for utvidelse):

DISKPART> select volume 12

    Volume 12 is the selected volume.

DISKPART> detail volume

    Disk ###  Status         Size     Free     Dyn  Gpt
    --------  -------------  -------  -------  ---  ---
    * Disk 3    Online          500 GB    99 GB        *

    Read-only              : No
    Hidden                 : No
    No Default Drive Letter: No
    Shadow Copy            : No
    Offline                : No
    BitLocker Encrypted    : No
    Installable            : Yes

    Volume Capacity        :  399 GB
    Volume Free Space      :   46 GBi

Først utvider man volumet, så filsystemet. Ingen argumenter er nødvendig - standardinnstillingene gjør at uallokert disk fylles opp:

DISKPART> extend

    DiskPart successfully extended the volume.

DISKPART> extend filesystem

    DiskPart successfully extended the file system on the volume.

Ferdig.

3   Autodiscover

Vi har tidligere ikke eksplisitt satt Autodiscover-URL av to grunner. Det har fungert fint å la Exchange autogenerere den og det var ikke mulig å sette den.

Det har nå dukket opp et tilfelle hvor Exchange ikke greier seg på egenhånd, og det er om Autodiscover versjon 2 (autodiscover.json) skal «nedgradere» seg selv til opprinnelig/gammel versjon. Test f.eks. med:

https://mail.uio.no/autodiscover/autodiscover.json?Email=iv@uio.no&Protocol=Autodiscoverv1

Dette gir en 500 Internal server error med mindre URLen til autodiscover.xml er satt. Siden vi prøvde å sette URL sist har det vist seg at Microsoft, med sin uendelige visdom, kun har gjort det mulig kjøre Set-AutodiscoverVirtualDirectory med intern og ekstern fra Snapin, ikke i Exchange Management Shell.

Dokumentasjon er oppdatert, og endring gjort i januar 2023.

4   SMTP-domene / Modern Authentication

Selv om dokumentasjonen ikke sier noe om det, og det ikke burde være relevant, så tilsier testing at det å eksplisitt definere alle domener vi har primæradresser i som SMTP-domener gjør at Exchange tilbyr OAuth / Modern Authentication til Outlook (MAPI over HTTP).

Er i første omgang gjort for følgende e-postdomener:

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Snapin
New-AcceptedDomain -Name it.uio.no -DomainName it.uio.no -DomainType InternalRelay

Deretter ble alle e-postdomener med adresser knyttet til brukere i Exchange aktivert som SMTP-domener i mars 2023. Se utrullingsplanen for detaljert liste.

5   Certificate signing of PowerShell serialization payload

Certificate signing of PowerShell serialization payload

Sett ny innstilling på en tjener (gjort på mail-ex25.exprod.uio.no):

LaunchEMS

New-SettingOverride -Name "EnableSigningVerification" `
    -Component Data -Section EnableSerializationDataSigning `
    -Parameters @("Enabled=true") -Reason "Enabling Signing Verification"

Get-ExchangeDiagnosticInfo -Process Microsoft.Exchange.Directory.TopologyService `
    -Component VariantConfiguration -Argument Refresh

Restart-Service -Name W3SVC, WAS -Force

Verifisert at innstillingen er satt ved å kjøre på en annen tjener:

LaunchEMS

Get-SettingOverride | ft SectionName, Reason, Status

SectionName                    Reason                          Status
-----------                    ------                          ------
EnableSerializationDataSigning Enabling Signing Verification Accepted

6   Exclude Exchange stuff from anti-virus

Skulle vært gjort for år siden, men nå har MS laget et verktøy/skript for unnta Exchange fra antivirusprogramvaren.

Dette er kjørt i både EXTEST og EXPROD på hver enkelt Exchangetjener. I tillegg er den delte mappen som brukes av witness unntatt. F.eks. på mail-testmgt2.extest.uio.no:

Set-MpPreference -ExclusionPath C:\DAGWitness\mail-dagtest02.extest.uio.no

Tilsvarende på mail-witness02.exprod.uio.no:

Set-MpPreference -ExclusionPath "C:\DAGWitness2\"

Kjøringen er gjort med:

# Dryrun
.\Set-ExchAVExclusions.ps1 -ListRecommendedExclusions

# Execute
.\Set-ExchAVExclusions.ps1 -Filename .\Exclusions.txt

# Verify part 1

7   Install HotFix KB5037224

Denne fikser en haug ting <https://support.microsoft.com/en-us/topic/hotfix-update-for-exchange-server-2019-and-2016-april-23-2024-kb5037224-35eddea8-4828-4e38-b462-db89ea1100c9> samt gir støtte for ECC-sertifikater og Modern Authentication for OWA og ECP. Nedsiden er at installasjonen kræser ofte og det har vært litt pes og manuelt rydde opp og fikse.

7.1   Foreløpig metode for installasjon

Start med å sette nedetid i Zabbix, samt ta ut tjeneren med følgende kommando fra mail-exmgmt02.exprod.uio.no i Administrator Powershell:

C:\bin\enter-maintenance-mode-2019.ps1 -Server mail-ex21

C:\bin\enter-maintenance-mode-2019.ps1 -Server mail-ex21 -statusonly -verbose
(Get-DatabaseAvailabilityGroup -Status).ServersInMaintenance.Name

Deretter bør tjeneren restartes før man kjører:

powershell
Set-MpPreference -DisableRealtimeMonitoring:$true
C:\Temp\Exchange2019-KB5037224-x64-en.exe

Om filer er låst, og verken å drepe prosessene eller restarte tjeneren fungerer, velg "ignore" for å få installert. TODO: Må sjekkes opp.

Om installasjonen feiler, så har den alltid feilet på nytt om ikke følgende tjeneste startes først:

Get-Service winmgmt | Set-Service -StartupType Automatic
Get-Service winmgmt | Start-Servic

Restart-Computer

C:\Temp\Exchange2019-KB5037224-x64-en.exe

Hvis installasjonen feilet, så vil ikke ting komme opp riktig. Sjekk status på tjenester med f.eks.:

# De to POP3-tjenestene skal være deaktivert og ikke kjøre.
# wsbexchange (backup-ting?) skal være satt til manuell og ikke kjøre.
ForEach ($service in 'FMS', 'hostcontrollerservice', 'IISAdmin', 'MSExchange*', 'pla', 'RemoteRegistry', 'SearchExchangeTracing', 'W3Svc', 'WinMgmt', 'wsbexchange') { Get-Service $service | Select Status,Name,StartType }

# Fiks ting som ikke er Exchange først
ForEach ($service in 'FMS', 'hostcontrollerservice', 'IISAdmin', 'pla', 'RemoteRegistry', 'SearchExchangeTracing', 'W3Svc', 'WinMgmt') { Get-Service $service | Set-Service -StartupType Automatic }

ForEach ($service in 'FMS', 'hostcontrollerservice', 'IISAdmin', 'pla', 'RemoteRegistry', 'SearchExchangeTracing', 'W3Svc', 'WinMgmt') { Get-Service $service | Start-Service }

# Der etter Exchange
Get-Service MSExchange* | Set-Service -StartupType Automatic
Get-Service MSExchangePop* | Set-Service -StartupType Disabled
Get-Service wsbexchange | Set-Service -StartupType Manual
Get-Service MSExchange* | Where { $_.Name -notlike "*pop3*" } | Start-Service

Skru på antivirusskanning igjen:

Set-MpPreference -DisableRealtimeMonitoring:$false
Get-MpPreference | FL DisableRealtimeMonitoring

Sett i produksjon, f.eks. på mail-exmgmt02.exprod.uio.no:

.\enter-production-mode-2019.ps1 -Verbose -Server mail-ex21
.\enter-production-mode-2019.ps1 -Verbose -Server mail-ex21 -StatusOnly

7.2   Oppdaterte tjenere

Følgende tjenere skal være oppdatert:

  • mail-extest16
  • mail-extest17
  • mail-testmgt2
  • mail-exmgmt02
  • mail-ex21
  • mail-ex22
  • mail-ex23
  • mail-ex24
  • mail-ex25
  • mail-ex31
  • mail-ex32
  • mail-ex33
  • mail-ex34
  • mail-ex35