核心用法
本技能通过 Microsoft Graph API 提供全面的 Microsoft 365 自动化能力,采用 OAuth 2.0 设备码流认证,支持个人与工作/学校账户。核心功能覆盖四大领域:
邮件操作:列表筛选、读取正文、移动文件夹、发送HTML邮件(支持附件)、标记已读状态。支持通过 mail_fetch.py 和 mail_send.py 进行完整的收件箱管理。
日历管理:自定义日期窗口查询、创建Teams/线下会议、更新/取消事件。注意个人账户(consumers)可能无法通过Graph自动获取Teams会议链接。
OneDrive文件:文件列表浏览、上传下载、移动操作、共享链接生成,支持本地化文件夹别名解析。
联系人维护:增删改查完整CRUD操作,默认包含在授权作用域内。
推送模式(核心亮点):区别于传统的LLM轮询收件箱,本技能实现了基于Webhook的邮件推送架构:mail_webhook_adapter.py 作为HTTP接收端完成Graph订阅握手与clientState验证,mail_webhook_worker.py 作为异步工作器处理去重队列并向OpenClaw发送唤醒信号。大幅降低API调用成本与延迟。
显著优点
1. 成本优化设计:Webhook推送模式避免持续轮询,显著减少Microsoft Graph API调用频次
2. 完整的E2E自动化:提供从EC2初始化、Caddy反向代理、systemd服务配置到订阅生命周期管理的全栈脚本
3. 安全默认:显式clientState验证、hook token分离、敏感文件自动gitignore、支持--dry-run预览所有特权操作
4. 多账户支持:通过--tenant-id和--client-id灵活切换个人/工作/学校账户
5. 详细的权限分级:docs/permission-profiles.md提供最小权限原则指导
潜在局限
- 个人账户Teams限制:
tenant=consumers时无法通过Graph自动创建含加入链接的Teams会议 - 依赖外部基础设施:推送模式需要公网可访问的HTTPS端点(脚本提供Caddy+EC2方案)
- Python环境依赖:需要Python 3 + requests,非纯Shell方案
- 令牌持久化风险:
state/graph_auth.json存储刷新令牌,虽被gitignore但仍需环境级保护 - 权限配置复杂度:工作/学校账户需租户管理员预批准应用注册
适合人群
- 需要低成本自动化Microsoft 365工作流的OpenClaw用户
- 具备基础Linux/EC2运维能力、能配置DNS和HTTPS的技术用户
- 希望替代IFTTT/Zapier实现自托管Microsoft 365集成的开发者
- 对Webhook架构和OAuth设备码流有基本理解的用户
常规风险
| 风险类型 | 说明 | 缓解措施 |
|---------|------|---------|
| 令牌泄露 | `graph_auth.json`含长期刷新令牌 | 存储于受保护路径、勿提交版本控制、定期轮换 |
| Webhook伪造 | 未验证的订阅推送可能被利用 | 强制`clientState`验证、hook token分离 |
| 特权脚本误操作 | EC2 setup脚本以root写systemd配置 | 强制`--dry-run`先审阅、非生产环境先行验证 |
| 作用域过度授权 | 默认 scopes 较宽 | 参考最小权限文档按需裁剪 |
| TLS配置不当 | 自签证书或过期证书导致SSL错误 | 使用Caddy自动HTTPS、校验系统时间 |