Outlook Delegate Skill 综合评估
核心用法
本 Skill 专为 Microsoft 365 企业环境设计,允许 AI 助手以委托(Delegate)身份访问另一名用户的邮箱和日历。核心架构基于 Microsoft Graph API,采用 OAuth 2.0 delegated 权限模型,支持三种邮件发送模式:
1. As Self(作为本人):邮件显示来自 AI 助手
2. Send As(作为所有者):邮件完全显示来自邮箱所有者,无委托痕迹
3. Send on Behalf(代表所有者):邮件显示「AI 助手代表所有者发送」
关键实现机制:三种模式调用相同的 Graph API 端点(/users/{delegate}/sendMail),差异完全由 Exchange 层面的权限配置决定,而非 API 参数。这要求管理员在 Exchange Online PowerShell 中精确配置 SendAs 或 SendOnBehalf 权限,且严禁同时授予两种权限(否则 Exchange 优先采用 SendAs)。
显著优点
- 权限粒度精细:支持只读、发送、日历管理等细分权限,可通过 PowerShell 精确控制访问范围
- 企业级合规:所有操作写入邮箱审计日志,支持 OAuth token 自动刷新,凭证文件强制 600 权限
- 发送模式灵活:三种身份模式满足高管助理、客服代发、透明代理等不同场景
- 安全设计改进:v1.1.0 修复了进程泄漏(secrets 通过 stdin 传递)、JSON 注入防护(jq 转义)、目录权限强制等关键漏洞
潜在缺点与局限性
- 配置复杂度高:需同时完成 Entra ID 应用注册、Graph API 权限、Exchange PowerShell 授权三层配置,对非管理员用户门槛极高
- 权限冲突风险:SendAs 与 SendOnBehalf 互斥性设计易误配,导致「代表发送」功能失效
- Sent Items 行为不一致:默认情况下委托发送的邮件存入助手的发件箱,需额外 Exchange 配置才能同步到所有者发件箱
- 单租户限制:仅支持「Accounts in this organizational directory only」,不支持多租户或个人 Microsoft 账户
- 依赖 PowerShell:所有委托权限配置需 Exchange Online Management 模块,无法纯通过 Azure 门户完成
适合人群
- 企业高管助理:需以老板身份或代表身份处理邮件、管理日程
- IT 管理员:需要为服务账户、共享邮箱配置自动化邮件处理
- 客服/运营团队:需通过统一邮箱地址对外沟通,但保留操作者追溯
常规风险
- 凭证泄露风险:
client_secret和 refresh token 存储于本地文件,虽权限受限但仍需防范本地提权攻击 - 权限扩大化:
Mail.ReadWrite.Shared与FullAccess组合理论上允许读取/删除所有者全部邮件,需严格遵循最小权限原则 - 审计盲区:若管理员未启用
MessageCopyForSentAsEnabled,委托发送的邮件可能不进入所有者发件箱,造成合规漏洞 - Token 过期中断:需定期执行
refresh脚本,长期无人值守场景需考虑自动化机制
版本更新亮点
v1.1.0 是一次重要的安全维护更新,修复了 reply 重复发送、draft 误删除、输入注入、进程参数泄露等关键缺陷,同时明确文档化了权限互斥行为和 Sent Items 机制,大幅降低了误配置概率。