文件 SDK 电子邮件文件处理

MIP SDK 支持对电子邮件进行解密和加密。 SDK 支持由 Outlook 或 Exchange 生成的 .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 的实例化需要 settings 对象 FileEngineSettingsFileEngineSettings 可用于为自定义设置传递参数以满足特定应用程序需求。 若要使 MIP SDK 能够处理 MSG 文件,FileEngineSettings 对象的 CustomSettings 属性用于为 enable_msg_file_type 设置标志以启用对 .msg 文件的处理。

如果已创建名为 engineSettingsFileEngineSettings 对象,则需要在 .NET 中设置此属性,如下所示:

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

.msg 文件保护操作伪代码可能如下所示:

  • mip::FileEngineSettings 中设置 enable_msg_file_type 标志并将 mip::FileEngine 添加到 mip::FileProfile
  • 使用 FileEngine 为用户提取标签列表。
  • 构造指向要标记的文件的 mip::FileHandler
  • 选择标签并使用 mip::FileHandlerSetLabel 方法应用该标签。

请参阅快速入门:列出标签,了解有关如何列出标签的信息。

更改默认附件处理行为

默认情况下,文件 SDK 会在使用检查 API 时尝试处理 MSG 文件或 message.rpmsg 文件包含的所有附件。 它不会以递归方式解密附加到根 MSG 的 MSG 文件的附件。 目前不支持修改默认处理行为。

.rpmsg 文件的文件 SDK 操作

MIP SDK 公开了一个检查函数,该函数可以解密嵌入式 message.rpmsg 文件,并将一组字节流作为输出显示。 由 SDK 客户决定提取 message.rpmsg 文件并将其传递到检查 API。 此文件名在 Office 邮件加密方案中存在变体,API 还将接受message_v2、v3 或 v4 文件。

重要

检查 API 不提供会产生有用文件的输出,也不允许重新保护输入文件。 它会输出应用程序随后可以进一步处理的字节流。 MIP SDK 不支持从 message.rpmsg 文件重新创建 MSG 文件。

通常,邮件网关和数据丢失防护 (DLP) 服务会在传输符合 MIME 的邮件期间进行处理。 当邮件受到保护时,邮件的加密内容将存储在附件 message.rpmsg 中。 此附件包含加密的电子邮件正文以及属于原始邮件的任何附件。 然后,rpmsg 文件会附加到纯文本包装器电子邮件并发送到邮件服务。 邮件离开 Exchange 或 Exchange Online 边界后,将采用符合 MIME 的格式,以便可以发送到其目标。

在大多数情况下,DLP 服务需要从邮件中获取附件和纯文本字节,以便根据 DLP 策略进行检查和评估。 检查 API 将 message.rpmsg 作为输入并返回字节流作为输出。 这些字节流包含邮件和附件的纯文本字节。 由应用程序开发人员处理这些流并对其执行一些有用的操作(检查、递归解密等)。

Inspect API 通过类 mip::FileInspector 实现,该类公开了用于检查支持的文件类型的操作。 mip::MsgInspectormip::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

有关详细信息,请参阅 API 参考

后续步骤