Outlook Sniffer - Helfer im Hintergrund

Outlook ist ein erstklassischer "Personal Information Manager". Aber auch wenn die Informationen für den Anwender "persönlich" sind, so gibt es jede Menge Informationen, die Outlook auch ohne Hilfe des Anwenders verarbeiten kann. Dazu zählen:

  • Terminanfragen
    Wenn der Anwender dies aktiviert, dann werden Anfragen von anderen Personen, die sich nicht mit einem bestehenden Termin überlappen, automatisch unter "Vorbehalt" im Kalender eingetragen. Damit erscheint dieser Terminzeitraum dann auch für andere Mitarbeiter schon als "vorbehaltlich" reserviert und es reduzieren sich Konflikte verschiedener Termine
  • TerminÄnderungen
    Immer wieder werden Termine vom Organisator verschoben oder verändert. Outlook kann solche Änderungsmeldungen ebenfalls automatisch verarbeiten. Dazu zählen auch Inhalte, also die Beschreibung eines Termins. Verkneifen Sie es sich daher auch, einen Termin zu verändern, zu dem Sie eingeladen wurden.
  • Aktualisierungen von Aufgaben
    Haben Sie eine Aufgabe an jemand anderen delegiert, dann werden Statusaktualisierungen ebenfalls automatisch in ihrem Outlook aktualisiert.
  • Nachrichterückruf (Siehe auch weiter unten auf dieser Seite)
    Outlook erlaubt es, dass Sie eine einmal gesendete Nachricht unter bestimmten Bedingungen zurückrufen können. Das Outlook beim Empfänger muss dies natürlich erlauben.
  • Abstimmungen
    Sie können per Mail über die Abstimmungsschaltflächen eine Umfrage durchführen. Die Teilnehmer können dann einfach über Buttons ihre Antwort geben. Diese Rückläufer kann ihr Outlook ebenfalls alleine der versendeten Mail in "Gesendete Objekte" zuordnen und die Antworten zu einem Bericht zusammenstellen.
  • Quittungen (Gelesen/Zugestellt)
    Wenn sie eine Mail per "Einschreiben" oder gar mit "Gelesen-Quittung" versenden, dann sendet der letzte Mailserver die Zustellquittung und der Mailclient eine" Read-Quittung", sofern dies nicht unterbunden wird. Diese Rückläufer kann Outlook ebenfalls an die versendete Mail zuordnen, so dass Sie den Status dort sehen können

Voraussetzung ist dabei aber immer, dass Outlook aktiv ist.

Achtung: Einige Nachrichten, z.B. Terminanfragen können auch durch Serverprozesse verarbeitet werden, wenn dies durch den Administrator (z.B.: für Ressourcen) aktiviert wird.

Einstellungen und Anzeigen in Outlook

In Outlook verbergen sich die Einstellungen an verschiedenen Stellen:

  • Extras -Optionen - Einstellungen - E-Mail Optionen - Verlaufsoptionen
    Über diese Einstellungen, die auch per Gruppenrichtlinie zu steuern sind, wird vorgegeben, ob der Outlook Sniffer die eintreffenden Quittungen automatisch bearbeiten soll.
    Im mittleren Teil können Sie die Voreinstellungen konfigurieren, die für den Versand eigener Mails gelten sollen.

    Im unteren Teil können Sie für die Verbindungen per POP3/SMTP steuern, ob Sie eine "Gelesen"-Quittung versenden. In Verbindung mit dem Exchange Server kann der Administrator dies global steuern und insbesondere verbieten.
  • Optionen beim Mailversand
    Die globalen Optionen werden übernommen aber sind vor dem Versand natürlich ebenfalls änderbar

    Hier ist eingestellt, dass sowohl eine Quittung für die Zustellung als auch für das öffnen/Lesen der Nachricht angefordert wird. Dies garantiert aber nicht, dass diese Quittungen auch vom Empfänger erstellt werden.
  • Anzeigen des Status
    Wenn Sie im Ordner "gesendete Elemente" nachschauen, dann sehen Sie schon am Icon, für welche Nachrichten schon Statusmeldungen verarbeitet wurden.
  • Status an der gesendeten Mail
    Genauere Informationen erhalten Sie, wenn Sie die versendete Mail öffnen und dort den Status anzeigen lassen

    Bei Outlook 2003 versteckt sich der Status hinter einer dann erscheinenden Karteikarte.

Hintergründe, Zeiten und Registrierung

Auch wenn es über den Prozess nicht viele Dokumente gibt, so scheint er per MAPI in Outlook darauf zu warten, dass Outlook "Idle" ist. Wobei nicht genau klar ist, wann Outlook "Busy" ist. Mein Outlook hat schon Quittungen verarbeitet, wenn ich gerade eine Mail verfasst habe. Umgekehrt scheint ein Abgleich mit dem Server (Offline Mode) die Verarbeitung auszusetzen. Wenn ich jedoch eine Quittung selbst öffne, dann ist das ein Startzeichen für Outlook, diese Quittung sofort zuzuordnen.

Die Zeit, mit der der Prozess zur Arbeit geht, lässt sich über die Registrierung beeinflussen

Windows Registry Editor Version 5.00
 
[HKEY_CURRENT_User\Software\Microsoft\Office\11.0\Outlook\Options\General]
"AutoProcessIdleTime"=dword:000001f4
"AutoProcessIdleTimeMax"=dword:000003e8

ändert die Standardwerte von 30 Sekunden (Ruhezeit, ehe der Sniffer wieder aktiv wird) und 10 Minuten (maximale Zeit, die der Sniffer auf Leerlauf bei Outlook wartet) auf 1 Sekunde und 1 Minute. Damit werden eingehende Bestätigungen in den meisten Fällen umgehend verarbeitet. Dies hilft auch bei der Fehlersuche, wenn die Mails nicht verarbeitet werden. Die Standardwerte greifen immer dann, wenn Sie die Schlüssel einfach wieder löschen oder umbenennen. Sehr kurze Intervalle erhöhen die Belastung auf dem System. Andere Quellen schreiben dass der MAX-Timer hingegen eine Verzögerung angeben würde, ab wann Outlook wieder schaut, ob es Idle ist.

"Es darf nur einen geben" und die Kommandozeile

Es wäre fatal, wenn ein Benutzer auf mehreren Systemen Outlook startet und durch den Cached Mode mehrere Outlook-Systeme parallel die Quittungen verarbeiten und die Nachrichten im Posteingang oder Termine im Kalender verwalten würden. Daher sorgt Outlook dafür, dass nur eine Instanz auch wirklich die eingehenden Nachrichten verarbeitet. Das kann aber manchmal aus dem Tritt kommen. Daher kennt Outlook zwei Optionen für die Kommandozeile, um hier Vorgaben zu machen oder Altlasten zu bereinigen.

  • /cleansniff
    Damit wird die Logik zu Erkennung außer Kraft gesetzt, welche Instanz den Sniffer ausführt. Hiermit wird eine eventuell vorhandene Sperre zurückgesetzt und Outlook kann neue Elemente verarbeiten.
  • /sniff
    Diese Option zwingt das damit gestartete Outlook, neue Terminanfragen im Posteingang zu erkennen und zu verarbeiten. Nach meinen Informationen wirkt sich dies aber nicht auf die Verarbeitung von Quittungen aus.

Aktuell habe ich noch nicht heraus gefunden, wo genau die Information steht, welches Outlook nun der aktuelle Sniffer ist.

IPM.Microsoft.SniffData

Es hat mich einige Zeit gekostet, in einem Postfach den vermutlich entscheidenden Eintrag für die Steuerung des Sniffers zu finden. Damit es nicht zu Doppelbearbeitungen kommt, müssen sich mehrere Outlooks bei der automatischen Verarbeitung von eingehenden Nachrichten abstimmen. Nur einer sollte die Arbeit durchführen.

MFCMAPI erlaubt den Blick in die Postfachstruktur und in einem Ordner, der einen Ebene über dem eigentlichen Posteingang aufgehängt ist.

Dort finden Sie die entsprechende Nachricht mit dem Betreff "Sniffer".

Leider habe ich auch keine weiteren Quellen, aber anscheinend hinterlegt sich der gerade aktuelle Client im Feld 0x6002001e. Dort steht der Computername des Clients, der gerade als "Sniffer" agiert. Allerdings konnte ich noch keine Details in Erfahrung bringen, wann ein Client hier einen bestehenden Eintrag ersetzt oder überschreibt.

PR_PROCESSED

Mit MFCMapi können Sie aber erkennen, welches Element durch den Sniffer schon verarbeitet worden ist. In meinem Beispiel öffne ich eine verarbeitet Quittung im Ordner "Gelöschte Objekte" und betrachte das PR_PROCESSED-Attribut der Mail

Damit ist klar, dass "Etwas" diese Mail gesehen und verarbeitet hat. Leider muss das nicht immer der Outlook Client gewesen sind. Das kann auch ein Blackberry Server, CDO oder anderer Agent sein. Durch diese Feld wird einfach verhindert, dass mehrere Clients das gleiche Objekt mehrfach verarbeiten. Beachten Sie aber, dass nicht jeder Client immer "online" arbeitet. Der Cached-Mode kann solche Aktualisierungen durchaus mehrere Sekunden verzögern und Clients mit lange Netzwerkelaufzeiten können Effekte verursachen.

Hilfe durch den Server

Zuletzt kann auch der Exchange Server oder ein Dienst auf dem Server bei der Verarbeitung mithelfen. Das ist für Quittungen noch unwahrscheinlich aber für Terminanfragen und Koordination kann der "Auto Accept Agent" diese Anfragen in Ressourcen Postfächern beantworten. Seit Exchange 2010 ist diese Funktion sogar in den Server komplett gewändert und per Ressourcen Postfächern eingeschaltet. Eine automatische Terminverarbeitung kann der Administrator aber auch für normale Postfächer aktivieren. Diese Funktion ist sogar für Terminanfragen by Default aktiviert.

Und dann haben wir noch Outlook Web Access, welches schon seit Exchange 2003 z.B. auch dafür gesorgt hat, dass bei neuen Terminen auch die Frei/Belegt-Zeiten aktualisiert wurden. Dies ist bei Exchange 2007/2010 nicht mehr erforderlich, wenn Outlook 2007/2010 auf den Concierge-Service des CAS-Servers zugreift und dieser live in die Kalender schaut.

Allgemeines Troubleshooting

Die ganze Arbeit des "Outlook Sniffers" wird durch Outlook erledigt. Damit ist auch klar, dass eine Fehlersuche am besten auf dem Client erfolgt, welcher sogar die passenden Optionen dafür bereit stellt. Siehe auch "841615 Description of the Calendar logging feature in Outlook". Über entsprechende Registrierungsschlüssel können Sie Outlook anweisen, seine Aktionen in eine Datei zu protokollieren:

Zuerst können Sie einfach über "Extras- Optionen - Erweitert" eine Protokollierung aktivieren:

Die gleiche Einstellung kann über eine Systemrichtlinie oder die Registrierung umgesetzt werden:

Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\Software\Microsoft\Office\12.0\Outlook\Options\Mail]
"EnableLogging"=dword:00000001

Diese Einstellung sollten Sie nach der Fehlersuche aber wieder abschalten, das sie Performance auf dem Client kostet und die Protokolldateien eventuell vertrauliche Informationen enthalten.

Die Ausgaben landen in einer Datei, die per Default im lokalen TEMP-Verzeichnis des Benutzers landen:

\documents and settings\<Username>\local settings\temp\logcalb###

Bei jedem Start legt Outlook eine neue Datei an und zählt die Nummer im Dateinamen entsprechend weiter hoch. Leider sind die Daten binär und können so einfach nicht ausgelesen werden. Microsoft verweist selbst darauf, dass die Daten nur durch PSS gelesen werden können.

  • 841615 Description of the Calendar logging feature in Outlook
  • 831053 How to turn on the Enable Mail Logging option für troubleshooting in Outlook 2003 and Outlook 2007
  • Zusammenarbeit mit dem Support zur Behandlung von Problemen mit dem Outlook-Kalender in einer Exchange-Umgebung
    http://technet.microsoft.com/de-de/library/cc891495.aspx

Eventuell kann es auch eine Option sein mit Programmen wie ExInsight auf dem Server die Zugriffe genau anzuschauen.

Was sie noch prüfen können

Da wir alle nicht die Tools haben, um die Trace-Datei auszuwerten, müssen anderen Dinge für die Fehlersuche herhalten bzw. Checks, die bei der Fehlersuche helfen

  • Ist das fragliche Element noch im Posteingang ?
    Es kann durchaus sein, dass Regeln, Add-ons oder andere Programme ebenfalls den Posteingang überwachen und die Elemente löschen oder verschieben und damit Outlook diese Elemente gar nicht mehr erkennt. Besonders Regeln auf dem Client, Antiviren-Programme, Spam-Add-ons, Zusatzprogramme zur Synchronisation mit Mobilgeräten  etc. sind hier Störquellen.
  • Outlook Konfiguration
    Sind Sie sicher, dass sie unter Extras -Optionen - Einstellungen - E-Mail Optionen - Verlaufsoptionen auch die automatische Verarbeitung der fraglichen Elemente tatsächlich angewiesen haben ?
  • Sniff Owner
    Es ist kein Problem, auf mehreren PCs und Outlook parallel das gleiche Postfach zuzugreifen. Allerdings darf nur ein Outlook die automatische Verarbeitung durchführen. Noch weiß ich nicht, wie die Outlooks dies untereinander regeln aber mit "/SNIFF" kann man ein Outlook zum Sniffer hochstufen und mit "/Cleansniff" die Informationen über den "Sniff-Owner" löschen und neu schreiben lassen. Vielleicht ein Versuch ?
  • Outlook braucht "Ruhe"
    Der Sniff-Prozess arbeitet nur, wenn Outlook "Idle" ist. Nun kann man als Anwender nicht sehen, dann das der Fall ist, denn andere Prozesse (z.B. Indexprodukte und Add-ons) können MAPI durchaus belasten. Auch hier sind oft Add-ons oder Tools oft als verdächtig anzusehen. Die Idle-Zeit kann über die Registrierung gesteuert werden.
  • Fremder "Schnüffler"
    Wurde ein Element schon automatisch verarbeitet, dann setzt es das Feld "PR_PROCESSED", damit es nicht ein zweites Mal verarbeitet wird. Kontrollieren Sie einfach mal mit MFCMAPI dieses Property. Wenn es "true" ist, dann wurde die Mail schon von "irgendetwas" verarbeitet. Leider ist es nicht einfach genau den Verursacher zu finden. Versuchen Sie es mal, wenn Outlook nicht gestartet ist und prüfen Sie mit MFCMAPI, ob das Feld immer noch gesetzt wird. Vielleicht ist es ein Serverprozess (z.B. Blackberry, CRM-Add-ons o.ä.). Mit MFCMAPI können Sie das Feld auch wieder auf "FALSE" setzen
  • Outlook zurücksetzen
    Wenn all das nichts hilft, dann ist es ein Versucht, Outlook "frisch" zu machen, z.B. indem bei geschlossenem Outlook die Dateien "C:\Documents and Settings\<User>\Application Data\Microsoft\Outlook\outcmd.dat (Hidden)", "frmcache.dat" und "outlprnt" gelöscht werden. starten Sie dann Outlook neu
  • Fehlenden DLLs
    Manchmal kann es sein, dass Outlook DLLs nicht mehr registriert sind. Dann kann es helfen, wenn Sie folgende Befehle auf der DOS-Boy ausführen:

regsvr32 OLE32.DLL
regsvr32 INETCOMM.DLL

  • Outlook Add-ons deaktivieren
    Über den Addin Manager von Outlook können Sie mit geladenen Add-ons deaktivieren. Dies kann auch per Registry erfolgen (Siehe auch Outlook AddIns) Manchmal hilft es auch die Datei "extend.dat" zu entfernen, damit Sie frisch aufgebaut wird.
  • Externe Programme
    So wie ich per VBScript von Extern Outlook steuern kann (Siehe Olk VBScript), kann dies auch jedes andere Programm. Genau das kann natürlich auch mit der Outlook Sniffer-Funktion stören.
  • Probleme mit dem Outlook Profil
    Auch wenn es eher wenig wahrscheinlich ist, so ist es natürlich sehr einfach ein neues Profil anzulegen und damit noch mal sein Glück zu versuchen.
  • Letzte Rettung: Outlook neu installieren oder PC wechseln
    Es kann natürlich sein, dass die Installation von Outlook defekt ist. Sie können natürlich Outlook "reparieren" oder einfach deinstallieren und neu installieren. Allerdings würde ich dann eher den PC einfach mal ausschalten und mich einfach an einem anderen PC anmelden, der funktioniert und dort die Funktion zu prüfen.

Sonderfall: Message Recall

Outlook erlaubt es einem Absender, eine einmal versendete Mail wieder "zurück" zu rufen. Das ist natürlich nicht im SMTP-Standard irgendwo hinterlegt, sondern auch eine Funktion von Outlook und dem Outlook Sniffer. Es funktioniert daher nur mit:

  • Empfänger setzt Outlook ein
  • Outlook ist gestartet und mit dem Postfach verbunden
  • Nachricht muss ungelesen sein

Daher gibt es sehr viele Situationen, in denen der Rückruf natürlich nicht funktioniert z.B. wenn

  • Empfänger kein Outlook verwenden
    z.B. POP3, IMAP4, OWA, ActiveSync o.ä.
  • Outlook nicht mit dem Provider verbunden ist
    z.B. Outlook hat die Mail online empfangen aber der Empfänger ist mittlerweile offline
  • Empfänger hat die Mail schon verarbeitet
    Also z.B. gelesen oder in einen anderen Ordner verschoben hat
  • Message-Vorschau
    Über die Vorschau kann auch eine Mail betrachtet werden, die schon zurückgerufen wurde, weil die Vorschau noch nicht die Logik aktiviert.

Da Sie als Absender dies aber nicht alles wissen können, ist ein Rückruf nur bedingt zu gebrauchen.

Weitere Links