隐私政策
一段话总结
MailTwin 在你的 Mac 上运行。当你让云端 AI 提供商处理邮件时,所需的邮件或草稿以及选定的写作风格示例会从 Mac 直接发给该提供商,绝不会经过 MailTwin AI 服务器。API 密钥保存在 macOS 钥匙串中,只会提交给你选择的提供商。Apple Intelligence 和 Ollama 可在本机运行。更新、配置、许可和可选遥测产生的独立流量如下。
收件箱清理完全在本地进行。它在您的 Mac 上检查最多 150 封邮件的发件人、主题、日期、邮箱以及已读/旗标状态。正文和附件保持未打开,清理数据不会发送给 AI 提供商,也不会引入新的 MailTwin 网络服务。
服务流量与处理方
除你明确发起的 AI 请求外,MailTwin 只会进行以下服务请求:
- 更新 — Sparkle 从
updates.mailtwin.ai获取已签名的appcast.xml,安装更新时再获取已签名 DMG。Cloudflare 会接收普通连接元数据;MailTwin 不会发送遥测安装 UUID。 - 远程配置 — 大约每四小时从
updates.mailtwin.ai获取公开的config.json;User-Agent 含应用构建号,不含安装 UUID。 - 许可 — 激活时把许可证密钥和
MailTwin Mac · <稳定的8位哈希>设备标签直接发给 LemonSqueezy;后续验证发送许可证密钥和 LemonSqueezy 实例 ID。LemonSqueezy 还会处理普通连接元数据,并适用其隐私政策。 - 遥测 — 只有在你主动开启后,下述假名化事件才会发送到
telemetry.mailtwin.ai。崩溃文件不会上传。 - 提供商连接预热(Build 75) — 当你在选择了云端 AI 提供商的情况下打开助手面板时,MailTwin 可能会向该提供商的 API 主机建立一个空的、未经身份验证的连接,让你第一次明确操作的响应更快。预热不携带任何邮件内容、提示词、安装 UUID 或 API 密钥;在你明确执行操作之前,不会发送任何与你邮件有关的内容。绝不会以这种方式连接 Apple Intelligence 或 Ollama。
留在您 Mac 上的数据
- AI 提供商 API 密钥 — 存储在 macOS 钥匙串的
ai.mailtwin.keys服务中。密钥只会作为身份验证发送给对应提供商,用于你主动发起的直接请求;绝不会发送给 MailTwin 或 Smilodon AS。 - 授权码及 LemonSqueezy 实例 ID — 同一钥匙串服务。用于向 LemonSqueezy 验证您的激活状态。
- 已索引的风格画像 — 来自您「已发送」邮箱的样本邮件,正文经过 LZFSE 压缩,存储于
~/Library/Application Support/MailTwin/。 - 请求日志 — 最近 200 条 AI 请求的脱敏预览,可在「设置 → 隐私」中查看。
- 成本追踪 — 每日 token 累计,用于实现软上限。
- 身份信息(引导时收集的姓名 + 邮箱) — UserDefaults。用于问候模板。遥测从不传输。
- 工作区与语气数据 — 本地活动回执、可识别回复的“等待中”身份信息、收件箱清理学到的发件人选择、Voice Studio 偏好、“我的操作”模板,以及关系记忆引用元数据,都存放在
~/Library/Application Support/MailTwin/。回执可能含发件人、主题或账户以便识别,但绝不含正文、提示词或 AI 输出。只有在你明确选择“索引”或“重新索引”后,才会读取已发送邮件正文来建立本地语气索引;绝不会自动读取——启动时不会,定时器不会,后台也不会;新手引导的邀请和语气工作室只有在你按下按钮时才会开始。全新安装默认每个账户 200 封(最多 2,000 封),通过 Mail 每批读取 5 封。“停止”会阻止后续批次,但无法中断正在执行的 Apple Event。这些都不是遥测。 - 引导式 Groq 设置期间的剪贴板监看(Build 80) — 只有在接住你免费访问代码的引导设置画面显示期间,MailTwin 才会检查通用剪贴板是否有新文本,并只与一种模式比对:以
gsk_开头的代码。不匹配的文本会立即丢弃——绝不保存、不记录、不写入诊断报告,也不发送。该画面一关闭,监看即停止,你的剪贴板内容永远不会离开这台 Mac。 - 节省时间计数器(Build 81) — MailTwin 会在您的 Mac 上的
timesaved.json中保存已节省撰写时间的累计估算。该文件仅包含一个总数、回复数量,以及仅用于避免重复统计同一封回复的短单向哈希。其中不含主题、发件人、收件人、账户、邮件标识或邮件的任何部分,也不会向任何地方传输,包括我们。重置 MailTwin 会将其删除。 - 彻底删除,以及更克制的诊断报告(Build 86) — “清除全部”现在也会清空 MailTwin 与 Mail 扩展共享的容器,其中保存了您的显示名称、主要地址、签名以及常用联系人地址;此前这些内容在重置后仍会保留。可复制给支持人员的诊断报告不再列出 Mail 窗口标题,因为 Mail 窗口的标题就是邮件主题。
发送到您所选 AI 服务商的数据
当您触发 AI 操作(回复、摘要、润色草稿等)时,我们向服务商发送:
- 您正在处理的邮件正文(或您的草稿)。
- 这封邮件的主题及其发件人 / 收件人地址 — 模型需要它们才能写出有用的回复。
- 一段描述操作的简短提示词。
- 从您过去最多 5 条已发送邮件构建的风格上下文片段, 条件允许时会限定在相同收件人 / 主题 / 账号范围内。
- 明确选择的工作区上下文 — 在关系记忆中点击“使用所选内容”后,最多三段所选引用会清楚加入助手请求。风格操作所需的 Voice Studio 偏好也会加入。两者都不会静默发送。
- 在 Mail 内展开关键词(Build 77) — 在 Mail 自己的回复窗口按下「展开关键词」,发送的内容与面板操作完全相同:你写在引文之上的关键词、原邮件的主题与发件人/收件人地址,以及描述该操作的简短提示词。没有任何新类别的数据离开你的 Mac,在你按下按钮之前不会发送任何内容,结果若未通过全部校验也不会写回草稿。
该流量适用相应服务商的隐私政策。 您与该服务商之间的 API 密钥用于验证调用; 从服务商角度看,这次请求与您账号下的其他任何请求并无区别。
MailTwin 从不向服务商发送:上述邮件、草稿与风格样本之外的任何邮件、 您其他账号的内容、您的钥匙串、您的授权码, 或您在引导时填写的姓名和邮箱。
自动更新(updates.mailtwin.ai)
MailTwin 使用 Sparkle 2 大约每 24 小时检查一次更新。
检查会从
https://updates.mailtwin.ai/appcast.xml 获取一份 XML appcast。
请求会附带形如 MailTwin/<build> 的 User-Agent。
Cloudflare(提供该文件)会按标准 CDN 日志格式记录请求 IP 和 User-Agent。
我们不会将更新请求与任何其他标识关联。
更新文件由 Smilodon AS 持有的 EdDSA 私钥签名。 Sparkle 在安装前会用嵌入 MailTwin 内的公钥验证签名 — 即便我们的更新主机被攻陷,攻击者也无法向您推送恶意更新。
远程配置(updates.mailtwin.ai)
MailTwin 大约每四小时获取一次小型 JSON 文档
https://updates.mailtwin.ai/config.json。
其用途是在某第三方 API 出现破坏性变更时,
翻动针对特定服务商 / 模型组合的熔断开关。
请求附带的 User-Agent 与上述 appcast 相同,不含其他客户端信息。
可选开启的遥测(telemetry.mailtwin.ai)
仅主动开启 — 默认关闭。 如果在“设置 → 隐私”中开启,MailTwin 会向 https://telemetry.mailtwin.ai/events 发送假名化产品使用事件。记录包含事件名称、严格受限的属性(如操作、提供商、时长或错误类别)、随机且会轮换的安装 UUID、MailTwin 构建号、macOS 版本和 ISO 时间戳。UUID 在轮换前能区分一台安装,因此属于假名信息而非匿名信息;它不会关联姓名、邮箱、许可证或购买记录。
Cloudflare 为传送请求和限流,必须在边缘处理源 IP,并据此推导两位国家代码。MailTwin Worker 保存国家代码,但不会把 IP 或 User-Agent 写入 D1。MailTwin 和 Smilodon AS 不持久保存源 IP。
遥测绝不包含邮件内容、地址、主题、提示词、AI 回复、你的姓名或邮箱。获准的事件和属性使用封闭式校验,其他内容一律拒绝。可在“设置 → 隐私 → 显示已发送内容”查看本地审计。
获准记录在 Cloudflare D1 中最多保存90天。每日定时清理根据服务器接收时间删除更旧的行。数据仅用于了解功能使用、可靠性及应用/macOS 兼容性;不会出售或出租。
关闭遥测会清空未发送的本地队列和本地审计、轮换当前 UUID 并停止后续发送,但不会立刻抹除已经收到的记录。你可以凭当前 UUID 请求删除,或等待记录在90天内自动到期。
崩溃报告
MailTwin 将崩溃转储本地写入 ~/Library/Logs/MailTwin/。此版本没有崩溃上传机制:MailTwin 不会把这些文件发送到任何地方。诊断报告只列出文件名和大小,绝不包含文件内容。你可以随时查看或删除这些本地文件。
支付与授权(LemonSqueezy)
购买交易由 LemonSqueezy 作为名义商家处理。 当您购买授权时,LemonSqueezy 收集支付处理与税务合规所需的数据 (您的姓名、邮箱、国家 / 地区、支付详情)。 其隐私政策适用于该流程。
授权激活由您的 Mac 调用
https://api.lemonsqueezy.com/v1/licenses/*,
附带您的授权码和一段经过哈希处理的设备指纹
(由 IOPlatformUUID 加包标识符派生而来)。
指纹用于实施授权数量限制。
我们绝不收集
- 任何邮件内容(您发往所选 AI 服务商的请求除外)。
- 邮箱地址(您的或他人的)。
- 邮件主题。
- 您输入的自由提示词。
- AI 服务商的响应。
- MailTwin 和 Smilodon AS 不持久保存你的源 IP。Cloudflare 必须在边缘处理传输中的 IP,以提供网站、更新/配置、遥测传送及限流,并为已开启的遥测推导国家代码;MailTwin Worker 不会把 IP 写入 D1。AI 提供商和 LemonSqueezy 会根据各自政策处理连接数据。
您的权利(GDPR、CCPA)
你可以导出本地设置(设置 → 隐私 → 导出设置),也可以删除 MailTwin 本地数据(设置 → 隐私 → 全部清除)。对于 Smilodon AS 或 LemonSqueezy 持有的购买或许可数据,请发邮件至 [email protected]。我们会在适用法律规定的期限内回复。
遥测是假名化的,不与姓名或购买邮箱关联,因此仅凭邮箱无法找到这些行。如需在90天自动到期前删除,请提供当前安装 UUID。可在 Mac 上运行 defaults read ai.mailtwin.app telemetryInstallId 获取;支持团队也可协助。
关闭遥测会轮换 UUID。此后,以旧 UUID 接收的行无法再与你关联,也无法通过邮箱找回;90天自动删除是最终保障。
儿童
MailTwin 不面向 13 岁以下儿童。 我们不会刻意处理 13 岁以下任何人的数据。
政策变更
重大变更会在此处发布,并在应用的发布说明中提及。 顶部的「最后更新」日期反映最近一次变更的时间。
联系方式
Smilodon AS
挪威
[email protected]
用于隐私问题,
[email protected]
用于产品问题。