共用方式為


檔案 SDK 電子郵件訊息檔處理

MIP SDK 支援電子郵件訊息的解密和加密。 SDK 支援由 Outlook 或 Exchange 產生的 .msg 檔案,和 .rpmsg 檔案,雖然支援的方式略有不同。

備註

從 MIP SDK 1.17 開始,支援.eml檔案。 根據容器格式,處理類似於應用於標籤/保護場景的 .msg 和檢查場景的 .rpmsg。

此案例的常見使用案例包括:

  • 為了資料外洩防護(DLP)檢查,解密郵件和附件。
  • 直接從企業營運應用程式發佈受保護的訊息
  • 解密、修改及重新保護傳輸中的訊息。
  • 將標籤套用至 DLP 或郵件閘道服務的電子郵件。

MSG 檔案支援聲明

MIP SDK 支援 MSG 檔案的保護應用程式和移除。 由於多年來格式中存在多種編碼類型和變數,所以無法保證 MIP SDK 可以移除所有 MSG 檔案的保護。 下一節說明各種來源 MSG 檔案的支援性。

  • 完全支援從受 MIP SDK 保護的 MSG 檔案移除保護。
  • 完全支援從目前支援的 Outlook 用戶端版本所建立的 MSG 檔案移除保護。
  • 對於由不再支援的 Outlook 用戶端版本所建立的 MSG 檔案,其移除保護僅在盡力而為的基礎上提供支援。
  • MSG 檔案的重新保護無法使用受保護標籤。 用戶必須先取消保護並明確移除受保護的標籤,再使用另一個標籤再次保護檔案。

MSG 檔案的標籤

MIP SDK 支援在 MSG 檔案上讀取和寫入標籤。 子項目不會繼承標籤,但會繼承保護設定。 如需詳細資訊,請參閱 檔案 SDK 中的.msg 檔案的標籤和保護作業

檔案 SDK 中.msg檔案的標籤和保護作業

檔案 SDK 支援.msg檔案的標籤和保護作業,方式與任何其他檔案類型相同,不同之處在於 SDK 需要應用程式來啟用 MSG 功能旗標。

如先前所述,FileEngine的具現化需要設定物件FileEngineSettingsFileEngineSettings 可用來傳入自定義設定的參數,以符合特定應用程式需求。 若要讓 MIP SDK 處理 MSG 檔案,需要使用 CustomSettings 物件的 FileEngineSettings 屬性來設定 enable_msg_file_type 標誌,以啟用對 .msg 檔案的處理。

如果您已建立 FileEngineSettings 名為 engineSettings 的物件,您會在 .NET 中設定此屬性,如下所示:

engineSettings.CustomSettings = new List<KeyValuePair<string, string>>();
engineSettings.CustomSettings.Add(new KeyValuePair<string, string>("enable_msg_file_type", "true"));

.msg檔案保護作業虛擬程式碼看起來可能像這樣:

  • enable_msg_file_type中設定mip::FileEngineSettings旗標,並將mip::FileEngine新增至mip::FileProfile
  • 使用FileEngine來擷取使用者的標籤清單。
  • 建構 mip::FileHandler ,指向要標記的檔案。
  • 選取標籤並使用 mip::FileHandlerSetLabel 方法來套用標籤。

如需如何列出標籤的資訊,請參閱快速入門:列出標籤

變更預設附件處理行為

根據預設,檔案 SDK 會在使用檢查 API 時,嘗試處理屬於 MSG 檔案的所有附件,或 message.rpmsg 檔案。 預設只會解密根層級專案和第一層附件。

若要修改此行為,可以使用自定義設定 container_decryption_option。 在C++中,這是以列舉的方式公開的,mip::ContainerDecryptionOption

選項名稱 描述
All 解密 MSG 檔案和附件。 如果附件是 MSG,它會以遞歸方式解密 MSG 及其附件。 它會在拋出 mip::BadInputError("Max depth reached on nested msg attachments") 之前遞迴最多十個層級
Default Msg相同。
Msg 解密 MSG 和第一層附件。 不會以遞歸方式解密附加的 MSG 檔案。
Top 僅解密 MSG 檔案,且不會解密附件。

下列範例示範如何在 .NET 中設定應用程式,只解密根 MSG 檔案。

engineSettings.CustomSettings.Add(new KeyValuePair<string, string>("container_decryption_option", "Top"));

在C++中:

vector<pair<string, string>> customSettings;
customSettings.emplace_back(mip::GetCustomSettingContainerDecryptionOption(),
        mip::ContainerDecryptionOptionString(mip::ContainerDecryptionOption::Top));
engineSettings.SetCustomSettings(customSettings);

.rpmsg 檔案的檔案 SDK 作業

MIP SDK 公開可解密內嵌 message.rpmsg 檔案的檢查函式,並將一組位元組數據流呈現為輸出。 由 SDK 取用者來擷取 message.rpmsg 檔案,並將其傳遞至檢查 API。 Purview 訊息加密案例中存在此檔名的變化,API 也會接受 message_v2、v3 或 v4 檔案。

重要

檢查 API 不提供能產生可用檔案的輸出,也不允許您重新保護輸入檔案。 它會輸出應用程式接著可以進一步處理的位元組數據流。 MIP SDK 不支援從 message.rpmsg 檔案重新建立 MSG 檔案。

在大部分情況下,DLP 服務必須從訊息取得附件和純文本位元組,以檢查和評估 DLP 原則。 檢查 API 會將 message.rpmsg 作為輸入,並傳回位元組串流作為輸出。 這些位元組數據流包含訊息和附件的純文本位元組。 應用程式開發人員必須處理這些數據流,並對其執行有用的動作(檢查、遞歸解密等)。

Inspect API 是透過類別 mip::FileInspector 實作的,該類別提供檢查支援的檔案類型的操作功能。 mip::MsgInspector 會擴充 mip::FileInspector,並公開 rpmsg 檔格式特有的解密作業。 MIP SDK 不支援 message.rpmsg 檔案的任何發佈案例。 此外, FileHandler::RemoveProtection() API 不支援 message.rpmsg 檔案。 Message.rpmsg 檔案只能解密以進行檢查,而且 不會輸出有效的可用檔案。 如果您的應用程式需要檔案輸出,您必須傳入 MSG 檔案,並從該物件移除保護。

mip::MsgInspector 類別會公開下列成員:

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

如需詳細資訊,請參閱 Microsoft 資訊保護 SDK for C++:參考

後續步驟