Kategorie Exchange Server 2013

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.

von Manuel M. 6. Februar 2015 @ 14:03

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'}
von Manuel M. 29. Oktober 2014 @ 22:28

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.

von Manuel M. 29. Oktober 2014 @ 21:46

Ö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"
von Manuel M. 29. Oktober 2014 @ 21:34

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

von Manuel M. 7. Mai 2014 @ 16:15

Exchange Server 2013 – MAPI over HTTP aktivieren

MAPI over HTTP wurde mit Exchange Server 2013 Service Pack 1 eingeführt und benötigt mindestens Outlook 2013 Service Pack 1.

  • Keine Bindung an RPC
  • Bei Verbindungsabbruch oder Netzwerkwechsel schnellere Reconnects, da nur die HTTP-Verbindung wiederhergestellt werden muss
  • Besseres Handlich für Firewalls und Loadbalancer
  • Einfacheres Troubleshooting
  • Höhere Auslastung auf Client Access Servern

MAPI over HTTP aktivieren

MAPI over HTTP ist standardmäßig deaktiviert und muss erst konfiguriert und aktiviert werden:

MAPI over HTTP Virtual Directory konfigurieren

Damit MAPI over HTTP per Autodiscover konfiguriert werden kann, muss das Virtuelle Directory konfiguriert werden:

Get-MapiVirtualDirectory | Set-MapiVirtualDirectory -InternalUrl https://mail.domain.local/mapi –ExternalUrl https://mail.domain.de/mapi -IISAuthenticationMethods NTLM,Negotiate

MAPI over HTTP aktivieren

Nun kann MAPI over HTTP in der gesamten Exchange Organisation aktiviert werden. Dies geschieht mit folgendem Befehl:

Set-OrganizationConfig -MapiHttpEnabled $true

IIS Reset

Zum Schluss muss noch der IIS auf jedem Exchange Server neugestartet werden:

issreset

Erste Verbdingung mit MAPI over HTTP

Bis die Outlook 2013 Clients mit Service Pack 1 diese Konfigurationsänderung mitbekommen, kann ca. 30 Minuten dauern. Danach erscheint folgende Meldung:

Exchange 2013 MAPI over HTTP 2

Nun kann man in den Verbindungseigeschaften das verwendete Protokoll überprüfen:

Exchange 2013 MAPI over HTTP 1

Wenn hier „HTTP“ steht, hat es geklappt.

MAPI over HTTP testen

Mit folgendem Befehl kann MAPI over HTTP getestet werden:

Test-OutlookConnectivity -ProbeIdentity OutlookMapiHttpSelfTestProbe

MAPI over HTTP Logging

In folgenden Verzeichnissen werden die Logs abgelegt:

%ExchangeInstallPath%Logging\MAPI Address Book Service\
%ExchangeInstallPath%Logging\MAPI Client Access\
%ExchangeInstallPath%Logging\HttpProxy\Mapi\

MAPI over HTTP in Outlook 2013 deaktivieren

MAPI over HTTP wird automatisch per Autodiscover aktiviert. Es kann aber in der Registry deaktiviert werden:

HKCU\Software\Microsoft\Exchange\MapiHttpDisabled (DWORD) = 1
von Manuel M. 28. April 2014 @ 18:08

Exchange Server 2013 – Performance Counter Fehler beheben

Während der Installation von Exchange Server 2013, sollten eigentlich alle nötigen Performance Counter regestriert werden. Dies schlägt meistens fehl und von nun an wird das Eventlog mit Fehler geflutet.

Beispiel einer Meldung

Fehler beim Aktualisieren eines Leistungsindikators. Der Indikatorname lautet 'Delay Time Threshold', der Kategoriename ist 'MSExchange User WorkloadManager'. Optionaler Code: 3. Ausnahme: The exception thrown is : System.InvalidOperationException: Die Instanz "rca" ist bereits mit einer dem Prozess entsprechenden Lebensdauer vorhanden. Sie kann erst erneut erstellt oder verwendet werden, wenn sie entfernt wurde, oder der Prozess, der sie verwendet, beendet wurde.
   bei System.Diagnostics.SharedPerformanceCounter.FindInstance(Int32 instanceNameHashCode, String instanceName, CategoryEntry* categoryPointer, InstanceEntry** returnInstancePointerReference, Boolean activateUnusedInstances, PerformanceCounterInstanceLifetime lifetime, Boolean& foundFreeInstance)
   bei System.Diagnostics.SharedPerformanceCounter.GetCounter(String counterName, String instanceName, Boolean enableReuse, PerformanceCounterInstanceLifetime lifetime)
   bei System.Diagnostics.SharedPerformanceCounter..ctor(String catName, String counterName, String instanceName, PerformanceCounterInstanceLifetime lifetime)
   bei System.Diagnostics.PerformanceCounter.InitializeImpl()
   bei System.Diagnostics.PerformanceCounter.set_RawValue(Int64 value)
   bei Microsoft.Exchange.Diagnostics.ExPerformanceCounter.set_RawValue(Int64 value)
Last worker process info : System.ArgumentException: Es wird kein Prozess mit der ID 3180 ausgeführt.
   bei System.Diagnostics.Process.GetProcessById(Int32 processId)
   bei Microsoft.Exchange.Diagnostics.ExPerformanceCounter.GetLastWorkerProcessInfo()
Processes running while Performance counter failed to update: 
5524 w3wp
3356 MonitoringHost
2172 svchost
4 System
396 csrss
0 Idle
..................
Performance Counters Layout information: A process is holding onto a transport performance counter. processId : 3952, counter : average task wait time Value=1 SpinLock=0 Lifetime=Type: 1 ProcessId: 3952 StartupTime: 130431896595313549, currentInstance : owa(B875F7C) RefCount=0 SpinLock=0 Offset=3216, categoryName: MSExchange User WorkloadManager 
A process is holding onto a transport performance counter. processId : 784, counter : average task wait time Value=1 SpinLock=0 Lifetime=Type: 1 ProcessId: 784 StartupTime: 130432298547223973, currentInstance : ews(B8724E4) RefCount=1 SpinLock=0 Offset=2408, categoryName: MSExchange User WorkloadManager 
A process is holding onto a transport performance counter. processId : 16260, counter : average task wait time Value=10 SpinLock=0 Lifetime=Type: 1 ProcessId: 16260 StartupTime: 130432298608633345, currentInstance : eas(B8721B2) RefCount=1 SpinLock=0 Offset=1600, categoryName: MSExchange User WorkloadManager 
A process is holding onto a transport performance counter. processId : 4172, counter : average task wait time Value=1 SpinLock=0 Lifetime=Type: 1 ProcessId: 4172 StartupTime: 130431896723907291, currentInstance : rca(B878B35) RefCount=1 SpinLock=0 Offset=32, categoryName: MSExchange User WorkloadManager 

Exchange 2013 - Performance Counters 1

Performance Counter erneut regestrieren

Um die Fehler zu beheben, müssen die Performance Counter erneut regestriert werden. Diese befinden sich im Exchange Server 2013 Installations Verzeichnis im Order „Setup/Perf“.

Powershell Snapin laden

Damit alle nötigen Cmdlets vorhanden sind, muss folgendes Snapin geladen werden:

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Setup

Exchange 2013 - Performance Counters 2

Performance Counter regestrieren

Nun kann folgender Befehl ausgeführt werden, um die Performance Counter erneut zu regestrieren,

Get-ChildItem "Exchange_Installation\Setup\Perf" | Where-Object {$_.Name -match ".xml"} | Foreach {New-PerfCounters -DefinitionFileName $_.FullName}

Exchange 2013 - Performance Counters 3

Der Fehler bei einem Performance Counter ist normal, wenn die Installationsdateien von Exchange Server Service Pack 1 benutzt werden. Damit sollten die Eventlog Fehler behoben sein.

von Manuel M. 28. April 2014 @ 17:47

Reverse-Proxy – Exchange Server & Lync Server

Nach dem offiziellem aus für das Threat Mangement Gateway 2010 war lange Zeit nicht klar, wie die Veröffentlichung der Exchange & Lync Webdiensten geandhabt werden soll. Nun gibt es sogar zwei kostenlose Möglichkeiten:

  • IIS mit ARR und URL Rewrite
  • Windows Server 2012 mit Web Application Proxy

IIS mit ARR und URL Rewrite

Eine einfache und auch gute Möglichkeit für die Veröffentlichung ist die Proxy-Funktion im IIS, mit den Zusatzkomponenten Application Request Routing und URL Rewrite Modul. Die Installation kann sogar mit dem Web-Plattform Installer gemacht werden, so dass nicht ein Setup ausgeführt werden muss. Die Komponenten müssen dann nur noch konfiguriert werden.

lync_2013_topology(1)

Die Exchange Server 2013 Entwickler haben dazu ein gutes Tutorial erstellt:

Ich habe sehr gute Erfahrungen mit dieser Technik und kann diese Art der Veröffentlichung nur empfehlen. Unsere Exchange Server 2013 / Lync Server 2013 werden hierüber veröffentlicht und dies funktioniert absolut problemlos.

Windows Server 2012 R2 WAP

Zur Web Application Proxy Rolle im Windows Server 2012 R2 gibt es noch nicht so viele Informationen und Erfahrungeberichte. Auf jeden Fall soll auch diese Veröffentlichungsmethode eine gute Alternative zum TMG 2010 darstellen.

von Manuel M. 15. Dezember 2013 @ 20:26

Office Web Apps 2013 – Installation

Der Office Web Apps Server 2013 wird gleich von mehreren Microsoft Produkten benötigt:

  • Lync Server 2013: Zum rendern der PowerPoint Präsentationen in allen Clients
  • Exchange Server 2013: Stellt alle kompatiblen Dateiformate in Office Web App da (Word, Excel, PowerPoint, OneNote, PDF)
  • Sharepoint Server 2013: Stellt die Schnellansicht bei Dokumenten bereit

Das Anzeigen von Dokumenten sollte kostenlos sein, das Bearbeiten benötigt allerdings eine kostenpflichtige Lizenz.

Voraussetzungen

Windows Rollen und Features

Add-WindowsFeature  Web-Server, Web-Mgmt-Tools, Web-Mgmt-Console, Web-WebServer, Web-Common-Http, Web-Default-Doc, Web-Static-Content, Web-Performance, Web-Stat-Compression, Web-Dyn-Compression, Web-Security, Web-Filtering, Web-Windows-Auth, Web-App-Dev, Web-Net-Ext45, Web-Asp-Net45, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Includes, InkandHandwritingServices

Office Web Apps 2013 – Installation

Die generelle Installation ist sehr einfach. Einfach nur durchklicken:

Office Web Apps 2013 – Konfiguration

Auch wenn nur ein Server vorgesehen ist, muss immer eine Office Web Apps Farm erstellt werden:

New-OfficeWebAppsFarm -InternalURL "http://wac.domain.local" -ExternalURL "http://wac.domain.de" -AllowHttp -EditingEnabled:$False -SSLOffload

Office Web Apps 2013 – Optionale Einstellungen

Man kann den Office Web Apps Server 2013 so einstellen, dass dieser beim Aufruf der URL ein Formular anzeigt, mit dem man jedes Office Dokument im Browser darstellen kann:

Set-OfficeWebAppsFarm -OpenFromUrlEnabled -OpenFromUncEnabled -OpenFromUrlThrottlingEnabled

Hinweise zur Installation der Updates

Direkt nach der Installation gibt es mindestens ein Update das direkt angewendet werden kann. Nach der Installation kann es vorkommen, dass der Office Web Apps Server 2013 nicht mehr funktioniert und sich auch nicht reparieren lässt. Hier hilft das Löschen der Office Web Apps 2013 Farm und das erneute Anlegen. Ist ja nur ein Powershell-Befehl, den man dokumentieren sollte.

Exchange Server 2013 – Konfiguration

Nun kann der neue Office Web Apps 2013 Server im Exchange Server aktiviert werden:

Set-OrganizationConfig -WACDiscoveryEndpoint https://wac.domain.de/hosting/discovery
Get-OWAVirtualDirectory | Set-OWAVirtualDirectory -WacViewingOnPublicComputersEnabled $true -WacViewingOnPrivateComputersEnabled $true

Sharepoint 2013 – Konfiguration

Auch die Sharepoint 2013 Konfiguration für Office Web Apps ist sehr einfach. Es muss nur der Server bekannt gegeben und ggf. die Zone auf HTTPS definiert werden.

New-SPWOPIBinding -ServerName wac.domain.local
Set-SPWOPIZone –zone “external-https”

Lync Server 2013 – Konfiguration

Die Konfiguration im Lync Server 2013 ist noch einfacher: Hier muss man nur den Topologiebuilder ausführen und eine neue Outlook Web Apps Ressource erstellen, mit den eben erstellen Parametern.

von Manuel M. 15. Dezember 2013 @ 19:56

Exchange Server 2013 – Malware Scanner & Anti Spam Agents #2

Im zweiten Teil der Exchange 2013 Malware & Anti-Spam Agents Konfiguration werden die einzelnen Anti-Spam Agents konfiguriert. (Zum ersten Teil)

Anti-Spam Agents – IP Block List

Mit diesem Agent lassen sich IP-Adressen blockieren. Es können manuell einzelne IP-Adressen hinterlegt werden oder auch ganze dynamisch generierten Listen von kostenlosen Anbietern wie „spamcop.net“.

IP Block List Provider

IP Block List Provider sind kostenlose Anbieter solcher IP-Blacklists. Beim Eintreffen einer E-Mail wird die IP-Adresse des Absenders an den jeweiligen Anbieter geschickt und wenn dieser keine Rückantwort liefert, steht die IP nicht auf seiner Liste.

In diesem Beispiel wird der IP Block List Provider „zen.spamhaus.org“ hinzugefügt:

Add-IPBlockListProvider -name zen.spamhaus.org -lookupdomain zen.spamhaus.org

Diese IP Block List Provider haben sich in meiner Exchange Server 2013 Umgebung bewährt und filtern schon sehr viele IP Adressen und haben dabei ein sehr gutes false/positive Verhältnis.

Add-IPBlockListProvider -name bl.spamcop.net -lookupdomain bl.spamcop.net
Add-IPBlockListProvider -name zen.spamhaus.org -lookupdomain zen.spamhaus.org
Add-IPBlockListProvider -name dnsbl.sorbs.net -lookupdomain dnsbl.sorbs.net
Add-IPBlockListProvider -name ix.dnsbl.manitu.net -lookupdomain ix.dnsbl.manitu.net
Add-IPBlockListProvider -name cbl.abuseat.org -lookupdomain cbl.abuseat.org
Add-IPBlockListProvider -name spam.dnsbl.sorbs.net -lookupdomain spam.dnsbl.sorbs.net
Add-IPBlockListProvider -name b.barracudacentral.org -lookupdomain b.barracudacentral.org
Add-IPBlockListProvider -name sbl-xbl.spamhaus.org -lookupdomain sbl-xbl.spamhaus.org
Add-IPBlockListProvider -name psbl.surriel.com -lookupdomain psbl.surriel.com

Anti-Spam Agents – Content Filter

Der Content Filter Agents analysiert die E-Mail auf Inhalt und gibt dieser einen SCL-Wert. Nun muss nur noch konfiguriert werden, was bei welchem SCL passieren soll. Es gibt hier 3 Möglichkeiten:

  • E-Mail in Quarantäne verschieben
  • E-Mail ablehnen und Nachricht an Absender
  • E-Mail ohne Nachricht an Absender löschen

Content Filter – Quarantäne-Postfach

Für den Content Filter kann ein Quarantäne-Postfach konfiguriert werden. In dieses werden dann E-Mails mit einem definierbaren SCL-Wert verschoben. In diesem Quarantäne-Postfach können dann ggf. gefilterte E-Mail entlassen oder gelöscht werden. Es empfiehlt sich auf jeden Fall ein gesondertes Postfach für diesem Zweck anzulegen, wann dann bei Bedarf eingebunden werden kann.

In diesem Beispiel werden alle E-Mails mit einem SCL-Wert größer 6 in das Quarantäne-Postfach „spam@test.local“ verschoben:

Set-ContentFilterConfig -SCLRejectEnabled $true -SCLQuarantineThreshold 6 -SCLDeleteEnabled $false -SCLRejectEnabled $false -QuarantineMailbox spam@test.local

Anti-Spam Agents – Sender ID

Der Sender ID Filter überprüft den SPF-Record der jeweiligen Domain und reagiert dann mit einer der folgenden Aktionen:

  • E-Mail mit Status kennzeichnen
  • E-Mail ablehnen und Nachricht an Absender
  • E-Mail ohne Nachricht an Absender löschen

E-Mails bei denen der SPF-Record nicht korrekt ist, sollten bei externen Servern abgelehnt werden. Der Absender bekommt dann eine Unzustellbarkeitsmeldung und kann ggf. reagieren. Man kann die E-Mail natürlich auch ohne Meldung sofort löschen, dann bekommt der Absender aber keine Benachrichtigung.

Set-SenderIdConfig -Enabled $true -ExternalMailEnabled $true -SpoofedDomainAction Reject -TempErrorAction StampStatus

Sender ID Filter – Ausnahme

Ich habe oft erlebt, dass grade kleiner Firmen den SPF-Record falsch setzen und damit E-Mail abgelehnt werden. Für solche Fälle kann die jeweilige Absender-Domain ausgeschlossen werden:

Set-SenderIdConfig -BypassedSenderDomains test.de
von Manuel M. 19. Oktober 2013 @ 19:03
  • RSS
  • manuel m. on E-Mail
  • manuel m. on Faceboo
  • manuel m. on Google+