Exchange Server 2016 – CU21 Probleme nach Update

Nach dem Update auf CU21 und Deinstalliertem Virenscanner, traten folgende Probleme auf:

Fehler 1

Scheinbar wurden einige dll´s für Transport Agents nicht mehr gefunden und daher konnte der Exchange Transport Dienst nicht gestartet werden.

Mir folgendem Befehl können die Transport Agents auslesen lesen:

Get-TransportAgent

Hier wurden dann 2 veraltete Transport Agents gefunden, die gelöscht werden müssen:

Get-TransportAgent "ESET Filtering Agent" | Uninstall-Transport Agent

Nachdem beide Transport Agents gelöscht waren, konnte der Exchange Transport Dienst wieder normal gestartet werden.

Fehler 2

Der IIS, bzw. die Standardwebseite, konnte nicht gestartet werden. Folgende Fehlermeldung erschien:

Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird

Scheinbar wird Port 80 / 443 von einem anderen Prozess bereits benutzt. Mit folgendem Befehl kann man sich alle Dienste anzeigen lassen, welche die Ports verwendet.

netstat –anb | select-string –Context 1 –Simplematch ":80"

Wie man hier erkennen kann, blockiert die „tomcat9.exe“ den Port 80. Also habe ich den Tomcat Dienst auf „Deaktiviert2“ gesetzt. Welchen Zweck auch immer dieser auf einem Exchange hatte.

Exchange Server 2010 – 2016 PowerShell Cmdlets

In den nächsten Tagen werde ich die Liste der interessanten Exchange Server 2010 – 2016 Powershell Cmdlets immer erweitern.

Ich habe hier eine Liste der interessantesten Exchange Server 2010 – 2016 PowerShell Cmdlets erstellt, beschrieben und mit Screenshots belegt.

Get-ExchangeServerAccessLicense

Es wird eine Tabelle mit den Lizenzen der Server und der Cals angezeigt.

Get-ExchangeServer

Es wird eine Liste der Exchange Server der Organisation generiert.

Get-HealthReport
Get-ServerHealth

Mit diesem Befehl lässt sich der Zustand der Exchange Umgebung analysieren.

Beispiele:

  • Get-HealthReport -Server ServerName
  • Get-HealthReport -GroupSize
  • Get-HealthReport -HealthSet
  • Get-ServerHealth -Server Servername

Get-PartnerApplication

Ab Exchange Server 2010 können Partner Aplikationen genutzt werden, die mit diesem Befehl ausgegeben werden. Beispiel: Lync Online, Sharepoint, Office Web Apps Server, …

Get-MobileDevice

Mit diesem Befehl wird eine Liste mit allen angebundenen Smartphones / Tablets / Computers per Active Sync generiert.

Redirect-Message -UrsprungsServer - ZielServer

Dieser Befehl zieht Nachrichten von einer Server Queue zu einem anderen Server um. Wenn es Probleme mit einem Server gibt, können so E-Mails dennoch zugestellt werden.

Get-ExchangeServer|ft Name,Edition,AdminDisplayVersion

Der Befehl generiert eine Tabelle aller Exchange Server mit deren Version. Diese kann man dann mit der unten stehenden Tabelle abgleichen und so das Patchlevel herausfinden.

Exchange 2010 Version
Microsoft Exchange Server 2010 14.00.0639.021
Microsoft Exchange Server 2010 RU1 14.00.0682.1
Microsoft Exchange Server 2010 RU2 14.00.0689.0
Microsoft Exchange Server 2010 RU3 14.00.0694.0
Microsoft Exchange Server 2010 RU4 14.00.0702.1
Microsoft Exchange Server 2010 RU5 14.00.0726.000
Microsoft Exchange Server 2010 SP1 14.01.0218.015
Microsoft Exchange Server 2010 SP1 RU1 14.01.0255.02
Microsoft Exchange Server 2010 SP1 RU2 14.01.0270.001
Microsoft Exchange Server 2010 SP1 RU3 14.01.0289.003
Microsoft Exchange Server 2010 SP1 RU3 v2 14.01.0289.00?
Microsoft Exchange Server 2010 SP1 RU3 v3 14.01.0289.007
Microsoft Exchange Server 2010 SP1 RU4 14.01.0323.001
Microsoft Exchange Server 2010 SP1 RU4 v2 14.01.0323.006
Microsoft Exchange Server 2010 SP1 RU5 14.01.0339.001
Microsoft Exchange Server 2010 SP1 RU6 14.01.0355.002
Microsoft Exchange Server 2010 SP1 RU7 14.01.0421.000
Microsoft Exchange Server 2010 SP1 RU7 v2 14.01.0421.002
Microsoft Exchange Server 2010 SP1 RU7 v3 14.01.0421.003
Microsoft Exchange Server 2010 SP1 RU8 14.01.0438.000
Microsoft Exchange Server 2010 SP2 14.02.0247.005
Microsoft Exchange Server 2010 SP2 RU1 14.02.0283.003
Microsoft Exchange Server 2010 SP2 RU2 14.02.0298.004
Microsoft Exchange Server 2010 SP2 RU3 14.02.0309.002
Microsoft Exchange Server 2010 SP2 RU4 14.02.0318.002
Microsoft Exchange Server 2010 SP2 RU4 v2 14.02.0318.004
Microsoft Exchange Server 2010 SP2 RU5 14.02.0328.005
Microsoft Exchange Server 2010 SP2 RU5 v2 14.02.0328.010
Microsoft Exchange Server 2010 SP2 RU6 14.02.0342.003
Microsoft Exchange Server 2010 SP3 14.03.0123.004
Microsoft Exchange Server 2010 SP3 RU1 14.03.0146.000
Microsoft Exchange Server 2010 SP3 RU2 14.03.0158.001
Microsoft Exchange Server 2010 SP3 RU3 14.03.0169.001
Microsoft Exchange Server 2010 SP3 RU4 14.03.174.001
Microsoft Exchange Server 2010 SP3 RU5 14.03.181.006
Microsoft Exchange Server 2010 SP3 RU6 14.03.195.001
Microsoft Exchange Server 2010 SP3 RU7 14.03.210.002
Microsoft Exchange Server 2010 SP3 RU8 14.03.224.001
Microsoft Exchange Server 2010 SP3 RU8 v2 14.03.224.002
Microsoft Exchange Server 2010 SP3 RU9 14.03.235.001
Microsoft Exchange Server 2010 SP3 RU10 14.03.0248.002
Microsoft Exchange Server 2010 SP3 RU11 14.03.0266.001
Microsoft Exchange Server 2010 SP3 RU12 14.03.0279.002
Microsoft Exchange Server 2010 SP3 RU13 14.03.0294.000
Microsoft Exchange Server 2010 SP3 RU14 14.03.0301.000
Microsoft Exchange Server 2010 SP3 RU15 14.03.0319.002
Microsoft Exchange Server 2010 SP3 RU16 14.03.0339.000
Microsoft Exchange Server 2010 SP3 RU17 14.03.0352.000
Microsoft Exchange Server 2010 SP3 RU18 14.03.0361.001
Exchange 2013 Version
Microsoft Exchange Server 2013 Preview 15.00.0466.013
Microsoft Exchange Server 2013 RTM 15.00.0516.032
Microsoft Exchange Server 2013 CU1 15.00.0620.029
Microsoft Exchange Server 2013 CU2 15.00.0712.022
Microsoft Exchange Server 2013 CU2 v2 15.00.0712.024
Microsoft Exchange Server 2013 CU3 15.00.0775.038
Microsoft Exchange Server 2013 SP1 (CU4) 15.00.0847.032
Microsoft Exchange Server 2013 CU5 15.00.0913.022
Microsoft Exchange Server 2013 CU6 15.00.0995.029
Microsoft Exchange Server 2013 CU7 15.00.1044.025
Microsoft Exchange Server 2013 CU8 15.00.1076.009
Microsoft Exchange Server 2013 CU9 15.00.1104.005
Microsoft Exchange Server 2013 CU10 15.00.1130.007
Microsoft Exchange Server 2013 CU11 15.00.1156.006
Microsoft Exchange Server 2013 CU12 15.00.1178.004
Microsoft Exchange Server 2013 CU13 15.00.1210.003
Microsoft Exchange Server 2013 CU14 15.00.1236.003
Microsoft Exchange Server 2013 CU15 15.00.1263.005
Microsoft Exchange Server 2013 CU16 15.00.1293.002
Microsoft Exchange Server 2013 CU17 15.00.1320.004
Microsoft Exchange Server 2013 CU18 15.00.1347.002
Exchange 2016 Version
Microsoft Exchange Server 2016 Preview 15.01.0225.017
Microsoft Exchange Server 2016 RTM 15.01.0225.042
Microsoft Exchange Server 2016 CU1 15.01.0396.030
Microsoft Exchange Server 2016 CU2 15.01.0466.034
Microsoft Exchange Server 2016 CU3 15.01.0544.027
Microsoft Exchange Server 2016 CU4 15.01.0669.032
Microsoft Exchange Server 2016 CU5 15.01.0845.034
Microsoft Exchange Server 2016 CU6 15.01.1034.026
Microsoft Exchange Server 2016 CU7 15.01.1261.035

Exchange / IIS Log-Dateien regelmäßig löschen

Die Exchange Server und IIS Log-Dateien nehmen sehr schnell extreme Größen an. Daher ist es sinnvoll diese regelmäßig zu löschen. Hierfür habe ich ein Script geschrieben, dass alle Log-Dateien löscht, die älter als 3 Tage sind.

Get-ChildItem -Path "C:\Program Files\Microsoft\Exchange Server\V15\Logging" -Recurse *.log -force  | where {$_.lastwritetime -lt (get-date).adddays(-3)} | Remove-Item -force
Get-ChildItem -Path "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs" -Recurse *.log -force  | where {$_.lastwritetime -lt (get-date).adddays(-3)} | Remove-Item -force
Get-ChildItem -Path "E:\Logs IIS" -Recurse *.log -force  | where {$_.lastwritetime -lt (get-date).adddays(-3)} | Remove-Item -force

Die erste beiden Zeilen geben den Pfad und das Dateialter für die Exchange 2013 Log-Dateien an. Die dritte Zeile tut das gleiche für die ISS Log-Dateien, die bei mir in einem benutzerdefinierten Pfad liegen.

Dieses Script kann man dann täglich mit dem Aufgabenplaner ausführen und somit den Speicherplatz für Log-Dateien minimal halten.

Exchange Server 2003 – Migration der Adresslisten auf Exchange 2010

Damit die Exchange Adresslisten kompatibel mit der neuen Exchange Server Version sind, müssen die Recipient Filter angepasst werden:

Alle Benutzer

Set-AddressList “Alle Benutzer” –IncludedRecipients MailboxUsers

v

Alle Gruppen

Set-AddressList “Alle Gruppen” –IncludedRecipients Mailgroups

Alle Kontakte

Set-AddressList “Alle Kontakte” –IncludedRecipients MailContacts

Globale Standardadressliste

Set-GlobalAddressList "Globale Standardadressliste" -RecipientFilter {(Alias -ne $null -and (ObjectClass -eq 'user' -or ObjectClass -eq 'contact' -or ObjectClass -eq 'msExchSystemMailbox' -or ObjectClass -eq 'msExchDynamicDistributionList' -or ObjectClass -eq 'group' -or ObjectClass -eq 'publicFolder'))}

Öffentliche Ordner Adressliste

Folgende Befehl, der in vielen Anleitungen vorkommt, funktioniert nicht:

Set-AddressList -Name “Public Folder” -RecipientFilter {(RecipientType -eq ‘PublicFolder’)} 

Stattdessen sollte dieser Befehl verwendet werden:

Set-AddressList "Öffentliche Ordner" -RecipientFilter {Alias -ne $null -and ObjectCategory -like 'publicFolder'}

Exchange Server 2003 – Migration der Hub-Transport Rolle auf Exchange 2010

Bei einer Exchange Server 2003 Migratione auf Exchange Server 2010 gab es Probleme bei der Migration der Hub-Transport Rolle. Daher nehme ich das zum Anlass eine Anleitung zu schreiben.

Routing Group Connector

Wenn die Exchange Server 2010 Installation feststellt das eine alte Exchange 2003 Organisation existiert, wird automatisch ein Routing Group Connector erstellt, der das Routing der E-Mails zwischen den verschiedenen Exchange Server Versionen ermöglicht. Sollte dies nicht automatisch geschehen, kann dies wie folgt gemacht werden:

New-RoutingGroupConnector -Name "Migrations Connector" -SourceTransportServers "exchange2003.contoso.com" -TargetTransportServers "exchange2010.contoso.com" -Cost 10 -Bidirectional $true

Mit diesem Befehl werden zwei Connectoren erstellt. Dies geschieht durch den Paramter „BiDirectional“. Einmal in die eine und einmal in die andere Richtung.

Empfangs Connector

Damit die Exchange 2003 Organisation E-Mails über den eben erstellten Routing Group Connector senden kann, muss ein passender Empfangs Connector erstellt werden. Dieser wird bvei der Installation automatisch angelegt. Es sollte ein zusätzlicher Connector erstellt werden, der die IP Adresse der alten Exchange Server 2003 beinhaltet und das Recht „Anonym“ erhält.

New-ReceiveConnector -Name "Exchange 2003" -Usage Custom -PermissionGroups AnonymousUsers -Bindings "IP des Exchange 2010 Servers:25" -RemoteIpRanges "Exchange Server 2003 IP"

Probleme beim Routing von Exchange 2003 zu Exchange 2010

Wenn die Warteschlagen zum Exchange 2010 Server nicht abgearbeitet werden, sollte überprüft werden, ob der virtuelle SMPT-Connector einen globalen Smarthost benutzt:

exchange 2003 v smtp smart host

Hier sollte nichts konfiguriert sein. Danach sollte das Routing funktionieren.

Öffentliche Ordner migrieren

Um die Öffentlichen Ordner auf einen neuen Server zu verschieben, bzw. die Replikate auf den neuen Servern zusätzlich vorzuhalten, kann man die Exchange Scripte benutzen. Diese liegen auf C:\Program Files\Microsoft\Exchange Server\V14\Scripts

Öffentliche Ordner – Replikationen hinzufügen

Um einen neuen Server zusätzlich zu den alten Servern in der Replikation einzutragen:

Öffentliche Ordner

.\AddReplicaToPFRecursive.ps1 -TopPublicFolder "\" -ServerToAdd "Neuer Exchange Server"

System Ordner

.\AddReplicaToPFRecursive.ps1 -TopPublicFolder "\NON_IPM_Subtree" -ServerToAdd "Neuer Exchange Server"

Öffentliche Ordner – Replikationen verschieben

Um die Repplikationen auf den neuen Server zu verschieben und von dem alten Server zu entfernen:

.\MoveAllReplicas.ps1 -Server "Alter Server" -NewServer "Neuer Exchange Server"

Active Directory – Adressliste generieren

Mit der Powershell kann man sehr einfach, auf Grundlage des Active Directorys, eine Adressliste des Unternehmens generieren. Im folgendem Beispiel werden die Spalten Name, Abteilung, Telefonnummer, Mobiltelefonnummer und E-Mail Adresse ausgelesen, die Mitarbeiter nach Namen sortiert und anschließend als CSV exportiert.

Powershell Beispiel

get-aduser -SearchBase 'ou=Mitarbeiter,Dc=domain,DC=local' -filter 'objectClass -eq "user"' -Properties * | Sort-Object surname | Select-Object name, department, officephone, mobilephone, emailaddress | Export-Csv adressliste.csv

Ergebnis

Active Directory - Adressliste export

Lync Server 2013 – Integration in Outlook WebApp

Der Lync Server 2013 kann in die Outlook WebApp integriert werden. So ist es möglich, nach der Anmeldung in Outlook WebApp, auch Instand Messaging zu nutzen oder seine Kontakte zu verwalten. Dieser Weg funktioniert zwischen Lync 2013 und Exchange 2013 nicht mehr. Hier wurdedas Design grundlegend geändert.

Exchange Server 2010

Vorraussetzungen

Für Lync 2013 steht kein eigenständiger WebServiceProvider zur Verfügung. Daher muss der Vorgänger des OCS 2007 R2 verwendet werden. Dieser wird auch offiziell von Microsoft supportet.

Auf den Exchange CAS Servern müssen einige Pakete/Updates nachinstalliert werden, um die Integration zu unterstützen.

Lync Server 2013

Vertrauenswürdiger Applikations Pool

Damit der Exchange Server mit dem Lync Server „reden“ darf, muss ein Vertrauensverhältnis aufgebaut werden. Hier müssen alle Exchange 2010 CAS Server definiert und der externe Outlook WebApp FQDN konfiguriert werden.

New-CsTrustedApplicationPool -Identity Name.local -ThrottleAsServer $true -TreatAsAuthenticated $true -ComputerFQDN ExchangeServerCAS.local -Site Berlin -Registrar LyncPoolFQDN.local -RequiresReplication $false

Vertrauenswürdige Applikation

Jetzt wird die eigentliche Applikation in ein Vertrauensverhältnis gebracht.

New-CsTrustedApplication -ApplicationId OutlookWebApp -TrustedApplicationPoolFqdn ExchangeServerCAS.local -Port 4789

Topologie für Vertrauensverhältnisse

Nun können die eben getätigten Vertrauensverhältnisse aktiviert werden.

Enable-CsTopology

Konfiguration – Exchange Server 2010

Outlook WebApp – Virtuelles IIS Verzeichnis

Zertifikat

Damit keine erneute Authentifizierung nötig wird muss das Zertifikat, dass auf dem virtuellen OWA Verzeichnis liegt, definiert werden. Dazu muss man die ID auslesen:

Get-ExchangeCertificate | fl serial*,subject,issuer

Zertifikat festlegen

Get-OwaVirtualDirectory -server ServerName | Set-OwaVirtualDirectory -InstantMessagingCertificateThumbprint "Zertifikats ID"

Dies muss für jeden Exchange CAS Server getätigt werden.

Lync Server 2013 angeben

Jetzt muss dem Exchange Server mitgeteilt werden, welchen Pool er für die Integration von Lync benutzten soll.

Get-OwaVirtualDirectory | Set-OwaVirtualDirectory -InstantMessagingServerName LyncPoolFQDN

Instand Messaging Typ definieren

Es kann z.B. auch ein externe MSN oder Yahoo Server definiert werden. Wir integrieren natürlich unseren Lync Server 2013.

Get-OwaVirtualDirectory | Set-OwaVirtualDirectory -InstantMessagingType OCS

Instand Messanging Policy aktivieren

Set-OwaMailboxPolicy -Identity Hypoport -InstantMessagingType OCS

Pfad zur UCWeb.dll anpassen

Durch die Installation des OCS WebServiceProvider wurden alle nötigen Bibliotheken installiert. Die UCWeb.dll muss registriert werden.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MSExchange OWA\InstantMessaging\ImplementationDllPath"="C:\\Program Files\\Microsoft\\Exchange Server\\V14\\ClientAccess\\Owa\\Bin\\Microsoft.Rtc.UCWeb.dll"

Instand Messaging aktivieren

Get-OwaVirtualDirectory | Set-OwaVirtualDirectory -InstantMessagingEnabled $true

Lync 2013 – AutoDiscover und EWS

Lync AutoDiscover und Exchange AutoDiscover müssen von intern und extern richtig konfiguriert sein, damit der Lync 2013 Client alles automatisch konfigurieren kann.

Lync 2013 Client – Lync Autodiscover

Der Lync 2013 Client fragt folgende DNS Records in dieser Reihenfolge ab, um den Lync Server 2013 automatisch einzurichten:

  • lyncdiscover.domain.de Externer AutoDiscover Dienst
  • _sipinternaltls._tcp.domain.de Interne TLS Verbindungen
  • _sipinternal._tcp.domain.de Interne TCP Verbindungen
  • _sip._tls.domain.de Externe TLS Verbindungen
  • sipinternal.domain.de Interner Frontend Pool
  • sip.domain.de Interner Frontend Pool oder externe Edge Server
  • sipexternal.domain.de Externe Edge Server

Lync 2013 Client – Exchange Autodiscover

Der Lync 2013 Client fragt folgende DNS Records in dieser Reihenfolge ab, um Exchange EWS automatisch einzurichten:

  • autodiscover.primäre-exchange-smtp-domain-des-benutzers.de

Lync 2013 Client – Autodiscover Abfrage Fehler

Wenn der DNS A Record für die primäre Exchange SMTP Domain nicht gesetzt ist, kommt folgendes Login-Fenster:

asdasdasdasd

Lync 2013 Client – Autodiscover Fehler im Traffic

Im Netzwerk Traffic sieht man gut wie die Abfrage verläuft:

90ß90ß

Lync 2013 Client – Konfiguration

Danach sollten die Konfigurationinformationen so aussehen:

asd

DNS Splitting

Es empfiehlt sich auf jeden Fall teilweise DNS Splitting zu betreiben.

  • _tcp.sipdomain.de DNS Zone erstellen und SRV Record (_sipinternaltls._tcp.sipdomain.de, _sipinternal._tcp.sipdomain.de, _sip._tcp.sipdomain.de) erstellen auf internen Pool weiterleiten
  • sip.sipdomain.de DNS Zone erstellen und A Record auf internen Pool anlegen
  • lyncdiscoverinternal.sipdomain.de DNS Zone erstellen und A Record auf internen Pool anlegen

Zertifikatswarnungen

Wenn man verschiedene Namespaces hat, wie z.B. domain.local und domain.de, wird eine Zertifikatswernung angezeigt. Die kann man mit diesem Registry Key umgehen:

HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Office\15.0\Lync\TrustModelData

TrustModelData muss in dem Fall den Wert domain.local erhalten, wenn das Zertifikat domain.local ausgestellt ist und die SIP Domäne domain.de heißt.

Lync 2013 – Exchange Server 2010 – EWS Probleme

Im Lync Client kann man kontrollieren, ob die EWS Verbindung zum Exchange erfolgreich hergestellt wurde:

asd

Bei diesem Beispiel war die Verbindung Fehlerhaft.

Problemlösung

Es muss eine neue DNS-Zone erstellt und zwei SRV Records angelegt werden. Diese Zone muss den Namen der externe Domäne haben.

Zonen-Namen: _tcp.hypoport.de

1. SRV Record: _autodiscover._tcp 0 0 443 fqdn des internen Exchange Client Access Server oder Array
2. SRV Record: _sipinternaltls._tcp 0 0 5061 fqdn des internen Lync FrontEnd Servers