邮件协议、签名与推送

目录

协议

协议 全称 作用 方向 端口 是否仍常用
SMTP Simple Mail Transfer Protocol 发送邮件 客户端 ➜ 邮件服务器;服务器 ➜ 服务器 25 / 465(SSL)/ 587(STARTTLS) ✅ 非常常用
POP3 Post Office Protocol v3 拉取邮件(只拉,默认会删除服务器邮件) 邮件服务器 ➜ 客户端 110 / 995(SSL) ✅ 次常用
IMAP Internet Message Access Protocol 同步邮件(支持多设备) 邮件服务器 ➜ 客户端 143 / 993(SSL) ✅ 推荐使用
HTTP / HTTPS Gmail/Outlook 等 WebMail 协议(基于 Web UI) 网页交互 浏览器 ➜ 邮件服务器 80 / 443 ✅ 很常用
MTA/MDA Mail Transfer Agent / Mail Delivery Agent 邮件中继 / 分发 内部服务    

当你用 Gmail / Spark / iCloud 添加其他邮箱时,其实后台做了以下几件事:

✉️ 收邮件

  • 用 IMAP(或 POP3)去第三方邮箱「拉」邮件
  • 保证你能看到别人发到 you@other.com 的邮件

📤 发邮件

  • 用你配置的 SMTP 发信,伪装 From 为你要整合的邮箱地址

🔁 整合 = 一个邮箱壳子(客户端)用别人的账号密码登录并同步数据

Gmail 网页是 Webmail,它底层仍然:

  • 发邮件 ➜ 服务器内部还是 SMTP(或自研传输服务)
  • 收邮件 ➜ 服务器通过 IMAP/POP3 或其他协议获取

📌 你看到的 HTTPS 只是前端网页浏览的UI层协议,不是邮件实际发送用的协议!

      [发送者]
          |
        SMTP
          |
      [收件人MX记录(DNS)]
          |
        SMTP 25端口
          |
      [收件人邮箱服务器]
          |
      -----------            -----------
      |         |            |         |
    POP3     IMAP         HTTP(S)    APP
      |         |            |         |
   老客户端    多端同步     Web UI    手机客户端

邮件获取

❓Spark / Apple Mail 等客户端是如何收邮件的?是 Gmail 主动推?还是客户端主动拉?

答案是:主动拉取(Polling 或 IDLE),不是 Gmail 主动推送。

📨 一、客户端如何获取 Gmail 的邮件?

✅ 1.POP3 模式(老旧)

  • 客户端定时主动去 Gmail 拉邮件。
  • 特点:
    • 通常拉取后会删除服务器上的邮件(除非设置保留)。
    • 不支持多设备同步。
    • 一般用于移动设备或嵌入式应用。
  • 缺点:不能“即刻”同步,容易滞后。

✅ 2.IMAP 模式(主流)

🟢 两种方式:

  • Polling(轮询)模式:
    • 客户端每 X 分钟连接 Gmail,检查有没有新邮件。
    • 非实时,可能延迟几分钟。
  • IDLE 模式(推送感)✅:
    • IMAP 协议支持 IDLE 命令。
    • 客户端保持一个长连接,Gmail 一旦有新邮件就通过这个连接“通知”客户端拉邮件。
    • 这不是严格意义的“推送”,而是长连接 + 通知机制。
    • 类似 SSE / WebSocket。

⚠️ 注意:Gmail 对 IMAP IDLE 有连接数和时间限制(如每 29 分钟断一次)

🔄 二、Spark/Apple Mail 是壳子,做了哪些事?

  • 添加 Gmail 时,你授权 Spark 获取 IMAP/SMTP 权限(或通过 App Password)
  • Spark 就是用 IMAP IDLE 跟 Gmail 保持“实时同步”
  • 然后 Spark 就能在你手机或电脑“实时”收到邮件

所以:

  • 📥 收邮件:通过 IMAP 拉(轮询或 IDLE)
  • 📤 发邮件:通过 SMTP 发,伪装你的邮箱地址为 xxx@*.me
  • Gmail 并不会主动通知 Spark/Spark 也不是被动监听,而是“保持连接”监听 Gmail 变动

❓Apple Mail 应用关闭了,没有长连接,为什么我手机还能收到邮件推送?

因为这时不是 Apple Mail 在收邮件,而是系统(iOS)通过 APNs 收到了 Gmail 发来的“你有新邮件”的推送通知。

🔒 情况一:你用 Apple Mail 收 Gmail 邮件

苹果系统本身与 Gmail 达成了深度集成:

  1. 你在系统中配置了 Gmail(比如 iOS 的「邮件、联系人、日历」设置里添加 Gmail)。
  2. Gmail 会通过 Google 的服务器把新邮件信息发送给 Apple 的 APNs 服务器
  3. APNs 把通知“推”到你的手机上(哪怕 Apple Mail 没打开)。
  4. 你点开通知或打开 App,Apple Mail 才去真正拉邮件。

⚠️ 所以这里:

  • 邮件内容并没有提前拉,只是“你有邮件”的推送先到了。
  • 真正的邮件内容还是后面拉取的(IMAP)。
  • Gmail 在你授权 Apple 访问时,会允许 Apple 注册一个 “push token”
  • Gmail 有个专门的服务叫 Gmail Push Notification for iOS,会定期把新邮件变化通过 Apple 的 APNs 发出去。

🔁 非 Apple Mail 的应用(如 Spark)的处理方式

Spark 有两种模式:

1. App 在后台活跃 → 使用 IMAP IDLE(保持连接)

  • 实时收到邮件变化。

2. App 被系统冻结或关闭 → Spark 服务器代收邮件 + 发推送

  • Spark 公司维护一套 IMAP 连接服务,在云端长期连着你的邮箱。
  • Spark 云端收到邮件后,通过 Firebase(FCM)或 APNs 把推送消息发给你的设备。

这种方式对 Gmail、Outlook 等第三方邮箱都适用。

邮件收发签名

❓1. DKIM 签名是改不了的吗?

你不能控制 Gmail 生成的 DKIM 签名,因为你使用了 Gmail 的 SMTP 服务器(smtp.gmail.com)发送邮件,所以:

  • 签名者是 Gmail
  • Gmail 会用自己的域名(如 gmail.com)作为 DKIM 的 d= 字段
  • 你在 DNS 上看到的 cf2024-1._domainkey.*.me 是 Cloudflare 的转发系统使用的 DKIM,仅在接收邮件时验证用

💡 也就是说,你不是用 *.me 的发信服务器发出去的邮件

❓2. 发信服务器是谁来控制的?

发信时,控制权在 SMTP 服务提供商手里。在你的案例中:

  • 你使用的是 Gmail 的 SMTP 服务
  • 所以邮件是由 smtp.gmail.com 发出的
  • Gmail 会自动添加 SPF、DKIM、DMARC 等头部信息来证明邮件“可信”

无法控制 Gmail 的 DKIM 密钥、签名策略、SPF 记录,也就无法用你自己的 *.me 来做这部分认证。

❓3. 收件方如何判断邮件是不是垃圾邮件?

收件方会根据以下几项“发信域名的可信度”来判断:

项目 是否可控 说明
SPF ❌(由 Gmail 设置) 发信 IP 是否被允许发这个域的邮件
DKIM ❌(由 Gmail 生成) 邮件内容是否被伪造,发信域名可信不
DMARC ❌(由 Gmail 控制) 配合 SPF/DKIM 的验证策略
发信 IP 是否被列入黑名单 比如腾讯邮箱常常黑名单小服务商
发件人邮箱域名与 DKIM/Return-Path 是否一致 部分可控 如果伪装过头或不一致,会被判为可疑

所以你说得对

用 Gmail 来发送,可信度非常高,因为:

  • 发信 IP 是 Gmail 的
  • DKIM 是 Gmail 的签名
  • SPF 是 Gmail 的记录
  • 收件方信任 Gmail,不容易误判为垃圾

❓4. 为什么很多人用自定义域名发邮件会进垃圾箱?

因为这些人是自己搭了 SMTP 邮件服务器(比如用 mailgun、postfix、腾讯企业邮),这时候:

  • 发信 IP 很可能不在 SPF 白名单里
  • DKIM 签名没配好或域名和邮件内容不一致
  • Return-Path、From、Reply-To 不一致
  • 没有正确配置反向解析(PTR Record)
  • 域名新注册、无历史,容易被误判为 Spam

🧨 很多腾讯邮箱、Outlook、QQ 邮箱会特别敏感,对小邮件服务器不信任。

Gmail 负责发信 → 可信

Cloudflare MX 接收邮件 → Gmail 转发接收

你只是伪装成 *.me 作为发件人,但 Gmail 帮你背书和签名 → 安全 + 高送达率

邮箱整合与身份归属

✅ 场景一(如 iCloud+ / Spark 邮箱):

  • 添加外部邮箱账号只需填账号密码(IMAP/SMTP)
  • 系统自动整合收发功能

🚫 场景二(国内邮箱整合,如 QQ/网易):

  • 需要配置 SMTP/POP3,生成专用密码
  • 往往还要短信验证等

🔐 本质区别:谁是发件人?谁是服务器?

内容 iCloud+ / Spark 国内邮箱整合(QQ邮箱、自建邮箱等)
发件人(From) you@yourdomain.com you@yourdomain.com
发信服务器 你设置的 SMTP,比如 Gmail、Outlook 同样是你设置的 SMTP
谁签名(DKIM) 由 SMTP 所属服务商签名(如 Gmail) 同样由 SMTP 服务商签名
这些邮件客户端的角色 ✅ 只是“客户端”和“代理” ✅ 同样是客户端,负责调用 SMTP 发信

只要你配置了谁的 SMTP,邮件就是由“谁”发出去的!

  • 你配置的是 Gmail 的 SMTP → 邮件由 smtp.gmail.com 发出 → Gmail 生成 DKIM、SPF → 收件人“信 Gmail”
  • 你配置的是 QQ 的 SMTP(比如 smtp.qq.com)→ 邮件由 QQ 发出 → DKIM 是 QQ 签名 → 信任度依赖于 QQ 的信誉

这些客户端(Spark、iCloud Mail、Apple Mail)本质上只是调用发信服务器的一个“壳子”

  • ✔️ 负责 UI、合并收件箱、多账号管理
  • ❌ 不会自行创建 DKIM 签名,也不持有发信 IP
  • ✔️ 调用你设置的 SMTP 并发出去
你用的 SMTP DKIM 签名域名 SPF IP 来源 邮件真实性信任度
smtp.gmail.com d=gmail.com Gmail IP
smtp.qq.com d=qq.com QQ IP 一般
自建 SMTP d=*.me(需你配置 DKIM) 自建 IP 低~高,取决于配置

❗国内 SMTP 的“账号密码”和“短信验证”

这只是防止账号被滥用的额外验证机制,与 DKIM / SPF 无直接关系,它是:

  • 对“第三方客户端登录行为”的风控
  • 尤其因为国内很多 SMTP 不支持 OAuth,所以通过“专用授权码”来规避真实密码暴露
问题 回答
✉️ 邮件签名是谁的? 永远是你配置的 SMTP 所属服务商的签名
🧰 Spark / iCloud Mail / Apple Mail 是谁? 它们只是“客户端壳子”,不会影响 DKIM
🧾 为什么国内邮箱配置麻烦? 因为安全策略更严格 + 无 OAuth 标准统一登录流程
🎯 最重要的角色是谁? SMTP 服务商,决定邮件是否可信、签名、是否进垃圾箱

第三方邮件App

但是可以信任apple mail

✅ 第三方邮件 App(如 Spark)的基本做法是:

  1. 你在 App 内输入邮箱和密码(或 OAuth 授权)。
  2. Spark 的 云端服务器 登录你的 Gmail/Outlook/Yahoo 帐号。
  3. Spark 的服务器通过 IMAP 协议长期与你的邮箱保持连接。
  4. 收到新邮件时,他们的服务器先获取邮件内容。
  5. 再通过 APNs 或 Firebase 发推送,客户端打开后再读取邮件正文。

💥 这意味着什么?

  • 他们的服务器可以读取你全部邮件
  • 甚至可以读取你发送的邮件内容、附件、联系人、元数据
  • 有些还会分析邮件内容来「智能分类」、「提醒账单」、「提醒快递」。
风险 说明
邮件可被扫描 如果你没使用端到端加密,他们就能看到邮件明文。
内容分析 有些 App(如 Edison)会对邮件做数据挖掘,甚至训练模型。
数据泄露 万一他们被黑或存储泄露,你的邮件也可能泄露。
没有 GMail 的隐私保护机制 比如 Google 提供了安全日志、OAuth 应用限制,这些第三方工具未必有。

Apple Mail 跟 Spark、Edison 等第三方邮件 App 最大的区别就是——它不走自家中转服务器,而是由设备自己直连邮箱服务器,确实更注重隐私。

🍎 Apple Mail 的工作机制:

🔐 隐私原则

  • 不会中转你的邮件
  • 不会读取或分析邮件内容
  • 一切连接(IMAP/SMTP)都是由 你的设备(iPhone、iPad、Mac) 直接与 Gmail、Outlook 等邮箱服务器通信。
  • 使用 APNs(Apple Push Notification service) 实现低功耗推送通知。

🧠 Apple 是怎么实现「推送通知」的?

Gmail、Outlook 等大型邮件服务商支持一种叫做 IMAP IDLE 或 Push-IMAP 的协议,允许设备注册一个“空闲监听”:

  1. Apple Mail 客户端在后台运行时,通过 IMAP 连接到邮箱服务器。
  2. 使用 IDLE 命令让连接“挂起”,等待新邮件事件。
  3. 当新邮件到达时,服务器主动通知客户端。
  4. 客户端通过 APNs 把通知发给你。

🟡 如果设备被锁屏或关闭 Mail App 呢?

  • iOS 会中止 IMAP 连接。
  • 不再轮询或保持连接(节省电池)。
  • 当你重新打开 Mail App 时再同步更新。

所以 Apple 不保留长连接在云端,也不缓存你的邮件——一切都在本地设备上进行,符合他们的“隐私至上”理念。

功能/机制 Apple Mail Spark / Edison 等第三方
邮件连接 本地 IMAP/SMTP 通过自家云服务器
内容读取 设备本地处理 云端读取、分析、转发
推送方式 APNs + 本地监听 云端分析 + 自己推送通知
安全性 高(本地控制) 中等或低(邮件中转)
广告分析 有些会分析内容投广告
隐私等级 🍏 极高 ❗存在隐私风险

隐私推送与邮件中转

🟡 设备锁屏 / Mail App 被关闭时,Apple 是怎么做到邮件提醒的?

✅首先明确:Apple Mail 不会保持后台 IMAP 长连接。

  • iOS 出于省电目的,会终止所有非必要的长连接。
  • 所以 Apple Mail 在后台时不会主动轮询 Gmail 等邮箱
  • 那么问题来了:新邮件到了,怎么推送? → 就是靠下面这套机制。

📬 Apple 是怎么「知道」你有新邮件的?

📡 情况 1:邮箱服务商支持

Push(IMAP Push Extensions 或 Exchange ActiveSync)

像 Gmail、Outlook 这样的邮件服务商:

  • 和 Apple 有配合机制
  • Gmail 自己在服务器端会“通知 Apple 的服务器”——“你这个 *.me 邮箱有新邮件了”。
  • 然后 Apple 通过自己的 APNs(Apple Push Notification Service) 把推送发给你手机。

✅ 也就是说:

你手机虽然没有连接 Gmail,Gmail 是告诉 Apple,然后 Apple 告诉你。

🔒 重点隐私区别 vs. 第三方 App:

对比点 Apple Mail Spark / Edison 等第三方
谁接收 Gmail 的邮件提醒? Apple 的 APNs 系统(只推状态) 自己的服务器(收下完整邮件内容)
谁控制你的邮件内容? 你自己,邮件内容只在你设备上 他们的服务器可以缓存分析
隐私保障 极高 有泄露风险

🤔 如果 Gmail 没有跟 Apple 做这种配合会怎样?

那 Apple Mail 就没法接收到 APNs 推送,用户只能在:

  • 手动打开 Mail App
  • 或者系统唤醒时,重新连接 IMAP 去同步邮件

🔴 Gmail App 与 QQ 邮箱联动行为:

❌ Gmail 是不能收 QQ 的邮件推送的:

  • Gmail App 只会在 你打开 Gmail App 时主动发起 IMAP 连接 去拉邮件
  • Gmail 自己服务器不会代表你去和 QQ 建长连接或监听邮件(不像 Spark / Outlook 那样的中转模式)

所以:

  • ✅ Gmail 打开时会拉 QQ 邮件
  • ❌ Gmail 没打开、手机锁屏时,不会收到 QQ 邮件推送(除非你设置转发)
邮件客户端/服务 第三方邮箱是否中转? 是否存储在自己服务器? 隐私特点
Apple Mail (原生) ❌ 不中转 ❌ 不存储 ✅ 真正本地直连 + APNs 推送
Gmail (网页/App) ❌ 不中转 ❌ 不存储 ✅ 不中转第三方邮箱内容
Outlook (桌面/移动) ✅ 中转 ✅ 存储 ⚠️ 微软中转,隐私受其约束
Spark ✅ 中转 ✅ 存储在 Readdle 服务器 ❌ 明确声明其服务器中转
Notion Mail ✅ 中转 ✅ 存储 ❌ 走 Notion 基础设施(未知风险)
Canary Mail ⚠️ 分情况(默认中转) ⚠️ 存储或可 E2EE 中转但标榜支持 PGP
Edison Mail ✅ 中转 ✅ 存储并用于 AI 建模 ❌ 明确用于数据学习
QQ 邮箱、网易邮箱大师 ✅ 中转 ✅ 存储 ⚠️ 多数国内邮箱默认中转

🔍 举个例子:Spark 如何处理第三方邮箱?

  • 你添加 QQ、163 邮箱到 Spark 时,它会:
    • 在 Spark 自己的服务器(Readdle)上存储凭证
    • 用他们自己的服务器和 IMAP/SMTP 连接你 QQ 邮箱
    • 然后将邮件同步副本到他们的中转服务
    • 再推送通知给你设备
  • 所以即使你手机关机,Spark 服务器还是能“帮你接收邮件”

点赞一下

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦