Teams und MFCMAPI
Haben Sie sich schon immer gefragt, wo Teams die persönlichen Chats und andere Informationen ablegt? Hier finden Sie ein paar Details:
Teams Datenablage
Wie ich auf anderen Seiten schon beschrieben habe, hat Microsoft Teams eigentlich keinen eigenen Datenspeicher. Nur Präsenzinformationen speichert Microsoft "irgendwo" und die Konfiguration kommt auch zum Teil aus einem AzureAD und dem Teams Directory. Aus anderen Quellen wissen wir aber, dass z.B. Aufzeichnungen mittlerweile im OneDrive des Anwenders landen und Dateien im 1:1 Chat ebenfalls in einem Ordner in OneDrive liegen und so "freigegeben" werden. Alles was aber in Teams Kanälen passiert, liegt entweder in der Microsoft 365 Group-Mailbox und die Dateien in einem Team landen in einer SharePoint Online Library. Aber einige Informationen landen auch im Exchange Online Postfach des Anwenders. Wenn ein Anwender kein Exchange Online Postfach hat, d.h. OnPremises arbeitet oder gar nicht Exchange nutzt, dann speichert Teams die Daten wohl in einem Schattenpostfach oder Datenspeicher, der nicht weiter beschrieben ist. Aber was sind das für Daten, die letztlich im Exchange Online Postfach liegen?
MFCMAPI
Outlook versteckt viele Ordner, die im Postfach vorhanden sind und auch per OWA und EWS ist nur eine Teilmenge erreichbar. Über das MAPI-Objektmodell und insbesondere das Programm Microsoft Exchange MAPI Editor (früher MFCMAPI) können Sie mit entsprechendem Fingerspitzengefühl und Vorsicht sehr tief in ein Exchange Postfach schauen. Sie sollten nur tunlichst darauf achten, nichts zu löschen oder zu ändern.
Wichtig ist, dass Sie MFCMAPI mit einem "Online-Profil" betreiben, d.h. der Cache-Mode muss ausgeschaltet sein, weil MAPI und Outlook dann nur die Ordner sehen, die in die OST-Datei repliziert werden.
Hier sehen Sie eine Momentaufnahme meines Postfachs bei Net at Work, in der ich im Baum ein paar Ordner markiert habe. Ich habe aber jede Menge Ordner ausgeblendet, die für die weitere Betrachtung nicht relevant sind.
Sie sehen ganz oben z.B. den "Root Container". Das ist die eigentlich Wurzel des Postfachs, die ihnen aber Outlook, OWA, ActiveSync und alle andere klassischen Zugriffe nie anzeigen. Die Mailclients starten erst im Unterordner "Oberste Ebene es Informationsspeichers". Schon der Name des Ordners ist sprachabhängig und in einem englischen Postfach lautet der Name dann "Top of Informationstore". Nun wissen sie natürlich das dies gar nicht die Wurzel ist sondern ein Unterorder unter der Root. Aber irgendwo müssen Outlook ja auch ihre ActiveSync-Partnerschaften, Blackberry-Konfigurationen, Posteingangsregeln, Junk-Mail-Listen und den Sync-Bereich für SMS-Nachrichten etc. speichern. Sie sehen diese Ordner auch nicht in der PowerShell mit "Get-Mailboxfolderstatistics".
Wenn Sie stattdessen aber einen Ordner "IPM_ROOT" finden, dann ist das ein deutlich Zeichen, dass Sie mit ein Profile mit aktiviertem Cache-Mode nutzen. Dann sehen sie viel weniger.
Für Teams habe ich ihnen ein paar Ordner "ROT" markiert, auf die ich mal etwas genauer eingehe.
Alle folgenden Informationen sind von mir gelesen und interpretiert. Es handelt sich aber nicht um eine offizielle API von Microsoft und Microsoft kann das Verhalten jederzeit ändern.
SkypeSpaceData\TeamsMeetings
Ich habe den Namen über eine Suchmaschine recherchiert und keinen einzigen Treffer gefunden. Das macht schon einmal skeptisch. Also habe ich die Ordnerinhalte genauer angeschaut
Die Ordner "SkypeSpaceData","SkypeMessages" und "TeamsMessages" hatten weder direkt Elemente noch assoziierte (versteckte) Elemente. Erst im Ordner "TeamsMeetings" gab es Einträge, die auch bis zum aktuellen Tag gingen und meine Teams Meetings enthielte. Hier speichert Teams also zusätzlich zum "Kalender" auch noch einmal Informationen zu Besprechungen.
Wenn Sie unten rechts schauen, dann sind hier 7347 Elemente. Anscheinend wächst der Ordner einfach immer weiter. Bei mir ist die ersten Nachricht vom 3. Nov 2018 und ein "Teams Call" zu einem Kollegen. Jede Mail ist zwischen 8 und 20 kbyte groß. Der Ordner wäre dann ca. 88 Megabyte groß. Das Property "PR_MESSAGE_SIZE_EXTENDED" auf dem Ordner weist aber 217 MB aus. Ich gehe davon aus, dass solche Inhalte auf die Postfachgröße eingerechnet werden.
Interessant ist, dass z.B. beim Meeting im Feld "PidLidCommonStart" und "PidLidCommonEnd" die realen Zeiten des Meetings (UTC) stehen. Auch das Property "PR_BODY" enthält das Protokoll, wann Teilnehmer das Meeting betreten und verlassen haben.
Al diese Daten liegen im Postfach des Benutzers und könnten damit auch von dort ausgewertet werden.
TeamsChatHistory
Dieser Ordner ist in meinem Postfach komplett leer. er wurde laut Metadaten schon im Jahr 2018 angelegt und 2023 das letzte Mal geändert.
Wenn Teams da mal etwas getan hat, dann ist schon länger nichts mehr passiert.
TeamsMessagesData
Interessanter ist wieder dieser Ordner, der sehr viel länger zum Laden gebraucht hat. Wenn sie unten rechts in die Ecke schauen, dann sind 64695 Elemente in diesem Ordner, die bei mir vom 8. März 2021 bis heute, 6. Jun. 2024) vorhanden sind. Microsoft Teams hat um 2017 das Licht der Welt erblickt und im Ordner "TeamsChatHistory" finde ich erste Meldungen vom 16. Feb 2018. Das dürfte die Zeit gewesen sein, zu der ich mit Teams gestartet bin. Demnach hat Microsoft wohl ca. drei Jahre später angefangen die Chat-Nachrichten im Postfach abzulegen.
Bei mir sind fast alle Nachrichte vom Typ "IPM.SkypeTeams.Message" und erst letztem Monaten haben sich Copilot-Meldungen addiert. Beachten Sie auch die Spalte "Size". Wenn ich in MFCMAPI mit auch das Property "PR_MESSAGE_SIZE_EXTENDED" liefern lasse, dann ist mein Ordner angeblich 8 GB groß.
- Display Server Folder Sizes Property
https://learn.microsoft.com/en-us/office/client-developer/outlook/mapi/display-server-folder-sizes-property
Ob diese Zahl stimmt, muss sich bei Gelegenheit noch einmal genauer analysieren, indem ich alle Elemente einzeln addiere.
Im Fenster habe ich zwei Nachrichten "Blau" markiert, da beide zum gleichen 1:1-Chat mit der Person gehören. Sie sehen bei der letzten Meldung die Antwort "Ach jau .. komme mal rum .." im Feld "PR_PREVIEW" und im Feld "PR_HTML" sehe ich die komplette HTML-formatierte Nachricht:
Teams scheint hier also nicht den Chat mit einer Person in einer Nachricht fortzuschreiben, sondern jede Chat-Nachricht ist eine eigene Message in diesem Ordner.
Wenn ich meine eigenen Nachrichten in Teams überarbeite, dann ändert sich auch die Nachricht in Exchange. Dies ist also wirklich das Backend für die Ablage von 1:1 Chat-Nachrichten. Natürlich habe ich dann auch einen Eintrag mit MFCMAPI geändert. Die Berechtigungen dazu habe ich und eine Änderung war auch möglich aber die wurde nicht sofort in Teams geändert angezeigt. Auch das Löschen einer eingegangenen Nachricht wurde in Teams weiter angezeigt.
TeamsMessagesData:Copilot
In dem Ordner gibt es aber auch einige "IPM.SkypeTeams.Message.Copilot.Word"-Messages.
Im Gegensatz zu den einfachen "IPM.SkypeTeams.Message"-Nachrichten hatten diese aber sogar Anlagen und waren auch in der Dateigröße etwas umfangreicher. Daher habe ich mir eine Nachricht geschnappt. Sie passte genau zu meiner Nutzung von Copilot, bei der ich in Word eine Dokumentation für einen Kunden geschrieben und in dem Zug eine Zusammenfassung von Copilot erbeten habe. Im Feld "TextExtractionResult" habe ich genau die Zusammenfassung gefunden, die mir Copilot damals in Word angezeigt hat.
An der Nachricht selbst waren sogar zwei Anlagen enthalten.
Die HTML-Datei ist die Zusammenfassung, d.h. der Text aus "TextExtractionResult" als HTML-Datei. Die andere Datei ist der Verweis auf das Word-Dokument, an dem ich gearbeitet hatte. Allerdings konnte ich dieses Element nicht herunterladen. Schon von der Größe (ca. 6MB) konnte es gar nicht an der eigentlich Mail angehängt gewesen sein. Ich vermute, es ist ein Verweis oder Link auf das Dokument in Sharepoint. In anderen Feldern finde ich dann auch den Verweis auf die Sharepoint-URL
Aufgezeichnete Unterhaltungen
Auch wenn diese Ordner eher wie ein Sammelordner aussieht, finden sich in diesem Ordner bei mir Nachrichten vom Typ "IPM.Note.Microsoft.Conversation" und "IPM.Note.Microsoft.Conversation.Voice aus dem Zeitraum 2016-2021.
Wenn ich mir die Elemente anschaue, dann sind dies überwiegen "Meetings", in denen teilgenommen habe, Gruppenchats und Sprachverbindungen. Schon anhand der Größe können Sie sehen, dass hier deutlich mehr Informationen gespeichert werden. Ich habe im Feld "PR_BODY" z.B. den kompletten Chatverlauf des Meetings gefunden.
In anderen Fehlern waren die Nachrichten als RTF-String abgelegt
Aufgezeichnete Unterhaltungen\Teamschat
In diesem Ordner habe ich nur 41 "IPM.SkypeTeams.Message"-Nachrichten aus dem Zeitraum von März 2019 bis März 2020 gefunden.
Auch hier scheinen das 1:1 oder GroupChat-Meldungen zu sein, bei denen jeder Eintrag eine eigenes Element ist. Die Größe von ca. 220-230kByte macht mich etwas stutzig. Wenn ich die Elemente nämlich "exportiere", dann sind die XML-Dateien ca. 800kByte. Der Overhead ist zum Teil durch die Konvertierung in XML und UNICODE zu erklären. Aber so sammeln sich 8 Megabyte in diesem Ordner.
LyncConversationLogs/LyncMissedConversationLogs
Wer noch mehr in die Vergangenheit geht, könnte noch Order mit "Lync" im Namen finden. Bei mir waren in "LyncConversationLogs" aber nur 123 Einträge aus der Zeit von 2016 bis 2021 und enthält Informationen zu 1:1 Chats, VoIP-Anrufen über Teams aber auch zu Rufnummern und Meetings.
Im Ordner "LyncMissedConversationLogs" habe ich dann grade mal 188 Elemente aus dem Zeitraum 2016-2018 gefunden, in denen "Verpasste Anrufe" und "Verpasste Unterhaltungen" mit der Message Class "IPM.Note.Microsoft.Missed" und "IPM.Note.Microsoft.Missed.Voice" lagen.
ComponentShared Mailbox
Da wir nun wissen, wo Chat-Nachrichten im Postfach liegen, stellt sch die Frage nach dem Ablageort ohne ein Exchange Online Postfach. Bei Microsoft Teams habe ich dazu nichts gefunden und auch in Exchange erst einmal nicht aber im Blog-Beitrag von Exchange zum "Cross Tenant Move" gibt es jede Menge Hinweise.
- Introduction to Cross-Tenant Mailbox Migrations
https://techcommunity.microsoft.com/t5/exchange-team-blog/introduction-to-cross-tenant-mailbox-migrations/ba-p/4169613
When a mailbox is migrated to another tenant, only user-visible content in the mailbox (also known as ‘Top of Information Store’ - email, contacts, calendar, tasks, and notes) and the Recoverable Items folders (Deletions, Versions, and Purges) are migrated. Non-user-visible content (including Teams chats stored in the Exchange Online mailbox by the Teams service) is not migrated.
Das stimmt schon mal mit meiner Einschätzung, dass Teams die Ordner "oberhalb" des "Top of Informationstore" nutzt und diese bei einer Postfachmigration nicht mit übertragen werden. Eine Cross Tenant Migration von Exchange Postfächern nimmt aber auch keine Teams Chats mit.
After migration has successfully completed, the source mailbox is converted to a Mail User object with a ComponentShared mailbox, and all visible data in the mailbox is deleted. Under no circumstances is the source mailbox data available, discoverable, or accessible in any way in the source tenant (except for non-Exchange data that is stored in a user’s mailbox, like Teams chat data and Copilot interactions which remain in the ComponentShared mailbox).
Das bedeutet aber auch, dass ein "Mailuser" immer noch eine kleine Mailbox im Tenant hat, auch wenn er keine Mails mehr darin hat.
Since Teams chat folder content remains with the source tenant within the ComponentShared mailbox location type (and possibly in a SubstrateExtension mailbox, which might be present because of autosplitting a large ComponentShared mailbox), once the user data has been migrated, the Teams chat folder content is available for source tenant admins to search and export using Content Search.
Interessant, dass ein Blog-Artikel über eine Exchange Cross Tenant Migration so viele Einblicke in die eigentliche Funktion gewährt.
- T2T Exchange Walkthrough
- Introduction to Cross-Tenant Mailbox Migrations
https://techcommunity.microsoft.com/t5/exchange-team-blog/introduction-to-cross-tenant-mailbox-migrations/ba-p/4169613
Einschätzung
Eigentlich habe in in einem Supportfall zu IMAP4 mit Mac OS-Mails wieder MFCMAPI mit einen Online-Profil eingesetzt. Dabei sind mir die Teams Ordner wieder aufgefallen und ich war einfach mal neugierig. Ich bin mir noch nicht sicher, was ich mit den Erkenntnissen anfangen werde. Auf der einen Seite bin ich über die schiere Menge an Elementen und der damit verbundenen Größe im Ordner "TeamsMessagesData" erschrocken. Diese Menge ist für Anwender aber auch für Administratoren "unsichtbar" aber dürfte auf das Exchange Quota gezählt werden und ich sehe keine Logik, um alte Elemente zu entfernen.
Auf der anderen Seit könnten diese Daten eine interessante Quelle für Auswertungen oder Export/Archiv-Funktionen sein. Vielleicht bezieht Copilot auch diese Informationen mit ein. Dagegen spricht natürlich, das ein Lesen von einem "PR_BODY"-Feld aus tausenden von Elementen auch den Exchange Server kräftig belasten würde. Aber vielleicht weiß Microsoft da mehr zur Skalierung von Exchange, denn ich konnte auch sonst keinen "Cleanup"-Prozess z.B. für sehr alte ActiveSync-Partnerschaften finden. Vielleicht sind Bytes einfach viel billiger.
Wer es aber drauf anlegt, kann über die MAPI-Schnittstelle weiterhin problemlos an diese Elemente kommen und diese auslesen. Anlegen, Ändern oder Löschen würde ich über diesen Weg aber keine Einträge, denn bislang haben solche Änderungen noch nicht zu Teams zurück gefunden. Ich vermute mal, dass Teams einfach nicht davon ausgeht, dass jemand an Teams vorbei an den Daten etwas ändert.
Weitere Links
- Microsoft Exchange MAPI Editor (früher MFCMAPI)
- Teams HTTP-Analyse
- Teams Kontakte
- Display Server Folder Sizes Property
https://learn.microsoft.com/en-us/office/client-developer/outlook/mapi/display-server-folder-sizes-property - Speicherort von Daten in Microsoft Teams
https://docs.microsoft.com/de-de/microsoftteams/location-of-data-in-teams
Da stehen leider nur die groben Orte aber nicht die Details pro Datentyp - Where is Microsoft Teams data stored? A comprehensive breakdown
https://www.jdsupra.com/legalnews/where-is-microsoft-teams-data-stored-a-9497376/
Viel mehr Details aber leider keine Informationen über die Kontakte. - Surprising places where your microsoft teams data is stored
https://techgenix.com/microsoft-teams-data/ -
Teams Meeting Migration Service (MMS)
Dieser Service migriert Besprechungen aber keine Kontakte. Die werden bei einer Migration von Skype for Business durch einen anderen Prozess übertragen