Verarbeitung von E-Mail-Nachrichten-Dateien mit dem File-SDK
Das MIP SDK unterstützt die Entschlüsselung und Verschlüsselung von E-Mail-Nachrichten. Sowohl .msg-Dateien, die von Outlook oder Exchange erzeugt werden, als auch .rpmsg-Dateien werden vom SDK unterstützt, wenn auch mit leicht unterschiedlichen Methoden.
Häufige Anwendungsfälle für dieses Szenario sind:
- Entschlüsseln Sie E-Mails und Anhänge für die Inspektion zur Verhinderung von Datenverlusten (Data Loss Prevention, DLP).
- Veröffentlichen von geschützten Nachrichten direkt aus branchenspezifischen Apps
- Entschlüsselung, Änderung und erneuter Schutz von Nachrichten während der Übertragung.
- Anwenden von Bezeichnungen auf E-Mails von DLP- oder Mail-Gateway-Diensten.
MSG File-Supporthinweis
MIP SDK unterstützt die Anwendung und Entfernung des Schutzes für .msg-Dateien. Angesichts der Vielzahl von Codierungstypen und Variablen im Format im Laufe der Jahre ist es nicht möglich, zu garantieren, dass MIP SDK den Schutz von allen .msg-Dateien entfernen kann. Im folgenden Abschnitt wird die Unterstützung von .msg-Dateien aus verschiedenen Quellen beschrieben.
- Das Entfernen des Schutzes von .msg-Dateien, die mit MIP SDK geschützt wurden, wird vollständig unterstützt.
- Das Entfernen des Schutzes von .msg-Dateien, die von den aktuell unterstützten Versionen des Outlook-Clients erstellt wurden, wird vollständig unterstützt.
- Das Entfernen des Schutzes von .msg-Dateien, die von nicht mehr unterstützten Versionen des Outlook-Clients erstellt wurden, wird so gut es geht unterstützt.
- Der Erneute Schutz von MSG-Dateien ist nicht mit geschützten Bezeichnungen verfügbar. Benutzer müssen den Schutz aufheben und die geschützte Bezeichnung explizit entfernen, bevor Sie die Datei erneut mit einer anderen Bezeichnung schützen.
Bezeichnung von .msg-Dateien
MIP SDK unterstützt das Lesen und Schreiben von Bezeichnungen für .msg-Dateien. Untergeordnete Anhänge erben die Bezeichnung nicht, wohl aber die Schutzeinstellungen. Weitere Einzelheiten finden Sie unter Beschriftungs- und Schutzvorgänge im File SDK für .msg-Dateien.
Beschriftungs- und Schutzvorgänge im File SDK für .msg-Dateien
Das File SDK unterstützt Bezeichnungsvorgänge für .msg-Dateien in ähnlicher Weise wie bei jedem anderen Dateityp, mit der Ausnahme, dass das SDK die Anwendung benötigt, um das MSG-Featureflag zu aktivieren.
Wie bereits erwähnt, ist für die Instanziierung von FileEngine
ein Einstellungsobjekt erforderlich: FileEngineSettings
. FileEngineSettings
kann zur Übergabe von Parametern für benutzerdefinierte Einstellungen verwendet werden, um spezifische Anwendungsanforderungen zu erfüllen. Um MIP SDK die Verarbeitung von .msg-Dateien zu ermöglichen, wird die CustomSettings
-Eigenschaft des FileEngineSettings
-Objekts verwendet, um das Flag für enable_msg_file_type
für die Verarbeitung von .msg-Dateien zu setzen.
Wenn Sie ein FileEngineSettings
-Objekt namens engineSettings erstellt haben, legen Sie diese Eigenschaft in .NET wie folgt fest:
engineSettings.CustomSettings = new List<KeyValuePair<string, string>>();
engineSettings.CustomSettings.Add(new KeyValuePair<string, string>("enable_msg_file_type", "true"));
Der Pseudocode für den Schutz von .msg-Dateien kann wie folgt aussehen:
- Setzen Sie das
enable_msg_file_type
-Flag inmip::FileEngineSettings
und fügen Sie dasmip::FileEngine
zumip::FileProfile
hinzu. - Verwenden Sie die
FileEngine
, um die Liste der Bezeichnungen für den Benutzer abzurufen. - Erstellen Sie den
mip::FileHandler
, der auf die zu bezeichnende Datei zeigt. - Wählen Sie eine Bezeichnung aus und verwenden Sie die
mip::FileHandler
-Methode desSetLabel
s, um die Bezeichnung anzuwenden.
Lesen Sie den Abschnitt Schnellstart: Bezeichnungen auflisten, um zu erfahren, wie man Bezeichnungen auflistet.
Ändern von Standardverhalten der Anlagenbehandlung
Standardmäßig versucht das File SDK, alle Anlagen zu verarbeiten, die Teil einer MSG-Datei sind, oder eine message.rpmsg-Datei bei Verwendung der Inspektions-APIs. Standardmäßig werden nur das Element auf Stammebene und Anlagen der ersten Ebene entschlüsselt.
Um dieses Verhalten zu ändern, kann die benutzerdefinierte Einstellung container_decryption_option
verwendet werden. In C++ wird dies über ein enum mip::ContainerDecryptionOption
verfügbar gemacht.
Optionsname | Beschreibung |
---|---|
All |
Entschlüsselt die MSG-Datei und Anhänge. Wenn es sich bei der Anlage um eine MSG-Datei handelt, werden die MSG und ihre Anlagen rekursiv entschlüsselt. Es werden maximal zehn Ebenen rekursiv entschlüsselt, bevor mip::BadInputError("Max depth reached on nested msg attachments") ausgelöst wird. |
Default |
Identisch mit Msg . |
Msg |
Entschlüsselt die Anlagen der MSG und der ersten Ebene. Entschlüsselt nicht rekursiv angefügte MSG-Dateien. |
Top |
Entschlüsseln Sie nur die MSG-Datei, und entschlüsseln Sie keine Anlagen. |
Das folgende Beispiel zeigt, wie Sie eine Anwendung in .NET festlegen, um nur die MSG-Stammdatei zu entschlüsseln.
engineSettings.CustomSettings.Add(new KeyValuePair<string, string>("container_decryption_option", "Top"));
Und in C++:
vector<pair<string, string>> customSettings;
customSettings.emplace_back(mip::GetCustomSettingContainerDecryptionOption(),
mip::ContainerDecryptionOptionString(mip::ContainerDecryptionOption::Top));
engineSettings.SetCustomSettings(customSettings);
File SDK-Vorgänge für .rpmsg-Dateien
MIP SDK stellt eine Inspektionsfunktion bereit, die die eingebettete Datei message.rpmsg entschlüsseln und eine Reihe von Byteströmen als Ausgabe präsentieren kann. Es ist Aufgabe des SDK-Kunden, die Datei message.rpmsg zu extrahieren und an die Inspektions-API zu übergeben. Variationen dieses Dateinamens sind für Purview-Nachrichtenverschlüsselungsszenarien vorhanden, und die API akzeptiert auch message_v2-, v3- oder v4-Dateien.
Wichtig
Die Inspektions-API bietet keine Ausgabe, die zu einer brauchbaren Datei führt, und sie erlaubt auch nicht, die Eingabedatei erneut zu schützen. Sie gibt Byteströme aus, die Ihre Anwendung dann weiterverarbeiten kann. Das Wiederherstellen von .msg-Dateien aus message.rpmsg-Dateien wird vom MIP SDK nicht unterstützt.
In der Regel werden MIME-konforme Nachrichten während der Übertragung von E-Mails von Mail-Gateways und Diensten zur Verhinderung von Datenverlusten (Data Loss Prevention, DLP) verarbeitet. Wenn eine E-Mail geschützt ist, wird der verschlüsselte Inhalt der Nachricht in einem Anhang, message.rpmsg, gespeichert. Dieser Anhang enthält den verschlüsselten E-Mail-Text und alle Anhänge, die Teil der ursprünglichen Nachricht waren. Die .rpmsg-Datei wird dann an eine Nur-Text-Wrapper-E-Mail angehängt und an den E-Mail-Dienst gesendet. Sobald die Nachricht die Exchange- oder Exchange Online-Grenze passiert, liegt sie im MIME-kompatiblen Format vor, sodass sie an ihr Ziel gesendet werden kann.
In den meisten Fällen muss der DLP-Dienst die Anhänge und Nur-Text-Bytes der Nachricht abrufen, um sie zu prüfen und anhand der DLP-Richtlinien zu bewerten. Die Inspektions-API nimmt die Datei message.rpmsg als Eingabe und gibt Byte-Streams als Ausgabe zurück. Diese Byteströme enthalten die Nur-Text-Bytes der Nachricht und der Anhänge. Es ist Aufgabe des Anwendungsentwicklers, mit diesen Datenströmen umzugehen und etwas Nützliches mit ihnen anzustellen (prüfen, rekursiv entschlüsseln usw.).
Die Inspect
-API wird durch eine Klasse, mip::FileInspector
, implementiert, die Vorgänge zur Überprüfung der unterstützten Dateitypen bereitstellt. mip::MsgInspector
, das mip::FileInspector
erweitert, bietet Entschlüsselungsvorgänge speziell für das rpmsg-Dateiformat. Das MIP SDK unterstützt keine Veröffentlichungsszenarien für message.rpmsg -Dateien. Außerdem unterstützt auch die FileHandler::RemoveProtection()
-API keine message.rpmsg-Dateien. Message.rpmsg-Dateien können nur zu Prüfzwecken entschlüsselt werden und geben keine gültige, brauchbare Datei aus. Wenn Ihre Anwendung eine Dateiausgabe erfordert, müssen Sie eine .msg-Datei übergeben und den Schutz für dieses Objekt aufheben.
Die mip::MsgInspector
-Klasse weist folgende Member auf:
public const std::vector<uint8_t>& GetBody()
public BodyType GetBodyType() const
public BodyType GetBodyType() const
public InspectorType GetInspectorType() const
public std::shared_ptr<Stream> GetFileStream() const
Weitere Informationen finden Sie im Microsoft Information Protection (MIP)-SDK für C++: Referenz.