FOLD
技术 · 标准

遵循标准。列明缺口。

FOLD 使用的每一种协议都由 RFC 定义。本页列出衡量邮件客户端所依据的那些 RFC,并逐一说明代码目前的状态:已实现、部分实现、尚未实现或有意不实现,以及原因。

已于 2026-09-23 对照代码核实

已实现
58
已实现并投入使用。
部分实现
8
部分可用;备注说明是哪一部分。
尚未实现
10
尚未实现。
有意不实现
6
有意不实现;备注给出原因。

邮件格式

邮件如何构建、读取和显示。

RFC标准状态在 FOLD 中
RFC 5322Internet Message Format已实现写入时严格;读取时容忍裸 LF 换行、8 位邮件头和各种日期格式变体。
RFC 2045-2049MIME已实现FOLD 下载完整邮件,并在设备上构建 MIME 树。
RFC 2047MIME Encoded-Words已实现邮件头中的非 ASCII 文本,支持解码和编码。
RFC 2231MIME Parameter Value and Encoded Word Extensions部分实现可读取长文件名和非 ASCII 文件名;发送时 FOLD 尚不以这种形式写入。
RFC 2183Content-Disposition已实现区分内嵌与附件,并处理文件名。
RFC 2387multipart/related已实现带内嵌图像的邮件,可读可写。
RFC 2392Content-ID and Message-ID URLs已实现指向内嵌图像的 cid: 链接在邮件内部解析。
RFC 6532Internationalized Email Headers已实现始终读取 UTF-8 邮件头;FOLD 仅为国际化地址写入 UTF-8 邮件头,且仅在服务器提供 SMTPUTF8 或 UTF8=ACCEPT 时。自 2026-09-21 起
RFC 3676The Text/Plain Format and DelSp Parameters尚未实现format=flowed 文本尚不会重新排版,FOLD 也不发送这种格式。
RFC 2369List Commands in Header Fields已实现List-Unsubscribe 作为操作:FOLD 自行发送退订邮件请求,网页链接在浏览器中打开。
RFC 2919List-Id已实现识别邮件列表,使其常见的签名失效不会被显示为伪造。
RFC 8058One-Click Unsubscribe尚未实现能识别该邮件头,但 FOLD 不发送一键退订请求;退订通过邮件或网页进行。
RFC 8098Message Disposition Notification部分实现FOLD 发送时可以请求已读回执,但自己有意从不发送回执。

读取与同步(IMAP)

FOLD 会询问服务器支持哪些功能,登录后再询问一次;每项扩展仅在服务器声明支持时才启用,否则退回更简单的方式。

RFC标准状态在 FOLD 中
RFC 3501IMAP4rev1已实现所有服务器都支持的基线,包括不回退到明文的 STARTTLS。
RFC 9051IMAP4rev2有意不实现可识别,但未启用:目标范围内没有服务器要求它;FOLD 改用 rev1 的扩展。
RFC 2177IDLE已实现FOLD 在每个账户的收件箱上保持 IDLE,每 25 分钟续期一次;其他文件夹通过轮询获取,在 iPhone 和 iPad 上仅在 App 打开时进行。
RFC 4315UIDPLUS已实现UID EXPUNGE,确保 FOLD 只删除自己的邮件。
RFC 6851MOVE已实现以 COPY 加 EXPUNGE 作为回退;执行 MOVE 后,FOLD 会检查源文件夹中还留下了什么。
RFC 7162CONDSTORE and QRESYNC已实现增量同步,包括 VANISHED (EARLIER)。
RFC 5161ENABLE已实现只有服务器以 ENABLED 确认后,开关才算生效。
RFC 6154SPECIAL-USE已实现文件夹角色取自服务器的标记,常见名称仅作回退,缺失的文件夹会按其角色创建。
RFC 9208QUOTA已实现在 Mac 上显示邮箱用量。
RFC 7888LITERAL+ and LITERAL-已实现上传时减少往返次数。
RFC 4959SASL-IR已实现一次往返即可完成登录。
RFC 5530IMAP Response Codes已实现能区分密码错误和服务器暂时不可用。
RFC 4731ESEARCH已实现在 iPhone 和 iPad 上为服务器端搜索返回紧凑结果;不支持 ESEARCH 的服务器使用传统的 SEARCH。自 2026-09-21 起
RFC 5258LIST-EXTENDED已实现一条命令即可获取文件夹及其角色。自 2026-09-21 起
RFC 5819LIST-STATUS已实现在同一条 LIST 中获取文件夹计数,无需逐个选择文件夹。自 2026-09-21 起
RFC 6855UTF8=ACCEPT已实现UTF-8 文件夹名和邮件头;文件夹名的编码在一处统一切换。自 2026-09-21 起
RFC 2342NAMESPACE尚未实现能识别服务器的这项能力声明,但从不发送该命令。
RFC 2971ID尚未实现部分 Yahoo 服务器要求在登录前发送 ID。
RFC 4978COMPRESS=DEFLATE尚未实现已推迟:它需要部分刷新(partial flush),而 Apple 的 Compression 框架不支持;计划直接使用 zlib。
RFC 8474OBJECTID尚未实现重命名后仍保持稳定的 ID;尚未使用。
RFC 8970PREVIEW尚未实现预览在设备上根据已加载的邮件生成。
RFC 8508REPLACE尚未实现草稿在撰写时保存在设备上,关闭撰写窗口时上传一次;服务器上较早的副本不会被替换。
RFC 3516BINARY有意不实现不需要:FOLD 自行解码 MIME 树。
RFC 5256SORT and THREAD有意不实现FOLD 在本地根据 References 和 In-Reply-To 构建对话,在任何服务器上都一样。
RFC 5465NOTIFY有意不实现目标范围内几乎没有服务器提供它。

发送(SMTP)

FOLD 如何把邮件交给你的服务器。

RFC标准状态在 FOLD 中
RFC 5321Simple Mail Transfer Protocol已实现包括正确的点填充(dot-stuffing)。
RFC 6409Message Submission for Mail已实现发送前始终先登录,使用 587 或 465 端口。
RFC 4954SMTP Service Extension for Authentication已实现支持带初始响应的登录,某种登录方式失败时干净地中止。
RFC 1870SIZE已实现服务器声明上限时会告知邮件大小,超出上限的邮件在上传前即被拒绝。
RFC 2920PIPELINING已实现发件人和收件人分组发送;所有信封应答返回后才发送 DATA,因此邮件要么发给全部收件人,要么一个也不发。自 2026-09-21 起
RFC 61528BITMIME已实现邮件含 8 位数据时予以声明;服务器不支持时,FOLD 不发送 8 位数据。自 2026-09-21 起
RFC 6531SMTPUTF8已实现国际化地址和 UTF-8 邮件头;服务器不支持时,FOLD 会停止并给出清晰的提示。自 2026-09-21 起
RFC 3463Enhanced Mail System Status Codes已实现用通俗的语言解释拒收原因,而不是只给出服务器代码(配合 RFC 2034)。自 2026-09-21 起
RFC 3461Delivery Status Notifications尚未实现尚未实现按请求提供的投递报告。
RFC 3030CHUNKING (BDAT)有意不实现可识别,但不使用;DATA 足以应对所有情况。
RFC 8689REQUIRETLS有意不实现目前几乎没有服务器支持它。

连接与登录

连接加密、登录方式和自动设置。

RFC标准状态在 FOLD 中
RFC 8314Cleartext Considered Obsolete已实现FOLD 从不在没有 TLS 的情况下连接;当 DNS 两种方式都提供时,优先使用隐式 TLS。
RFC 3207SMTP over TLS (STARTTLS)已实现如果服务器不提供 STARTTLS,FOLD 会停止,而不是以明文发送。
RFC 7817TLS Server Identity Check for Email已实现证书链和主机名由系统对照所配置的服务器进行检查。
RFC 4422SASL已实现下列所有登录方式的框架。
RFC 7677SCRAM-SHA-256部分实现发送(SMTP)时优先使用,并校验服务器签名;IMAP 登录仍使用 PLAIN。
RFC 4616PLAIN已实现仅在 TLS 内使用,绝不以明文传输(有意比 RFC 更严格)。
RFC 6749OAuth 2.0已实现使用 Google 登录;IMAP 和 SMTP 使用 XOAUTH2,即各大服务商采用的方式。
RFC 7636PKCE已实现每次 OAuth 登录都使用,仅限 S256;App 中不含客户端密钥。
RFC 8252OAuth 2.0 for Native Apps已实现在系统浏览器中登录,绝不在嵌入式网页视图中登录。
RFC 7628OAUTHBEARER尚未实现目标范围内没有服务商要求它;XOAUTH2 已覆盖这些服务商。
RFC 6186SRV Records for Email Submission and Access已实现自动设置的来源之一。

加密与签名

S/MIME 和 OpenPGP,以及它们背后的构件。

RFC标准状态在 FOLD 中
RFC 5652Cryptographic Message Syntax已实现S/MIME 的容器格式,在 iPhone 和 iPad 上为自研实现,在 Mac 上使用系统实现。
RFC 8551S/MIME 4.0部分实现使用 RSA 证书和 AES-CBC 进行签名、验证、加密和解密;S/MIME 4.0 所要求的 AES-GCM 尚不支持。
RFC 1847Security Multiparts for MIME已实现签名邮件和加密邮件的封装。
RFC 3565AES in CMS已实现用于 S/MIME 加密的 AES。
RFC 5754SHA-2 in CMS已实现S/MIME 签名使用 SHA-256 及更强的算法。
RFC 5280X.509 Certificates已实现证书路径由系统的信任评估检查;吊销检查为可选项。
RFC 9580OpenPGP部分实现第 4 版密钥(Ed25519、Curve25519、RSA),配合 AES-256 和完整性校验,已对照 gpg 测试;第 6 版密钥和 AEAD 加密尚不支持。
RFC 6637Elliptic Curve Cryptography in OpenPGP已实现Curve25519 加密密钥,即 FOLD 生成并使用的格式。
RFC 3156MIME Security with OpenPGP已实现用于签名邮件和加密邮件的 PGP/MIME。
RFC 3394AES Key Wrap已实现为使用 Curve25519 的收件人封装会话密钥。
RFC 7253OCB Authenticated Encryption已实现基于系统 AES 的自研实现,已对照 RFC 测试向量检验;用于读取 GnuPG 以 OCB 加密的邮件。
RFC 9106Argon2已实现Fortress 模式的密钥派生,已对照 RFC 测试向量检验。
RFC 7693BLAKE2已实现用于 Argon2 内部,自研实现,已对照 openssl 检验。
RFC 5869HKDF已实现来自 CryptoKit,用于 Fortress 模式。

发件人真实性

FOLD 如何核实邮件的真正发件人。

RFC标准状态在 FOLD 中
RFC 6376DKIM Signatures已实现在设备上验证:重新计算正文哈希和签名。
RFC 8463Ed25519 for DKIM已实现已对照 RFC 中的示例邮件检验。
RFC 8301DKIM Crypto Algorithm Usage已实现拒绝短于 1024 位的密钥和 rsa-sha1 签名。
RFC 8601Authentication-Results部分实现只信任以账户 IMAP 主机名标记的结果;使用其他名称标记的服务商(包括 Gmail)暂时得不到结果。
RFC 7489DMARC部分实现FOLD 使用你的服务器记录的 DMARC 结果,并自行检查对齐;仅在显示品牌标志前才查询已发布的策略。
RFC 7208SPF部分实现SPF 需要发件方的 IP 地址;FOLD 读取你的服务器记录的结果。
BIMIBrand Indicators for Message Identification (Internet-Draft)已实现仅当 DMARC 在强制策略下通过且标志证书已验证时才显示标志;每封邮件只获取一次,并随邮件保存。
RFC 9399Logotypes in X.509 Certificates已实现品牌标志取自已验证的标志证书。
方法

本页如何维护

状态来自 FOLD 的一致性规则,以及对照 RFC 对邮件协议栈所做的审计。每一行在出现在本页之前都会对照源代码核实,代码变化时本页也随之更新。代码中共引用了 95 个不同的 RFC;本页列出的是那些决定邮件客户端能否与真实服务器良好协作的 RFC。