5ain7 ga11 . CH || i7-l3ak5. CH || g07r007.CH

Exchange 2013

Exchange 2010 – ADFS – WAP 2012 R2 (TMG ReverseProxy Replacement)

by on Feb.17, 2015, under ADFS, Exchange 2010, Exchange 2013, Exchange Server, Knowledgebase, Server-Plattformen, TMG 2010, Windows Webapplication Proxy

Microsoft hat am 12. September 2012 entschieden, den Thread Management Gateway einzustellen. Jetzt müssen Alternativen im Bereich des Reverse Proxies her. Einige Anbieter buhlen um die Vorherrschaft in diesem Segment. Firewall Hersteller via Sophos, Barracuda und Citrix mit dem Netscaler mischen in diesem Segment ebenfalls mit. Möchte man jedoch der Microsoft-Linie treu  bleiben, so bleibt einem nur die Möglichkeit, das Web Application Proxy Feature des Server 2012 R2 einzusetzen.

 

Hier darum ein Step-by-Step Guide auf der Cloud-Werkstatt…

 

Rahmenbedingungen / Ausgangslage

  • 1 x Windows 2008 Domänencontroller (bestehend) => itc.local
  • 1x Windows 2012 R2 Domänencontroller inkl ADFS Rolle (neu)
  • 1x Exchange 2010 SP3 Rollup 8 (bestehend)
  • 1x Windows Server 2012 R2 als Reverse Proxy (neu)
  • Split Scope DNS Konfiguration mit SSL Wildcard (in-the-cloud.ch)
  • AutoDiscover funktionsfähig
  • sämtliche Server up to date (erspart viele Kindenkrankheiten)

Summary

 

Hostnames und IPs

  • TESTVS01-MHU – 2008 R2 DC
  • TESTVS02-MHU – 2008 R2 & Exchange 2010 SP3+
  • TESTVS03-MHU – 2012 R2 DC & ADFS
  • TESTVS04-MHU – 2012 R2 WAP (normalerweise in OPT Zone, war im Testlab aber nicht möglich)

DNS

 

 

DNS ScplitScope Records

DNS

  • autodiscover.in-the-cloud.ch =>für AutoDiscover
  • mail.in-the-cloud.ch =>  nur für SMTP Traffic (spielt hier keine Rolle)
  • owa.in-the-cloud.ch => OWA, EAS, ECP
  • sts.in-the-cloud.ch => Security Token Service, URL für ADFS

 

Installation

ADFS Server in Betrieb nehmen

1. via Powershell <Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)> hinzufügen

RootKey

 

2. ADFS Verbundsdienste installieren

ADFS1

3. Konfiguration nach Bereitstellung aktivieren

ADFS2

4. mit AD DS Verbinden (ein Domänenadmin)

ADFS3

5. Diensteigenschaften angeben

ADFS4

 

  • SSL Wildcard importieren
  • Verbunddienstname: sts.in-the-cloud.ch
  • Anzeigename: frei wählbar

6. Dienstkonto angeben

ADFS5

  • Ich nehme hier den gleichen Serviceuser
  • ein gruppenverwaltetet Dienstkonto ist IMHO nur mit DFL 2012 R2 möglich

7. Datenbank

ADFS6

  • Fürs Testlab genügt die Windows DB
  • Installation abschliessen

8. ADFS MMC starten und Konfiguration anpassen

ADFSk1

  • Verbunddiensteigenschaften bearbeiten…

ADFSk2

  • Settings überprüfen
    • Verbunddienstname: sts.in-the-cloud.ch
    • Bezeichner des Verbunddienstes: http://sts.in-the-cloud.ch/adfs/services/trust

 

“Ansprüche nicht unterstützender Vertauensstellungen….” hinzufügen

ADFSk5

 

Anzeigename

ADFSk4

  • Name frei wählbar (ist für Exchange 2010 und Ex 2013 gleich)

Bezeichner eingeben

ADFSk6

  • https://owa.in-the-cloud.ch/adfs/services/trust

 

Mehrstufige Authentifizierung

ADFSk7

  • Jetzt keine Einstellungen für die Mehrstufige Authentifizierung konfigurieren…

Assistent zum Hinzufügen einer Ausstellungs-Authorisierungs-Anspruchsregel

ADFSk8

 

  • Benutzer den Zugriff auf Grundlage…gewähren…
  • Allen Benutzer Zugriff gewähren

ADFSk9

 

  • Konfiguration abschliessen

 

ADFS Installation testen

https://sts.in-the-cloud.ch/adfs/ls/IdpInitiatedSignon.aspx$

eingeben. Hier sollte die ADFS Anmeldemaske erscheinen. Die Creds eingeben…

ADFSk10

  • Es sollte die Meldung kommen: “Sie sind angemeldet”

 

WAP Server in Betrieb nehmen

  • Als erstes sollte das SSL Wildcard im lokalen Computer Konto importiert werden

 

Remotezugriffdienste mit Web Anwendungsproxy installieren

WAP1

WAP2

Nach der Grundinstallation den Assistent für den Webanwendungsproxy starten

WAP3

 

Verbundserver

WAP4

  • Name des Verbunddienstes => sts.in-the-cloud.ch
  • Creds angeben, dann auf weiter
  • zuvor importiertes SSL Zertifikat wählen

Die Grundinstallation ist jetzt abgeschlossen. Anschliessend die WAP Konsole starten.

WAP5

  • Der WAP sollte jetzt voll funktionsfähig sein.

 

Remotzugriffsverwaltung starten und Exchange Dienst veröffentlichen

ECP und OWA (mit ADFS)

WAPr1

WAPr2

 

  • Vorauthentisierung => ADFS wählen

 

vertrauende Seite

WAPr3

  • selbst erstellte Exchange 2010/2013 ADFS Page wählen

Veröffentlichungseinstellungen

WAPr4

 

  • Name => frei wählbar => Exchange 2013 OWA
  • Zertifikat: importiertes Wildcard wählen
  • Externe URL & URL Backend Server => https://owa.in-the-cloud.ch/owa/ (Wichtig / am Schluss nicht vergessen)
  • Dienstprinzipialname des Backendservers = > http/owa.in-the-cloud.ch (Schreibweise beachten!!)
    • den SPN müssen wir noch registrieren…folgt

==> /ECP genau gleich veröffentlichen!!

  • https://owa.in-the-cloud.ch/ecp/
  • http/owa.in-the-cloud.ch

 

AutoDiscover, EAS, OAB und RPC via Passtrough

 

WAPr5

Die Passtrough Regeln werden nach folgendem Schema aktiviert:

WAPr6

 

 

Achtung : Exchange 2013 und Exchange 2010 unterscheiden sich hier :

 

Ex 2010 => https://owa.in-the-cloud.ch/Microsoft-Server-ActiveSync/

Ex2013 => https://owa.in-the-cloud.ch/Exchange-Server-ActiveSync/

 

Folgende Regeln sollten vorhanden sein:

WAPr7

 

Auszug aus: <get-Webapplicationproxyapplication | fl > output.txt>

Get-WebApplicationProxyapplication

 

Hier noch der Feinschliff im AD, damit der SPN auch funktioniert….

SPN Record im AD hinzufügen

Die erweiterten Attribute des Exchange AD Objektes öffnen und unter

“ServicePrincipalName”

HTTP/owa.in-the-cloud.ch” hinzufügen

 

SPN1

Dann aufs WAP Server Computerkonto wechseln

Delegierung auf WAP Server Objekt

SPN2

  • Anschliessend auf dem WAP Server AD Objekt die Delegierung auf den erstellten SPN aktivieren

Letzter Schritt….Exchange Server anpassen

auf Exchange 2010

auf dem CAS Server Authentifizierung für OWA und ECP anpassen auf “integrierte Windows Authentifzierung”

Exchange

Exchange2

IIS reset und GO!!!

https://owa.in-the-cloud.ch/owa sollte jetzt die neue Anmeldemaske vorweisen..

test1

nach dem Login erscheint dann das bekannt Fenster..

test2

 

DONE!!

 

 

Troubleshooting EAS mit Android Clients

Ich hatte noch das Problem, dass Android Clients nicht synchen konnten. Das Problem liegt an der SNI (Server Name Indication” des IIS 8. Android Clients haben Probleme damit.

Folgendes schafft Abhilfe ( in Netz gefunden)

http://blog.kloud.com.au/tag/web-application-proxy/

</SNIP>

webtroubs

<SNIP/>

Finding the solution took a lot of searching. This TechNet blog Server Name Indication (SNI) with IIS 8 (Windows Server 2012) pointed me in the right direction when talking about how IIS 8 has a way to add a legacy SSL binding to support non-SNI compliant clients. Web Application Proxy however is not based on IIS. That blog mentioned using netsh to view the HTTP SSL bindings:

<netsh http show sslcert>

  • Appid und Hash von owa.in-the-cloud.ch notieren..

 

SNI

The MSDN article How to: Configure a Port with an SSL Certificate showed how to add a new binding. The trick is to add an IP:port binding in addition to the Hostname:port which acts as a legacy non-SNI binding. As all of the WAP applications have the same certificate and Application ID, I reused those and created the new binding:

 

Lösung

<netsh http add sslcert ipport=0.0.0.0:443 certhash= 428b73e7d5e863b438fb547b133f3bda7a9daa1b appid={f955c070-e044-456c-ac00-e9e4275b3f04}>

 

SNI2

 

 

 

 

 

 

Leave a Comment more...

Exchange 2010/2013 mit ADFS, WAP Server 2012 R2 und Android Devices

by on Feb.17, 2015, under Exchange 2010, Exchange 2013, Exchange Server, Knowledgebase, Server-Plattformen, Windows Webapplication Proxy

Troubleshooting EAS mit Android Clients

Ich hatte noch das Problem, dass Android Clients nicht synchen konnten über WAP 2012 R2 mit ADFS. Das Problem liegt an der SNI (Server Name Indication” des IIS 8. Android Clients haben Probleme damit.

Folgendes schafft Abhilfe ( in Netz gefunden)

http://blog.kloud.com.au/tag/web-application-proxy/

</SNIP>

webtroubs

<SNIP/>

Finding the solution took a lot of searching. This TechNet blog Server Name Indication (SNI) with IIS 8 (Windows Server 2012) pointed me in the right direction when talking about how IIS 8 has a way to add a legacy SSL binding to support non-SNI compliant clients. Web Application Proxy however is not based on IIS. That blog mentioned using netsh to view the HTTP SSL bindings:

<netsh http show sslcert>

  • Appid und Hash von owa.in-the-cloud.ch notieren..

 

SNI

The MSDN article How to: Configure a Port with an SSL Certificate showed how to add a new binding. The trick is to add an IP:port binding in addition to the Hostname:port which acts as a legacy non-SNI binding. As all of the WAP applications have the same certificate and Application ID, I reused those and created the new binding:

 

Lösung

<netsh http add sslcert ipport=0.0.0.0:443 certhash= 428b73e7d5e863b438fb547b133f3bda7a9daa1b appid={f955c070-e044-456c-ac00-e9e4275b3f04}>

 

SNI2

 

 

 

 

 

 

Leave a Comment more...

Outlook ist Offline nach fehlgeschlagenem CU7 Update des Exchange 2013 – Maintenance Mode

by on Feb.09, 2015, under Exchange 2013, Exchange Server, Knowledgebase

Ich hatte folgendes Szenario. Ich wollte einen Exchange 2013 Server mit CU6 auf den neusten Stand bringen und dann auf CU7 updaten. Das Update schlug fehl…das Update GUI ist einfach verschwunden. Sämtliche Dienste waren deaktiviert. Nach einem Reboot konnte man die Dienste wieder manuell aktivieren, Outlook blieb jedoch offline. Fehlermeldungen gab es keine. Selbst ein Restore einer vorherigen Version vor dem Updaet brachte den Client nicht online.

Schuld daran ist der Exchange 2013 Maintenance Mode. Das Update setzte den Exchange in den Maintenace Status. Dieses Status wird im Active Directory und in der lokalen Registry publiziert.

ADStore

 

RegStore

 

Darum bringt folglich ein Restore das Outlook auch nicht wieder online.

Mit folgenden Befehl kann man den Status checken:

<Get-ServerComponentState –Identity SERVERNAME>

In meinem Fall waren hier sämtliche Komponenten “inaktiv”.

CompState

 

Mit folgenden Befehl kann man die Komponenten wieder reaktivieren:

<Set-ServerComponentState SERVER1 -Component ServerWideOffline -State Active -Requester Maintenance>

 

Dann braucht es noch folgenden Befehl um die Transport Queue wieder zu aktivieren:

<Set-ServerComponentState SERVER1 -Component HubTransport -State Active -Requester Maintenance>

Nach einem Reboot war Outlook war wieder online. Heureka…jetzt fehlt nur noch Part 2…warum das Update abgebrochen ist…dies wir ein weiterer Thread.

Der Maintenance Mode kann übrigends via:

<Set-ServerComponentState MBX1 -Component HubTransport -State Draining -Requester Maintenance>

aktiviert werden.

 

Leave a Comment more...

Exchange Receive Connector kopieren

by on Nov.10, 2014, under Exchange 2010, Exchange 2013, Exchange Server, Knowledgebase

leicht gemacht mit:

<New-ReceiveConnector “my connector” -Server CAS2 -Bindings 0.0.0.0:25 -RemoteIPRanges ( Get-ReceiveConnector “CAS1\my connector” ).RemoteIPRanges>

kopiert in diesem Fall die Remote IP Ranges….

Leave a Comment more...

Exchange 2003 Server lässt sich nicht deinstallieren

by on Jul.11, 2014, under Exchange 2013, Knowledgebase, Server-Plattformen

Bei der Deinstallation eines Exchange 2003 Servers nach einer Migration war bei mir folgende Meldung aufgetaucht:

<Die Komponente “Microsoft Exchange Dienste für Messaging und Collaboration” kann nicht der Aktion “Entfernen” zugewiesen werden. Grund:
– Ein oder mehrere Benutzer verwenden aktuell einen Postfachspeicher auf diesem Server. Diese Benutzer müssen in einen Postfachspeicher auf einem anderen Server verschoben oder E-Mail-deaktiviert werden, bevor dieser Server deinstalliert werden kann>

DeError1Zuerst mal checken, ob die Datenbanken auf dem Ex2003 auch wirklich gelöscht wurden. Ist dies der Fall, so schwirren noch Exchange 2003 AD Attribute rum. Die können folgendermassen gefunden werden:

Die AD Search Engine starten mit folgendem Filter:

 

DeError2Es werden jetzt alle Objekte aufgelistet, welche noch Exchange 2003 Attribute besitzten. Rechte Maustaste auf das Objekt => Exchange Aufgaben und die Attribute entfernen. Danach sollte die Deinstallationsroutine keine Meldung mehr bringen.

DeError3

Leave a Comment more...

nice2know: SMTP Responde Codes

by on Jul.02, 2014, under Exchange 2007, Exchange 2010, Exchange 2013, Exchange Server, Knowledgebase, Kommunikation, Server-Plattformen

SMTP ERROR CODES

Here are the most common codes:

2xx Request ok. Go ahead.

220 Mail service is running (ESMTP ready).

221 2.0.0 Closing connection (Mail received successfully, Goodbye).

250 2.0.0 Message accepted for delivery

250 2.1.0 Sender e-mail address ok.

250 2.1.5 Recipient e-mail address ok.

3xx Request ok, but more input is needed to complete the action successfully.

354 Enter mail, end with CRLF.CRLF

4xx Temporary error, try again.

421 4.2.1 The service is not available and the connection will be closed.

441 4.4.1 Cannot connect to remote host (host has DNS entry, but can’t be connected to).

450 4.5.0 Mailbox temporarily unavailable.

451 4.1.8 Sender e-mail address domain does not resolve temporarily.

451 4.7.1 Greylisting in action, please come back later.

454 4.7.0 TLS not available due to local problem. Please try again later.

5xx Permanent error. Don’t try again.

500 5.5.1 Syntax error, command unrecognized.

503 5.5.0 Sender e-mail address already specified.

503 5.5.1 Need MAIL before RCPT.

544 5.4.4 Host not found (not in DNS).

550 5.1.1 Mailbox does not exist.

550 5.1.3 Bad e-mail address syntax.

550 5.7.0 Your IP address is in a blacklist.

553 5.1.8 Sender e-mail address domain does not exist.

554 5.7.1 Relaying denied

Leave a Comment more...

Exchange 2013 Installation – restart pending

by on Jun.16, 2014, under Exchange 2010, Exchange 2013, Exchange Server, Knowledgebase, Server-Plattformen

Möchte man einen Exchange 2013 installieren, kann folgende Meldung auftauchen:

<There is a pending reboot from a previous installation of Windows Server role or feature. Please restart the computer and then run Setup again. >

Dieses Fehler taucht schon seit sicherlich Exchange 2010 häufig auf. Folgendes findet man auf dem Technet:

PROBLEM

The Exchange Server 2013 setup fails at the readiness checks with the following error:

There is a pending reboot from a previous installation of Windows Server role or feature. Please restart the computer and then run Setup again.

The problem remains even after several restart attempts and setup is not able to continue.

CAUSE

The Exchange Server Setup reads several registry keys to determine whether a system restart is required after a previous installation of a server component, application or hotfix.

If there is anything wrong there, the Exchange setup will report that a restart is needed and will not continue.

 

In regards to those checks, the following  3 cases are possible:

 

CASE 1

The registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\UpdateExeVolatile  does not exist. This is a typical situation on a fresh Windows Server 2012 installation.

SOLUTION

Using registry editor, create the key and set its value to 0.

 

CASE 2

The registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\UpdateExeVolatile exists, but the value is set to a value other than 0.

SOLUTION

Using the registry editor set the value of the UpdateExeVolatile to 0.

CASE 3

The registriy key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations contains any values.

SOLUTION

Delete any values existing under the PendingFileRenameOperations key.

Leave a Comment more...

Wie bringe ich den”System.String[]” aus einer Get-MessageTrackingLog CSV Auswertung raus?

by on Jun.14, 2013, under Exchange 2010, Exchange 2013, Exchange Server, Knowledgebase, Server-Plattformen

Get-MessageTrackingLog bietet einem beim Exchange 2010 die Möglichkeit, den Emailverlauf zu tracken. Damit die Sache übersichtlich wird, kann man es in ein CSV verpacken.

z.B. <Get-MessageTrackingLog -ResultSize -Start “01/01/2013” | Select * | Export-Csv D:\Temp\output.csv -NoTypeInformation>

Das Problem ist nur, dass die Felder Recipients und RecipientStatus leer bleiben und nur mit “System.String[]” ausgefüllt werden

Folgendes schafft Abhilfe:

<Get-MessageTrackingLog -ResultSize -Start “01/01/2013” | Select {$_.Recipients}, {$_.RecipientStatus}, * | Export-Csv D:\Temp\output.csv -NoTypeInformation>

Leave a Comment more...

Exchange 2010 – relay connector für externe Emails

by on Apr.23, 2013, under Exchange 2007, Exchange 2010, Exchange 2013, Exchange Server, Knowledgebase, Server-Plattformen

Bei den Exchange Relay Connectoren ist nicht immer so einfach ersichtlich, ob es erlaubt ist, nach Extern zu senden.

Die Berechtigungen können mit:

<Get-ReceiveConnector -Identity “CASSERVER\Anonymous Relay” | Get-ADPermission | where {$_.User -like ‘*Anonymous*’} | ft Identity,User,ExtendedRights>

überprüft werden. Eine Auflistung kann wie folgt aussehen:

Identity User ExtendedRights
——– —- ————–
CASSERVER\Anonymous Relay NT AUTHORITY\ANONYMOUS LOGON {ms-Exch-SMTP-Accept-Any-Sender}
CASSERVER\Anonymous Relay NT AUTHORITY\ANONYMOUS LOGON {ms-Exch-Accept-Headers-Routing}
CASSERVER\Anonymous Relay NT AUTHORITY\ANONYMOUS LOGON {ms-Exch-SMTP-Submit}
CASSERVER\Anonymous Relay NT AUTHORITY\ANONYMOUS LOGON {ms-Exch-SMTP-Accept-Authoritative-Domain-Sender}

In diesem Fall fehlt das Recht: “ms-Exch-SMTP-Accept-Any-Recipient”. Emails können z.B. mit diesem Connector nur intern relayed werden.

Die Rechte können wie folgt angepasst werden:

<Get-ReceiveConnector -Identity “CASSERVER\Anonymous Relay” | Add-ADPermission -User “NT AUTHORITY\ANONYMOUS LOGON” -ExtendedRights “ms-Exch-SMTP-Accept-Any-Recipient”>

Bei deutschen Betriebsystemen muss beachtet werden, dass der User wie folgt eingetragen werden muss: NT-AUTORITÄT\ANONYMOUS-ANMELDUNG

 

d.h.

<Get-ReceiveConnector -Identity “CASSERVER\Anonymous Relay” | Add-ADPermission -User “NT-AUTORITÄT\ANONYMOUS-ANMELDUNG” -ExtendedRights “ms-Exch-SMTP-Accept-Any-Recipient”>

 

 

Leave a Comment more...

Blogroll

A few highly recommended websites...