Reparatur einer Microsoft Exchange Datenbank

Wenn sich bei einem Exchange 2000 oder 2003 Server die Datenbank nicht mehr mounten lässt kann man versuchen diese mit den Kommandozeilen-Tools ESEUTIL und ISINTEG zu reparieren (ab Exchange 2007 wurden diese Tools in die Exchange Management Console eingebaut und können dort aufgerufen werden). Man sollte jedoch etwas Zeit mitbringen und vorher eine Datensicherung machen. Microsoft weißt nämlich explizit darauf hin, dass durch diese Tools auch Daten verloren gehen können und bei einer Datenbankgröße von 50 GB kann der Vorgang schon mal einen ganzen Tag dauern. Während der Reparatur wird jeweils im aktuellen Pfad eine temporäre Datenbank erstellt, die ca. 20% der alten Datenbankgröße benötigt. Der Pfad dieser Datenbank kann bei Bedarf mit dem Schalter /t geändert werden.

Im folgenden nun die einzelnen Schritte, mit denen ich bis jetzt die besten Erfolge beim reparieren einer Microsoft Exchange Datenbank erzielt habe:

  • SMTP Server anhalten (falls noch aktiv)
  • “ESEUTIL /MH DATENBANK” ausführen
    Zeigt den Status der Datenbank an.
  • “ESEUTIL /P DATENBANK” ausführen
    Diese Option versucht eine defekte Datenbank wieder “clean” zu bekommen, indem diese komplett neu aufgebaut wird und fehlende Verbindungen und Seiten dabei einfach entfernt werden.
  • “ISINTEG.EXE -s -fix -test alltests” ausführen
    Falls Tool nicht läuft, Transaction Logs in ein Backupverzeichnis verschieben. Auftretende Warnungen können ignoriert werden, sollten jedoch Fehler angezeigt werden, muss ISINTEG.EXE -s -fix -test alltests solgange wiederholt werden, bis keine Fehler mehr auftreten.

Entfernen einer alten Netzwerkkarte unter Windows

Windows zeigt Netzwerkkarten nicht an, die nicht mehr im System sind. Deshalb kann man Netzwerkkarten nicht mehr sauber entfernen, wenn sie ausgetauscht wurden oder der Computer virtualisiert wurde. Dadurch verbleibt die Konfiguration der alten Netzwerkkarte (Fest IP oder anderes) in der Registry. Man findet z.B. die TCP/IP Einstellungen der Karten unter HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services. Dort erscheinen ganz oben so lange Zahlen in geschweifter Klammer, die GUIDs der Karten. Leider sind die Karten nicht unter ihrem Namen zu finden. Deshalb muss man sich die einzelnen Werte anschauen, um die Karten an Hand der eingetragenen IPs zu identifizieren. Diese Nummern tauchen nochmals weiter unten unter TCP/Parameters/Interfaces auf.

Bevor man sich jedoch die Mühe macht, Werte von Hand aus der Registry zu löschen, sollte man probieren die Systemumgebungsvariable devmgr_show_nonpresent_devices auf den Wert 1 zu setzen und danach den Gerätemanager zu starten. Dazu startet man eine Shell (unter Windows ja auch DOS-Fenster genannt) und gibt die drei folgenden Befehle ein:

set devmgr_show_details=1
set devmgr_show_nonpresent_devices=1
start devmgmt.msc

Danach wählt man im Menü des gestarteten Gerätemanager unter “Ansicht” die Option “Ausgeblendete Geräte anzeigen” aus, um die Ansicht der Geräte auch wirklich zu erhalten. Die Geräte welche nicht mehr vorhanden sind, werden danach als halbtransparente Geräte angezeigt. Man kann diese Einträge jetzt gefahrlos löschen und somit aus dem System entfernen.

Laufwerk M: mit einer Gruppenrichtlichtlinie ausblenden

Bei Terminal- und Citrixservern möchte man oft die lokalen Laufwerke bei Windows ausblenden. Ab besten kann man dies mit Hilfe einer Gruppenrichtlinie im Active Directory erledigen. Bei der normalen Gruppenrichtlinie gibt es allerdings nur die Möglichkeit die lokalen Laufwerken um A, B, C oder D auszublenden. Wenn man die Gruppenrichtlinie mit der folgenden ADM-Datei erweitert, kann man auch die bei Laufwerksbuchstaben M, N, O und X ausblenden, die häufig bei Citrixservern vorkommen.

Nähere Infos über ADM-Dateien sind bei www.gruppenrichtlinien.de, Microsoft oder www.MSExchangeFAQ.de zu finden.


;Einstellung zur Laufwerksunterdrückung

CLASS USER

CATEGORY !!WindowsComponents
    CATEGORY !!WindowsExplorer
	KEYNAME "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"

POLICY !!NoDrives 
            EXPLAIN !!NoDrives_Help
	    PART !!NoDrivesDropdown	DROPDOWNLIST NOSORT REQUIRED
		VALUENAME "NoDrives"
		ITEMLIST
		    NAME !!ABOnly           VALUE NUMERIC	3
		    NAME !!COnly            VALUE NUMERIC	4
		    NAME !!DOnly            VALUE NUMERIC 	8
		    NAME !!ABConly          VALUE NUMERIC 	7
		    NAME !!ABCDOnly         VALUE NUMERIC	15
                    NAME !!MOnly            VALUE Numeric       4096
                    NAME !!AMOnly           VALUE Numeric       4097
                    NAME !!NOnly            VALUE Numeric       8192
                    NAME !!ACDMNOnly        VALUE Numeric       12301
                    NAME !!CDMNOnly         VALUE Numeric       12300
                    NAME !!CDMNOOnly        VALUE Numeric       28684
                    NAME !!CDMNOXOnly       VALUE Numeric       8417292
		    NAME !!ALLDrives        VALUE NUMERIC	67108863 DEFAULT 
                         ; low 26 bits on (1 bit per drive)
		    NAME !!RestNoDrives     VALUE NUMERIC	0

		END ITEMLIST
	    END PART			
	END POLICY

        POLICY !!NoViewOnDrive
            EXPLAIN !!NoViewOnDrive_Help
	    PART !!NoDrivesDropdown	DROPDOWNLIST NOSORT REQUIRED
		VALUENAME "NoViewOnDrive"
		ITEMLIST
		    NAME !!ABOnly           VALUE NUMERIC	3
		    NAME !!COnly            VALUE NUMERIC	4
		    NAME !!DOnly            VALUE NUMERIC 	8
		    NAME !!ABConly          VALUE NUMERIC 	7
		    NAME !!ABCDOnly         VALUE NUMERIC	15
                    NAME !!MOnly            VALUE Numeric       4096
                    NAME !!AMOnly           VALUE Numeric       4097
                    NAME !!NOnly            VALUE Numeric       8192
                    NAME !!ACDMNOnly        VALUE Numeric       12301
                    NAME !!CDMNOnly         VALUE Numeric       12300
                    NAME !!CDMNOOnly        VALUE Numeric       28684
                    NAME !!CDMNOXOnly       VALUE Numeric       8417292
		    NAME !!ALLDrives        VALUE NUMERIC	67108863 DEFAULT 
                         ; low 26 bits on (1 bit per drive)
		    NAME !!RestNoDrives     VALUE NUMERIC	0

		END ITEMLIST
	    END PART			
	END POLICY

	End Category
End Category


[strings]

WindowsComponents="Ohl_Windows-Komponenten"
WindowsExplorer="Windows Explorer"
NoDrives_Help="_Entfernt die Symbole für ausgewählte Laufwerke aus Arbeitsplatz, Windows Explorer und Netzwerkumgebung. Außerdem werden die Laufwerkbuchstaben, die die ausgewählten Laufwerke darstellen, im Standarddialog "Öffnen" nicht angezeigt.\n\nWenn Sie diese Richtlinien verwenden möchten, wählen Sie ein Laufwerk oder eine Kombination von Laufwerken aus der Dropdownliste. Deaktivieren Sie diese Richtlinie, oder wählen Sie die Option "Laufwerke nicht einschränken" aus der Dropdownliste, wenn alle Laufwerke angezeigt werden sollen.\n\nHinweis: Durch diese Richtlinie werden die Laufwerksymbole ausgeblendet. Benutzer können weiterhin anderweitig auf die Laufwerke zugreifen, indem sie z. B. einen Pfad zu dem Verzeichnis auf dem Laufwerk im Dialogfeld "Netzlaufwerk verbinden", im Dialogfeld "Ausführen" oder in der Eingabeaufforderung eingeben.\n\nAußerdem verhindert diese Richtlinie nicht, dass Benutzer das Datenträgerverwaltungs-Snap-In verwenden, um Laufwerkeigenschaften anzuzeigen oder zu ändern.\n\nWeitere Informationen finden Sie unter der Richtlinie "Zugriff auf Laufwerke vom Arbeitsplatz nicht zulassen"."
NoDrives="Diese angegebenen Datenträger im Fenster "Arbeitsplatz" ausblenden"
NoDrivesDropdown="Wählen Sie eine der folgenden Kombinationen"
NoViewOnDrive_Help="Verhindert, dass Benutzer in Arbeitsplatz auf den Inhalt ausgewählter Laufwerke zugreifen.\n\nDurch Aktivieren dieser Richtlinie, können Benutzer den Inhalt ausgewählter Laufwerke in Arbeitsplatz, Windows Explorer oder Netzwerkumgebung nicht einsehen. Außerdem können Benutzer nicht die Dialogfelder "Ausführen" oder "Netzlaufwerk verbinden" verwenden oder den Befehl "dir" ausführen, um Verzeichnisse auf diesen Laufwerken anzuzeigen.\n\nWählen Sie ein Laufwerk oder mehrere Laufwerke aus dem Listenfeld, um diese Richtlinie zu verwenden. Deaktivieren Sie diese Richtlinie, oder verwenden Sie die Option "Laufwerke nicht einschränken" aus dem Listenfeld, um diese Richtlinie zu deaktivieren.\n\nHinweis: Die Symbole, die die angegebenen Laufwerke darstellen, werden weiterhin in Arbeitsplatz angezeigt, aber wenn Benutzer versuchen, auf die Laufwerke zuzugreifen, wird eine Meldung angezeigt, die erläutert, dass dieser Vorgang aufgrund einer Richtlinie nicht gestattet ist.\n\nDiese Richtlinie verhindert nicht, dass Benutzer das Datenträgerverwaltungs-Snap-In verwenden, um Laufwerkeigenschaften zu ändern oder anzuzeigen.\n\nWeitere Informationen finden Sie unter der Richtlinie "Diese angegebenen Datenträger im Fenster Arbeitsplatz ausblenden"."
NoViewOnDrive="Zugriff auf Laufwerke vom Arbeitsplatz nicht zulassen"
ABOnly="Nur Laufwerke A und B beschränken"
COnly="Nur Laufwerk C beschränken"
DOnly="Nur Laufwerk D beschränken"
ABConly="Nur Laufwerke A, B und C beschränken"
ABCDOnly="Nur Laufwerke A, B, C und D beschränken"
ACDMNOnly="Nur Laufwerke A, C, D, M und N beschränken"
MOnly="Nur Laufwerk M beschränken"
AMOnly="Nur Laufwerke A und M beschränken"
NOnly="Nur Laufwerk N beschränken"
CDMNOnly="Nur Laufwerke C, D, M und N beschränken"
CDMNOOnly="Nur Laufwerke C, D, M, N und O beschränken"
CDMNOXOnly="Nur Laufwerke C, D, M, N, O und X beschränken"
ALLDrives="Alle Laufwerke einschränken"
RestNoDrives="Laufwerke nicht einschränken"

Migration eines Exchange-Servers in eine andere Organisation

Für die Migration eines Exchange-Servers in eine andere Organisation gibt es eine sehr gute Anleitung auf der bekannten Webseite MSFAQ.DE. Dort heißt es:

Die Migration von Exchange Postfächern aus einer Organisation in eine andere Organisation ist ein etwas aufwändigerer Akt.

Das ist sogar noch untertrieben. Ich habe kürzlich mit einem Kollegen eine solche Migration bei einem Exchange-Server mit ca. 40 Benutzern durchgeführt. Insgesamt haben wir dafür mehr als eine ganze Woche benötigt und das war keine Woche mit acht Stunden Arbeit pro Tag! Dabei haben wir folgende Schritte unternommen:

  • Migration der Benutzer und Gruppen mit dem ADMT (Active Directory Migrations Tool)
  • Konfiguraton der E-Mail-Adressen für Benutzer und Verteilergruppen
  • Kopieren der Kontakte
  • Kopieren der Postfächer mit EXMERGE
  • Konfiguration der Berechtigungen für die Postfächer
  • Syncronisieren der öffentlichen Ordner mit EXCHSYNC
  • Konfiguration der Berechtigungen für die öffentlichen Ordner
  • Anpassung aller Mailclients (Outlook, usw.)

Für die Migration war sehr viel Handarbeit nötig, da vieles manuell kopiert und alle Berechtigungen neu gesetzt werden müssen.

“Senden an” E-Mail-Empfänger funktioniert nicht bei Outlook und 64 Bit

Microsoft hat mir jetzt bestätigt, dass “Senden an” bei Windows 2003 mit 64 Bit und Office 2003 oder 2007 nicht funktioniert. Ich hatte zu diesem Problem vor über zwei Wochen eine Anfrage an den Support von Microsoft gestellt. Leider wird es auch kein Update geben, dass dieses Problem behebt. Microsoft scheint eine Problemlösung zu riskant zu sein. Durch eine Behebung des Problems könnte schließlich eine neue Fehlfunktionen verursacht werden.

Das ganze scheint mir eine neue und sehr interessante Variante von “This bug is a feature” zu sein.

Bei Microsoft formuliert man das übrigens so:

Fuer dieses Problem wird aus folgenden Gruenden kein Hotfix entwickelt:

Wir haben diese Entscheidung sorgfältig überdacht und es wurden bereits diverse Workarounds untersucht wie etwa den Outlook 2003 32bit Registry Schlüssel unter dem 64bit Hive zu registrieren. Alle diese Tests scheitern an der 64bit Architektur und der 32bit Applikation Redirection. Leider gibt es von Office 2003 und 2008 keine 64 bit Version und damit auch keine 64bit MSMAPI.DLL. Dies bedeutet selbst wenn Sie die 32 bit MSMAPI.DLL unter Windows im 64bit Schlüssel registrieren wird der 64bit Explorer niemals eine 32bit DLL laden können. Wir haben dieses nach dem Release von Windows 2003 64bit erkannt und entsprechend das Design der Nachfolgearchitektur (Vista und Windows 2008) geändert. Diese Änderung ist leider nicht trivial und bedeutet für Windows 2003 64bit im Nachhinein einen sehr riskanten Fix welcher alle 32bit Applikationen beeinflussen könnte. Der Workaround aus 32bit Outlook heraus eine Mail zu öffnen und die Datei anzuhängen erscheint uns am einfachsten umzusetzen und völlig risikolos.

Zumindest mußte ich für die Support-Anfrage bei Microsoft nichts bezahlen, da das Problem ein Softwarefehler ist. Man muss ja immer die positiven Dinge im Leben sehen!