Nicknamecache (NK2-Datei / AutocompleteCache)

Outlook vereinfacht für Anwender die Adressierung häufig genutzter Empfänger über einen eigenen Cache. Natürlich kann ein Anwender die Adressen manuell eintippen oder aus den verschiedenen Adressbüchern auswählen aber Outlook schlägt auch Empfänger schon während der Eingabe vor, wenn diese früher schon mal als Empfänger genutzt wurden. Das ganze sieht dann z.B. so aus:

Hinter jedem Eintrag steht übrigens auch das kleine "X", um diesen Datensatz Aus dem Cache zu entfernen. Outlook speichert sich also die schon einmal adressierten Empfänger in einem eigenen Cache, um diese Vorschläge schnell unterbreiten zu können.

Hinweis
Der NickNameCache ist nicht mit den Ordner "Vorgeschlagene Kontakte" (Suggested Contacts) zu verwechseln!
Hinweise zu dem Ordner finden Sie am Ende dieser Seite.

Wer mit Outlook 2000 begonnen hat, kann eventuell noch eine Datei mit der Ending "*.nick" finden. Erst mit Outlook 2003 lautet die Extension "NK2". Die Datei ist im Profil verlinkt, so dass ein Update von Outlook bei Beibehaltung des Profils auch bei 2003 und 2007 eine NICK-Datei beibehalten wird.

Ablage des Cache

Natürlich muss sich Outlook diese Daten irgendwo speichern:

Bis Outlook 2007: NK2-Datei

Dazu hat Outlook bis zur Version 2007 eine Datei mit der Ending NK2 im Profil mit abgelegt.

Windows XP
Laufwerk:\Dokumente und Einstellungen\Benutzername\Anwendungsdaten\Microsoft\Outlook 
Windows Vista und neuere Versionen 
Laufwerk:\Benutzer\Benutzername\AppData\Roaming\Microsoft\Outlook

Auch wenn die Datei über Roaming Profiles auch auf andere Computer mitgenommen werden kann, so nutzen nur die wenigsten Firmen diese Möglichkeit. Und selbst dann sind diese Daten nicht in Outlook WebApp verfügbar.

Das Format der NK2-Datei wurde mittlerweile auch veröffentlicht:

Outlook 2003/2007 NK2 File Format and Developer Guidelines
http://stephengriffin.members.winisp.net/nk2/NK2WithBinaryExample.pdf

Ab Outlook 2010: Postfach

Daher hat Microsoft mit Outlook 2010 diese Verhalten geändert und legt die Daten nun in einer versteckten Datei im Postfach ab. Mit dem EWSEditor oder MFCMAPI können Sie einfach auf dem Postfach die "Associated Items" auswählen.

In der Liste der Elemente finden Sie dann auch genau ein Element vom Typ "IPM.Configuration.Autocomplete"

Beachten Sie bitte, dass Outlook diese Information beim Start einliest und dann im Memory Cache hält. Wer also an diesen Werten etwas ändern möchte, sollte dies nur tun, wenn alle Outlook Instanzen geschlossen sind. Sonst könnte es passieren, dass ein laufendes Outlook beim Schließen ihre mühsam gemachten Änderungen einfach überschreibt. Das bedeutet natürlich auch, dass beim Start mehrerer Outlook Instanzen das zuletzt beendete Outlook "gewinnt"

Mit Procmon ist aber auch zu sehen, dass Outlook beim Start wohl diese Information doch in einer NK2-Datei in das Profil extrahiert.

c:\User\<User>\AppData\Local\MIcrosoft\Outlook\RoamCache\Stream_Autocomplete_xxxxxx.dat

Anscheinend nutzt Outlook doch noch diese Datei als temporären Speicher.

Exchange 2010 OWA

Aber auch bei der Verwendung von Outlook Web Access gibt es dieses Hilfsmittel. Allerdings werden diese Daten wieder an einer dritten Stelle abgespeichert. Hier muss man eine Ebene höher auf "MsgFolderRoot" in die "Associated Items" schauen, um auch hier ein Element zu finden.

Dieses hat aber abweichend nun die Messageclass: "IPM.Configuration.OWA.AutocompleteCache" 

Ich könnte mir vorstellen, dass Microsoft absichtlich für OWA einen eigenen Cache eingerichtet hat, um eben nicht in Konflikt mit Outlook zu kommen.

Problemfälle, Migrationen

Leider ist der Cache auch eine rein lokale Sache von Outlook und Outlook gleicht die Daten nicht einmal mit der Exchange GAL oder dem Offline Adressbuch abgleicht. Das größte Problem sind damit "veraltete" Einträge, die auf nicht mehr existente Empfänger verweisen. In dem Cache gibt es mehrere Typen von Empfängern, wie NK2View gut anzeigt:

Outlook speichert sich den "Address Type" mit ab und sie können sich schon denken, welche Adresse sich Outlook bei einer EX-Adresse speichert: Es ist natürlich wieder der schon lange als abgekündigt bezeichnete LegacyExchangeDN. Damit ist auch klar, welche Probleme in Verbindung mit dem NicknameCache in Firmen oft zu Verwirrungen führen:

  • Gelöschte Exchange Postfächer
    Diese werden von Outlook weiter vorgeschlagen, ob wohl sie schon lange nicht mehr im OAB oder in der GAL gelistet werden
  • Erneut angelegte Postfächer
    Es existiert bei vielen Administratoren immer noch die Meinung, dass man ein Postfach einfach löschen und mit gleichem Namen neu anlegen kann oder über einen Reconnect eine Disconnected Mailbox an ein AD-Konto binden kann. In der Regel bekommt dieses Objekt dann doch einen neuen LegacyExchangeDN.
  • Migrationen zwischen Systemen
    Vor einer Migration werden oft Kontakte oder MailUser für Postfächer angelegt, die noch im anderen System aktiv sind (Stichwort Verzeichnisabgleich). Wird nun das Postfach migriert, dann wird vorher der "MailKontakt" gelöscht und dafür eine neues Mailbox angelegt. Wird dabei der alte LegacyExchangeDN nicht als X.500-Adresse mitgeführt, dann wird ist der Eintrag im Nickname-Cache nicht mehr gültig.
    Wohl dem, der bei der Migration "richtig" arbeitet, damit dies nicht passiert.

Wenn der Support dann letztlich herausfindet, dass der Anwender nicht über das Adressbuch sondern über den Nicknamecache eine neue Mail erstellt und seine "Unzustelbarkeit" bekommt, dann ist es nicht immer einfach dem Anwender die Zusammenhänge zu erläutern.

Löschen und Bereinigen und Altern

Der einfachste Weg für einen Anwender besteht darin, den fraglichen Eintrag einfach über das "X" am ende rauszuwerfen. Alternativ kann er den Nickname-Cache auch komplett löschen. Früher musste der Anwender dazu die NK2-Datei suchen und löschen. Mittlerweile geht dies auch über eine Outlook Kommandozeile oder sogar über einen Button in Outlook selbst:

  • Outlook Kommandozeile
    Über das Ausführen-Menü kann der Anwender folgendes eingeben
Outlook.exe /CleanAutoCompleteCache“
  • Outlook GUI
    Über "Datei" - "Optionen" kann der Anwender selbst den Button aktivieren

Da die Daten sowieso auf dem „Server“ liegen, sind diese aber auch zentral löschbar. Allerdings gibt es kein fertiges Skript von Microsoft hierfür. Und selbst wenn Sie zentral dieses versteckte Element entfernen wollen, müssen Sie sicherstellen, dass der Anwender Outlook nicht gestartet hat. Sonst wird Outlook beim beenden diese Element wieder mit den Daten anlegen, die Outlook im Speicher hat.

Import

Auch Outlook selbst hat einige Funktonen als Kommandozeile, um NK2-Dateien vorheriger Outlook Versionen zu übernehmen. Normalerweise importiert Outlook  beim Start eine vorhandene NK2-Datei genau einmal. Das können Sie aber auch per Kommandozeile erneut ansstoßen

outlook.exe /importnk2

Allerdings habe ich diese Option bislang noch nicht eingesetzt, da ein "Neuanfang" speziell nach einer ProfilUmstellung durch eine Migration auch eine Change ist. So sind zumindest keine "alten" ungültigen Einträge mehr vorhanden. Und die Outlook Suche in der GAL und den Kontakten ist schon sehr gut, so dass der NickNameCache eher eine nette Hilfe denn eine Voraussetzung ist. Seit Outlook 2010 sind ja eh alle adressierten Kontakte auch in "Vorgeschlagene Kontakte" enthalten.

  • 980542 Importieren von NK2-Dateien in Outlook 2010

Größenlimit

Die NK2-Datei wächst natürlich nicht ins unendliche. Bis Outlook 2003 wurden nur maximal 1000 Einträge abgespeichert. Mit Outlook 2007/2010 wurde die Zahl auf 2000 angehoben. Wem das nicht reicht, kann über die Registrierung die Werte noch weiter anheben. Hier mal ein Beispiel für 5000 Einträge für die verschiedenen Office-Versionen:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_User\Software\Microsoft\Office\11.0\Outlook\AutoNameCheck]
"MaxNicknames"=dword:00001388

[HKEY_CURRENT_User\Software\Microsoft\Office\12.0\Outlook\AutoNameCheck]
"MaxNicknames"=dword:00001388

[HKEY_CURRENT_User\Software\Microsoft\Office\14.0\Outlook\AutoNameCheck]
"MaxNicknames"=dword:00001388

Aktuell kann ich den Eintrag nicht mehr Eventlog finden, aber mir war so, als für Outlook sogar eine Warnung ins Eventlog schreiben, wenn nur noch 10% "Platz" in der NK2-Datei gewesen wäre. Sollte ich den Event wieder finden, werde ich ihn nachreichen.

NK2 Editor/NK2View

Die Firma Nirsoft hat sich die Mühe gemacht, das NK2-Format der Datei, welches von Microsoft nicht offengelegt ist, zu decodieren und einen Editor dafür bereit zu stellen. Damit können Sie als Administrator oder Benutzer eine NK2-Datei einfach bearbeiten.

"Vorgeschlagene Kontakte" (Suggested Contacts)

Neu in Outlook 2010 ist auch der Ordner "Vorgeschlagene Kontakte". So genau habe ich dessen Funktion aber noch nicht verstanden, denn dies ist NICHT ein Ersatz für die NK2-Datei oder Nickname-Cache. Anscheinend speichert Outlook jede Adresse, an die ich etwas gesendet habe, hier als Kontakt. Vielleicht möchte ich die Adresse später ja noch einmal nutzen oder um Daten vervollständigen und dann in meinen normalen Kontaktordern überführen.

Beim Verfassen einer Mail werden die Daten aus diesem Ordner nicht zusätzlich zur Vorschlagsliste herangezogen aber Sie können natürlich auch in der Vorschlagsliste enthalten sein. Sie Kontakte werden aber per Default als Adressbuch angezeigt und beim "Namen Überprüfen" auch durchsucht.

Und er ein iPhone hat, der hat diesen Ordner auch automatisch in der Synchronisation:

Es ist aber ein ganz eigener Ordner und losgelöst zu sehen. Sie können das Verhalten von Outlook, jede jemals adressierte Mailadresse dort aufzunehmen in den Optionen abschalten:

Dann müssen sie nur noch den Inhalt des Ordner leeren und schon stören Sie nicht mehr alte Empfänger, die sie nur kurzfristig, z.B. bei einer Antwort auf eine Mail, verwendet haben.

Glen Scales hat auf http://gsexdev.blogspot.de/search?q=nk2#!/2012/03/how-to-series-sample-5-clearing.html schon ein Beispielskript bereit gestellt, welches mit entsprechend privilegierten Account den Ordner „Suggested Contacts“ leert.

Weitere Links