Exchange 2016: Die Basiskonfiguration

Die Basiskonfiguration von Exchange 2016 unterscheidet sich nicht viel von der Konfiguration von Exchange 2013. In diesem Artikel gibt es eine kurze Anleitung, die die wesentlichen Punkte abdeckt:

Nach der Installation von Exchange 2016 habe ich es mir angewöhnt zuerst die Datenbank umzubenennen und an ihren Bestimmungsort zu verschieben, dies geschieht via Shell mit den folgenden Befehlen:

Get-MailboxDatabase -Server FWEX2 | Set-MailboxDatabase -Name MBXDB01
Move-DatabasePath MBXDB01 -EdbFilePath c:\MBXDB01\MBXDB01.edb -LogFolderPath c:\MBXDB01

1

Danach kann eine neue akzeptierte Domäne angelegt werden, in meinen Fall wäre das „frankysweb.de“:

2

Damit Postfächer die entsprechenden E-Mail Adressen erhalten, wird als nächstes eine Adressrichtlinie erstellt:

3

Wie die E-Mail Adressen aufgebaut werden sollen, lässt sich natürlich frei wählen:

4

5

Nachdem die Richtlinie erstellt wurde, kann sie angewendet werden

6

Damit E-Mail verschickt werden können, muss ein Sendeconnector angelegt werden:

7

Das es sich hierbei um den Connector für das Senden von Mails zu externen Empfängern handelt, wird der Typ „Internet“ ausgewählt:

8

Im nächsten Dialog lässt sich wählen wie die Mails verschickt werden, entweder direkt an die zuständigen Mailserver (Mit Empfängerdomäne verbundener MX Eintrag) oder über einen Smarthost (Relay beim Provider oder AntiSPAM Gateway des Unternehmens)

9

Es muss immer einen Connector mit dem Adressraum „*“ geben, damit E-Mails zugestellt werden können

10

Zum Schluss noch den oder die Quellserver angeben, die den Connector benutzen

11

Danach die Eigenschaften des Connectors öffnen und noch den HELO Eintrag festlegen. Der Hostname der für den HELO Eintrag verwendet wird, muss auch auf dem Zertifikat vorhanden sein.

12

Jetzt können die virtuellen Verzeichnisse bzw. die Zugriffs-URLs konfiguriert werden, das geschieht am schnellsten via Shell. Ich habe dazu ein kleines Script erstellt. Einfach die ersten 4 Zeilen abändern und ausführen. Da ich DNS-Split Brain nutze unterscheidet sich bei mir interner und externer Hostname nicht:

$servername = "FWEX2"
$internalhostname = "outlook.frankysweb.de"
$externalhostname = "outlook.frankysweb.de"
$autodiscoverhostname = "autodiscover.frankysweb.de"

$owainturl = "https://" + "$internalhostname" + "/owa"
$owaexturl = "https://" + "$externalhostname" + "/owa"
$ecpinturl = "https://" + "$internalhostname" + "/ecp"
$ecpexturl = "https://" + "$externalhostname" + "/ecp"
$ewsinturl = "https://" + "$internalhostname" + "/EWS/Exchange.asmx"
$ewsexturl = "https://" + "$externalhostname" + "/EWS/Exchange.asmx"
$easinturl = "https://" + "$internalhostname" + "/Microsoft-Server-ActiveSync"
$easexturl = "https://" + "$externalhostname" + "/Microsoft-Server-ActiveSync"
$oabinturl = "https://" + "$internalhostname" + "/OAB"
$oabexturl = "https://" + "$externalhostname" + "/OAB"
$mapiinturl = "https://" + "$internalhostname" + "/mapi"
$mapiexturl = "https://" + "$externalhostname" + "/mapi"
$aduri = "https://" + "$autodiscoverhostname" + "/Autodiscover/Autodiscover.xml"

Get-OwaVirtualDirectory -Server $servername | Set-OwaVirtualDirectory -internalurl $owainturl -externalurl $owaexturl
Get-EcpVirtualDirectory -server $servername | Set-EcpVirtualDirectory -internalurl $ecpinturl -externalurl $ecpexturl
Get-WebServicesVirtualDirectory -server $servername | Set-WebServicesVirtualDirectory -internalurl $ewsinturl -externalurl $ewsexturl
Get-ActiveSyncVirtualDirectory -Server $servername  | Set-ActiveSyncVirtualDirectory -internalurl $easinturl -externalurl $easexturl
Get-OabVirtualDirectory -Server $servername | Set-OabVirtualDirectory -internalurl $oabinturl -externalurl $oabexturl
Get-MapiVirtualDirectory -Server $servername | Set-MapiVirtualDirectory -externalurl $mapiexturl -internalurl $mapiinturl
Get-OutlookAnywhere -Server $servername | Set-OutlookAnywhere -externalhostname $externalhostname -internalhostname $internalhostname -ExternalClientsRequireSsl:$true -InternalClientsRequireSsl:$true -ExternalClientAuthenticationMethod 'Negotiate' 
Get-ClientAccessServer $servername | Set-ClientAccessServer -AutoDiscoverServiceInternalUri $aduri

Get-OwaVirtualDirectory -Server $servername | fl server,externalurl,internalurl
Get-EcpVirtualDirectory -server $servername | fl server,externalurl,internalurl
Get-WebServicesVirtualDirectory -server $servername | fl server,externalurl,internalurl
Get-ActiveSyncVirtualDirectory -Server $servername | fl server,externalurl,internalurl
Get-OabVirtualDirectory -Server $servername | fl server,externalurl,internalurl
Get-MapiVirtualDirectory -Server $servername | fl server,externalurl,internalurl
Get-OutlookAnywhere -Server $servername | fl servername,ExternalHostname,InternalHostname
Get-ClientAccessServer $servername | fl name,AutoDiscoverServiceInternalUri

Nachdem das Script ausgeführt wurde, sind alle virtuellen Verzeichnisse entsprechend konfiguriert:

14

13

15

Jetzt müssen nur noch das Zertifikat konfiguriert werden. Das Zertifikat wird genauso wie bei Exchange 2013 erstellt. Der Vorgang ist hier ausführlich beschrieben:

https://www.frankysweb.de/exchange-2013-zertifikatsanforderung-fr-ffentliche-ca-erstellen
https://www.frankysweb.de/exchange-2013-san-zertifikat-und-interne-zertifizierungsstelle-ca

16

20 Gedanken zu “Exchange 2016: Die Basiskonfiguration

  1. Mit den Parametern: [/MdbName:] [/DbFilePath:] und [/LogFolderPath:] sparst du dir das verschieben der Datenbanken nach der Installation.

  2. Hey Franky,
    erst einmal Danke für deinen Klasse Blog!
    Kurze Frage zu deinem Script oben, kann ich das genauso auch beim Exchange 2013 einsetzen?
    Gruß und vielen Dank im Voraus!
    Nils

  3. Moin Moin,

    sag mal, ich würde gern einen Sendeconnector an eine feste IP binden… Hast du ne Idee wie sich das umsetzen lässt??

  4. Server steht direkt im Netz und hat 2 feste IPv4 Adressen. Ich habe nur für die eine Adresse einen dem helo Name entsprechenden PTR Record. Ich finde keine Möglichkeit einen Sendeconnector an eben diese Adressen zu binden.

  5. Wieso steht der Server „direkt im Netz“ und hat 2 feste IPv4 Adressen? Ich befürchte du solltest die Konfiguration überdenken.

  6. Hoi Franky
    Besten Dank für deine Anleitung.
    Ich versuche meinen Kalender freizugeben (.ics) für externe Anwendungen, jedoch ohne Erfolg.

    Besten Dank für deine Hilfe.
    Luca

  7. Hallo Franky,

    danke für deine tolle Anleitung. Allerdings habe ich bei diversen Versuchen immer das gleiche Problem bei der Zuweisung des Servers für die Domäne mit externem Zugriff. Hier wird im ECP gar kein auswählbarer Server angezeigt.
    Server – Virtuelle Verzeichnisse – Schraubenschlüssel/Domäne mit externem Zugriff konfigurieren.
    Sobald ich Exchange 2013 nehme geht es, aber unter Exchange 2016 einfach keine Chance.

    Danke und Grüße

    Freddy

  8. Hi Freddy,
    das ist eine Altlast aus Exchange 2013 Zeiten. Du kannst die URLs für alle Verzeichnisse setzen wie im Artikel beschrieben.
    Gruß, Frank

  9. Hallo Frank,

    wir überlegen gerade die Umstellung auf Exchange von einer Fremdlösung. Aktuell haben wir 100 Postfächer mit ca. 1 TB Maildaten. Würdest du in dem Setup ein Loadbalancing Server aufsetzen bzw. die Datenbanken splitten?

    Vielen Dank!

  10. Welche Reihenfolge bei der Filterung sollte eingesetzt werden?
    Bei mir sieht es im Moment so aus:
    RunspaceId : 71de50d9-8ed2-4d2f-b62a-4333d599ca2a
    Enabled : True
    Priority : 1
    TransportAgentFactory : Microsoft.Exchange.MessagingPolicies.TransportRuleAgent.TransportRuleAgentFactory
    AssemblyPath : C:\Program Files\Microsoft\Exchange
    Server\V15\TransportRoles\agents\Rule\Microsoft.Exchange.MessagingPolicies.TransportRuleAgent.dll
    IsCritical : True
    Identity : Transport Rule Agent
    IsValid : True
    ObjectState : New

    RunspaceId : 71de50d9-8ed2-4d2f-b62a-4333d599ca2a
    Enabled : True
    Priority : 2
    TransportAgentFactory : Microsoft.Exchange.MessagingPolicies.DlpPolicyAgent.DlpPolicyAgentFactory
    AssemblyPath : C:\Program Files\Microsoft\Exchange
    Server\V15\TransportRoles\agents\DlpPolicyAgent\Microsoft.Exchange.MessagingPolicies.DlpPolicyAgent.dll
    IsCritical : True
    Identity : DLP Policy Agent
    IsValid : True
    ObjectState : New

    RunspaceId : 71de50d9-8ed2-4d2f-b62a-4333d599ca2a
    Enabled : True
    Priority : 3
    TransportAgentFactory : Microsoft.Exchange.Transport.Agent.Malware.MalwareAgentFactory
    AssemblyPath : C:\Program Files\Microsoft\Exchange
    Server\V15\TransportRoles\agents\Antimalware\Microsoft.Exchange.Transport.Agent.Malware.dll
    IsCritical : True
    Identity : Malware Agent
    IsValid : True
    ObjectState : New

    RunspaceId : 71de50d9-8ed2-4d2f-b62a-4333d599ca2a
    Enabled : True
    Priority : 4
    TransportAgentFactory : Microsoft.Exchange.TextMessaging.MobileDriver.TextMessagingRoutingAgentFactory
    AssemblyPath : C:\Program Files\Microsoft\Exchange Server\V15\bin\Microsoft.Exchange.MobileDriver.dll
    IsCritical : True
    Identity : Text Messaging Routing Agent
    IsValid : True
    ObjectState : New

    RunspaceId : 71de50d9-8ed2-4d2f-b62a-4333d599ca2a
    Enabled : True
    Priority : 5
    TransportAgentFactory : Microsoft.Exchange.TextMessaging.MobileDriver.TextMessagingDeliveryAgentFactory
    AssemblyPath : C:\Program Files\Microsoft\Exchange Server\V15\bin\Microsoft.Exchange.MobileDriver.dll
    IsCritical : True
    Identity : Text Messaging Delivery Agent
    IsValid : True
    ObjectState : New

    RunspaceId : 71de50d9-8ed2-4d2f-b62a-4333d599ca2a
    Enabled : True
    Priority : 6
    TransportAgentFactory : Microsoft.Exchange.Transport.Agent.SystemProbeDrop.SystemProbeDropSmtpAgentFactory
    AssemblyPath : C:\Program Files\Microsoft\Exchange
    Server\V15\TransportRoles\agents\SystemProbeDrop\Microsoft.Exchange.Transport.Agent.SystemProbeDrop.dll
    IsCritical : True
    Identity : System Probe Drop Smtp Agent
    IsValid : True
    ObjectState : New

    RunspaceId : 71de50d9-8ed2-4d2f-b62a-4333d599ca2a
    Enabled : True
    Priority : 7
    TransportAgentFactory : Microsoft.Exchange.Transport.Agent.SystemProbeDrop.SystemProbeDropRoutingAgentFactory
    AssemblyPath : C:\Program Files\Microsoft\Exchange
    Server\V15\TransportRoles\agents\SystemProbeDrop\Microsoft.Exchange.Transport.Agent.SystemProbeDrop.dll
    IsCritical : True
    Identity : System Probe Drop Routing Agent
    IsValid : True
    ObjectState : New

    RunspaceId : 71de50d9-8ed2-4d2f-b62a-4333d599ca2a
    Enabled : True
    Priority : 8
    TransportAgentFactory : Microsoft.Exchange.Transport.Agent.ContentFilter.ContentFilterAgentFactory
    AssemblyPath : C:\Program Files\Microsoft\Exchange
    Server\V15\TransportRoles\agents\Hygiene\Microsoft.Exchange.Transport.Agent.Hygiene.dll
    IsCritical : True
    Identity : Content Filter Agent
    IsValid : True
    ObjectState : New

    RunspaceId : 71de50d9-8ed2-4d2f-b62a-4333d599ca2a
    Enabled : True
    Priority : 9
    TransportAgentFactory : Microsoft.Exchange.Transport.Agent.SenderId.SenderIdAgentFactory
    AssemblyPath : C:\Program Files\Microsoft\Exchange
    Server\V15\TransportRoles\agents\Hygiene\Microsoft.Exchange.Transport.Agent.Hygiene.dll
    IsCritical : True
    Identity : Sender Id Agent
    IsValid : True
    ObjectState : New

    RunspaceId : 71de50d9-8ed2-4d2f-b62a-4333d599ca2a
    Enabled : True
    Priority : 10
    TransportAgentFactory : Microsoft.Exchange.Transport.Agent.ProtocolFilter.SenderFilterAgentFactory
    AssemblyPath : C:\Program Files\Microsoft\Exchange
    Server\V15\TransportRoles\agents\Hygiene\Microsoft.Exchange.Transport.Agent.Hygiene.dll
    IsCritical : True
    Identity : Sender Filter Agent
    IsValid : True
    ObjectState : New

    RunspaceId : 71de50d9-8ed2-4d2f-b62a-4333d599ca2a
    Enabled : True
    Priority : 11
    TransportAgentFactory : Microsoft.Exchange.Transport.Agent.ProtocolFilter.RecipientFilterAgentFactory
    AssemblyPath : C:\Program Files\Microsoft\Exchange
    Server\V15\TransportRoles\agents\Hygiene\Microsoft.Exchange.Transport.Agent.Hygiene.dll
    IsCritical : True
    Identity : Recipient Filter Agent
    IsValid : True
    ObjectState : New

    RunspaceId : 71de50d9-8ed2-4d2f-b62a-4333d599ca2a
    Enabled : True
    Priority : 12
    TransportAgentFactory : Microsoft.Exchange.Transport.Agent.ProtocolAnalysis.ProtocolAnalysisAgentFactory
    AssemblyPath : C:\Program Files\Microsoft\Exchange
    Server\V15\TransportRoles\agents\Hygiene\Microsoft.Exchange.Transport.Agent.Hygiene.dll
    IsCritical : True
    Identity : Protocol Analysis Agent
    IsValid : True
    ObjectState : New

    Beste Grüße

  11. Ergänzung zu oben: Warum ist 127.0.0.1 der Top Sender von Spam? – Da scheint doch von den Filtern her die Reihenfolge nicht zu passen?
    [PS] C:\Program Files\Microsoft\Exchange Server\V15\Scripts>.\Get-AntispamTopBlockedSenderIPs.ps1

    Name Value
    —- —–
    127.0.0.1 912
    203.153.44.29 12
    45.116.232.117 10
    103.255.5.117 8
    203.153.44.24 7
    203.153.44.16 7
    104.244.210.163 6
    103.255.6.117 6
    104.244.210.167 5
    104.244.210.164 5

    Beste Grüße
    Jörg

  12. Hi Frank,

    vielen Dank für die tolle Anleitung und das du Dir die Mühe machst!
    Eine Frage habe ich dennoch :-)

    „Mit Empfängerdomäne verbundener MX Eintrag“
    wenn ich das in einem Homelab verwende (2x VT-Maschienen (1x DC& AD + 1x EXchange auf 2012r2)),
    STRATO-Dyndns und Telekom-VDSL (keine öffentliche IP), dann werden die Emails auf dem Exchange;
    von extern umgehende empfangen.
    Aber die ausgehenden Emails treffen mit bis zu 4 Stunden Verzögerung ein.
    Beim prüfen mit mxtoolbox finde ich dann immer wieder meine IP(s), von der Telekom, in den Blacklists.

    Aktiviere ich dann im Sendeconnector den SMARTHOST „smtp.Strato.de“ dann gehen die Emails umgehend raus und werden sofort zugestellt.

    Was kann man in einem Homelab machen, um mit dem MX Eintrag auszukommen ?

    Muss man dann doch ein öffentliches Zertifikat hinterlegen ?

    Grüße
    Mario

  13. Hallo Frank,

    ich habe nach Deiner Anleitung den Exchange 2016 installiert, öffentliches Zertifikat installiert, alles läuft scheinbar problemlos. Doch dann nach Stunden werden Mails plötzlich mit bis zu 4 Stunden Zeitverzögerung ein- und ausgehend zugestellt. Erst dachte ich es liegt an Strato und habe den SMARTHOST bei domainfactory angelegt, schlussendlich mit eigenem MX, doch das Resultat ist gleich. Die Warteschlangen sind jedoch stets leer. Nach einem Neustart werden die Mails sofort zugestellt, auch die alten bis nach Stunden das gleiche Problem wieder auftritt. Ich habe in vielen Foren schon Ähnliches gehört, ist Dir das als Problem bekannt und oer gibt es vielleicht schon eine Lösung für das Problem?

  14. Hallo …
    … ich hänge mich hier mal ran ;)

    Den Exchange 2016 Standardhabe ich mit der aktuellsten Scheibe aus dem Volume License Service Center installiert.
    Lief auch alles – augenscheinlich – reibungslos durch.
    Auf dem DC sind in einer OU „Exchange-User“ zwei Nutzer eingerichtet.
    Beiden habe ich im EAC ein Postfach zugewiesen.
    Auf dem Terminal Server dann Outlook gestartet und das Postfach verbunden.
    Alles reibungslos bis hierhin.

    Da ich nur interne eMails für Schulungszwecke eines Dozenten benötige, habe ich auch nur diese getestet.
    Sprich: eMail von ExUser01 an ExUser02 und umgekehrt.

    Resultat: eMails bleiben im Postausgang hängen, obwohl Outlook bei jedem „Senden/Empfangen“ die erfolgreiche Zustellung quittiert.

    In den Postfächern ist aber im Posteingang nix zu finden und mir fehlt leider (noch) das „KnowHow“, die LogFiles zu analysieren.

    Könnte es ggf. ein simpler Fehler sein?
    Ein kleiner Wink mit der Raketenstütze wäre klasse!

    greetz

    Der Rico

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.