Mittwoch, 6. Juni 2018

Externer OAB Download benötigt 30 Minuten

Ich hatte gerade bei einem Kunden den Fall, dass der manuelle Download des OAB in Outlook nach einer Migration auf Exchange 2016 30 Minuten benötigte. Nachdem wir den Download des OAB in Outlook manuell gestartet haben, blieb das Fenster, welches den Vorschritt des Downloads anzeigt, einfach ohne Reaktion stehen:


Irgendwann haben wir dann auch genug lange gewartet und bemerkt, dass der Download nach 30 Minuten startet und auch erfolgreich ist.

Nach längerer Suche haben wir dann das Problem gefunden. Der Download des OAB läuft über BITS. BITS hat einen Standard-Timeout von 30 Minuten, wenn eine URL nicht erreichbar ist. Dies passt ja genau zur Wartezeit beim Download des OAB...

Im Eventlog "Bits-Client" (Anwendungs- und Dienstprotokolle -> Microsoft -> Windows -> Bits-Client) habe ich dann den Event mit der ID 61 (Quelle: Bits-Client) gefunden und gesehen, dass Outlook versucht das OAB auf der internen URL herunterzuladen. Erst nach 30 Minuten wird die "alternative" URL kontaktiert.

Wir haben das virtuelle Verzeichnis für OAB mit einer internen URL (FQDN/oab) und einer externen URL (mail.mydomain.ch/oab) konfiguriert. Nun scheint es so zu sein, dass Outlook nicht wirklich weiss, ob es intern oder extern ist und verwendet für das OAB zuerst die interne URL, welche aber von Extern nicht erreichbar ist.

Die Lösung in meinem Fall: Auf dem virtuellen Verzeichnis für OAB für interne und externe URL die externe URL eintagen. So kommt Outlook gar nicht erst in Versuchung, die interne URL zu probieren.

Der Grund für das Problem kann nur ein Bug sein.

Dienstag, 5. Juni 2018

Exchange Log Partition läuft voll

Grundsätzlich sollte dies nicht passieren. In einer produktiven sorgt das Backup dafür, dass die Logfiles der Datenbanken nach jedem erfolgreichen Backup gelöscht werden. Dies verhindert, dass die Log-Platten eines Exchange Servers voll laufen.

In einer Testumgebung wird eher selten ein funktionierendes Backup eingerichtet. Daher kann es vorkommen, dass die Laufwerke mit den Logfiles der DBs gefüllt werden. Um die Logs wieder los zu werden, gibt es einen simplen Trick.


  1. Starte auf dem Exchange ein CMD mit erhöhten Rechten
  2. Tippe "Diskshadow" und drücke Enter
  3. Tippe "add volume x:" und drücke Enter (das "x" mit dem Laufwerksbuchstaben ersetzen, auf welchem die Logs liegen)
  4. Tippe "begin Backup" und drücke Enter
  5. Tippe "create" und drücke Enter
  6. Wenn der Vorgang abgeschlossen ist, tippe "end Backup" und drücke Enter
Nach kurzer Zeit kann man zusehen, wie sich die Logfiles "in Luft auflösen".

Die Verwendung dieser Prozedur geschieht auf eigene Gefahr ;-)

Mittwoch, 13. Dezember 2017

Autodiscover langsam?

Wir haben bei unseren Kunden oft das Problem, dass das Outlook sehr lange braucht, um seine Konfiguration über Autodiscover zu erhalten. Oft liegt es daran, wie der Autodiscover Prozess in Outlook abläuft.

Grob gesagt, nimmt Outlook zuerst was hinter dem @ der Mailadresse steht und versucht darüber den Autodiscover Service zu erreichen.

hans.muster@itrain.ch = https://itrain.ch/autodiscover/autodiscover.xml

Genau dies schlägt meist fehl, denn entweder zeigt diese URL auf den Webserver. Noch schlimmer wird es, wenn die URL dem Domänen Namen entspricht, dann zeigt "itrain.ch" auf alle Domänen Kontroller in der Domäne. Dies hat dann zur Folge, dass jeder Domänen Kontroller kontaktiert wird und keiner dieser DCs kann Autodiscover Informationen liefern. Dies kann sehr lange dauern, denn standardmässig ist ein Timeout von 25 Sekunden hinterlegt.

Der nächste Schritt im Autodiscover Prozess ist, dass Outlook nimmt was hinter dem @ steht und autodiscover. davor setzt.

hans.muster@itrain.ch = https://autodiscover.itrain.ch/autodiscover/autodiscover.xml

Dies ist dann meist erfolgreich.

Um nun die Wartezeit für https://itrain.ch/autodiscover/autodiscover.xml zu umgehen, kann ein Registry Eintrag erstellt werden, welcher das Outlook anweisst, diese Schritt zu überspringen.

Dazu wird unter

"HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\AutoDiscover"

ein DWORD Eintrag mit Namen "ExcludeHttpsRootDomain" und dem Wert 1  erstellt.

Weitere Informationen: https://support.microsoft.com/en-us/help/3211279/outlook-2016-implementation-of-autodiscover 


Donnerstag, 5. Januar 2017

ActiveSync bleibt verbunden trotz...

Kunden haben mir gemeldete, dass ActiveSync Verbindungen trotz geändertem Passwort oder sogar deaktiviertem AD User Objekt weiterhin verbunden bleibt, und dies zum Teil für Tage.

Aufgefallen ist dies, weil ja die meisten Firmen einen sporadischen Passwortwechsel verlangen. Dabei hat sich gezeigt, dass Mobile Geräte zum Teil erst nach Tagen das neue Passwort verlangen und in der Zwischenzeit munter Mails empfangen und versendet werden konnten, alles unter einem Passwort, welches eigentlich nicht mehr gültig ist.

Für Benutzer, welche einfach so oder weil dies sporadisch verlangt wird, ihr Passwort ändern, die Firma aber nicht verlassen, stellt dieses Verhalten kein allzu grosses Problem dar. Der Benutzer hat ja sein Passwort selbst gewechselt und wüsste das neue Passwort.

Problematisch wird es, wenn das Passwort vom Administrator gewechselt oder der Account deaktiviert wurde, weil der Benutzer das Unternehmen verlassen hat. In diesem Fall würde man ja annehmen, dass der Benutzer durch diese Aktion keinerlei Zugriffe auf die Firmeninfrastruktur mehr hat.

Durch die Beschriebene Problematik ist der Benutzer also, unter Umständen, noch tagelang in der Lage Mails zu empfangen und auch zu versenden. Dies kann grossen Schaden verursachen, je nach dem wie einvernehmlich die Trennung von der Firma abgelaufen ist.

Meine Suche nach einer Lösung hat hervorgebracht, dass dieses Problem schon diversen Personen aufgefallen ist, es aber keine Lösung dafür gibt. Es scheint, dass hier Sicherheit durch Benutzerfreundlichkeit ausgehebelt wurde.

Wichtig ist, diesen Umstand zu kennen, denn ein User lässt schon gänzlich von seinem Postfach trennen, nur reicht es nicht, "nur" den AD Account zu deaktivieren oder das Passwort zu ändern. Mindestens einer der folgenden Schritte muss zusätzlich ausgeführt werden:
  • Neustart der Webservices (IIS)
  • Recyceln der Application Pools "MSExchangeSyncAppPool"
Diese beiden Optionen sind nicht die optimalsten, denn diese Aktionen betreffen auch andere Benutzer. Ohne andere Benutzer zu stören nützen auch folgende Aktionen:
  • In den Einstellungen des Postfaches ActiveSync deaktivieren
  • Das betroffene Postfach in eine andere Datenbank verschieben
  • Das Telefon aus der Exchange Verwaltungsseite heraus wipen
  • Die Verbindung des Telefons aus dem Postfach löschen

Mittwoch, 1. Juni 2016

OWA und EAS Log Analyse

OWA Log Analyse
Die Zugriffe auf OWA lassen sich mittels der IIS Logs analysieren. Dazu kann man das MS Tool «LogParser 2.2» verwenden. Das Tool lässt sich hier herunter laden:

Arbeitsordner erstellen
Für die Analyse der IIS Logs ist es am einfachsten, zuerst mal einen Arbeitsordner zu erstellen. Danach werden dort die Logs abgelegt, welche analysiert werden sollen.

Mittwoch, 27. April 2016

Hierarchisches Adressbuch

In grossen Organisationen stellt sich immer wieder die Frage, wie Adressbücher übersichtlich gestaltet werden sollen. Seit Exchange 2010 SP1 haben wir eine neue Funktion bekommen, welche sich «Hierarchisches Adressbuch» nennt. Das Ganze sieht wie folgt aus:


Der Aufbau eines hierarchischen Adressbuches wird über Verteilerlisten gesteuert. Diese werden ineinander verschachtelt und so gekennzeichnet, dass sie im hierarchischen Adressbuch berücksichtigt werden. Wie das geht, zeige ich anhand einer Step by Step Anleitung am Beispiel der Firma, in welcher ich arbeite. Das Ziel ist, ein hierarchisches Adressbuch aufzubauen, wie ihr es oben in der Ausbildung sehen könnt.

Montag, 11. Januar 2016

Exchange 2016 - Deaktiviertes Postfach mit Archiv wieder verbinden

Wenn man unter Exchange 2016 ein Postfach mit Archiv deaktiviert, wird sowohl das Postfach wie auch das Archiv vom Userobjekt in der AD abgekoppelt. Exchange löscht nun das Postfach wie auch das Archiv in der Datenbank gemäss den Einstellungen auf der Datenbank (Gelöschte Postfächer aufbewahren für (Tage)). Der Standardwert für die Vorhaltezeit gelöschter Postfächer sind 30 Tage.

Wenn man nun ein deaktiviertes Postfach wieder mit einem Userobjekt in der AD verbinden will (muss nicht das ursprüngliche Userobjekt sein), muss man zuerst die «MailboxGuid» des Postfaches herausfinden. Dies kann mit folgendem Befehl gefunden werden:

Get-MailboxStatistics -Database MDB02 | fl DisplayName,MailboxGuid

Dieser Befehl gibt aber alle vorhandenen Postfächer in einer Datenbank aus. Natürlich ist das nicht sehr praktisch in einer Umgebung mit vielen Postfächern. Also kann es erforderlich sein, etwas mehr zu filtern.

Get-MailboxStatistics -Database MDB02 | ? {$_.DisplayName -like "*Brunner*"} | FL DisplayName,MailboxGuid

Hier werden alle Postfächer gefunden, welche im Namen «Brunner» beinhalten und sich in der Datenbank «MDB02» befinden.

Wenn ich aber nun nicht weiss, in welcher Datenbank sich das Postfach (oder das Archiv) befunden hat, kann ich über folgenden Befehl herausfinden, welche Postfächer (oder Archive) es in allen Datenbanken gibt, welche im Namen «Brunner» beinhalten. Im Resultat wird auch gleich die MailboxGuid der Postfächer ausgegeben:

Get-MailboxDatabase | Get-MailboxStatistics | ? {$_.DisplayName -like "*Brunner*"} | FL DisplayName,MailboxGuid,Database

Um einfach alle getrennten Postfächer in allen Datenbanken anzuzeigen kann folgender Befehl verwendet werden:

Get-MailboxDatabase | Get-MailboxStatistics | ? {$_.DisconnectDate -ne $NULL} | FL DisplayName,MailboxGuid,Database,DisconnectDate

Wenn wir nun mal die MailboxGuid haben, können wir das Postfach wieder mit einem Userobjekt verbinden. Ich verwende jeweils den UPN des Userobjektes, an welches ich das Postfach hängen will:

Connect-Mailbox –Identity 4cd7b972-cb64-43bc-b6fc-5dc4446ed971 –Database MDB02 –user b.brunner@itrain.ch

Leider ist nun aber lediglich das primäre Postfach verbunden. Wenn das Postfach vorher ein Archiv hatte, muss ich das auch noch mit dem Userobjekt verbinden. Dies geht mit folgenden Befehl:

Enable-Mailbox -ArchiveGuid 8d6fbef2-5f73-4e00-b06e-5e91c9e9ad30 -ArchiveDatabase MDB02 -Identity b.brunner@itrain.ch

Nun sind Postfach und Archiv wieder gemeinsam mit dem gewünschten Userobjekt verbunden.