当前位置: 首页 > news >正文

邮件协议、签名与推送

协议

协议全称作用方向端口是否仍常用
SMTPSimple Mail Transfer Protocol发送邮件客户端 ➜ 邮件服务器;服务器 ➜ 服务器25 / 465(SSL)/ 587(STARTTLS)✅ 非常常用
POP3Post Office Protocol v3拉取邮件(只拉,默认会删除服务器邮件)邮件服务器 ➜ 客户端110 / 995(SSL)✅ 次常用
IMAPInternet Message Access Protocol同步邮件(支持多设备)邮件服务器 ➜ 客户端143 / 993(SSL)✅ 推荐使用
HTTP / HTTPSGmail/Outlook 等 WebMail 协议(基于 Web UI)网页交互浏览器 ➜ 邮件服务器80 / 443✅ 很常用
MTA/MDAMail 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.comyou@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 并发出去
你用的 SMTPDKIM 签名域名SPF IP 来源邮件真实性信任度
smtp.gmail.comd=gmail.comGmail IP
smtp.qq.comd=qq.comQQ IP一般
自建 SMTPd=*.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 MailSpark / 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 MailSpark / 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 服务器还是能“帮你接收邮件”

相关文章:

  • C++23 新特性:为 std::pair 的转发构造函数添加默认实参
  • 《前端秘籍:SCSS阴影效果全兼容指南》
  • drawDB:打造高效数据库设计流程
  • 仓颉编程语言快速入门:从零开始构建你的第一个程序
  • BC19 反向输出一个四位数
  • Runnable 组件生命周期监听器与使用场景
  • 【人工智能】人形机器人与低空经济协同发展分析
  • window-docker的容器使用宿主机音频设备
  • 【51单片机2个定时器2个外部中断设置】2022-5-11
  • maven坐标导入jar包时剔除不需要的内容
  • 基于开源AI大模型AI智能名片S2B2C商城小程序源码的私域流量稳定性构建研究
  • Android运行时ART加载OAT文件的过程
  • Hadoop 1.x设计理念解析
  • 配置和使用持久卷
  • Prompt多版本测试指南:如何科学评估不同提示词的效果
  • OpenCv实战笔记(1)在win11搭建opencv4.11.1 + qt5.15.2 + vs2019_x64开发环境
  • ROC-AUC:模型评估的“超级英雄
  • 文献分享:CH-CL配对和VL结构域的完整性影响IgG1分泌过程
  • Coco AI 入驻 GitCode:打破数据孤岛,解锁智能协作新可能
  • (undone) MIT6.S081 2023 学习笔记 (Day10: LAB9 fs file system)
  • AI世界的年轻人|横跨教育与产业,他说攻克前沿问题是研究者的使命
  • 贵州黔西市游船倾覆事故致9人死亡1人失联
  • 日本政府强烈反对美关税政策并要求其取消
  • 经济日报头版评论:矢志奋斗筑梦青春中国
  • 五一假期旅游大市党政领导靠前调度,重视解决游客反映的问题
  • 浙江“胖都来”开业多位明星祝贺,“胖东来”称已取证投诉,律师:碰瓷侵权