Guide

IMAP CLI:从任意服务器读取邮件

使用 IMAP CLI 从终端列出、搜索和阅读 Fastmail、Zoho、ProtonMail Bridge、Dovecot 等 IMAP 服务器上的邮件。IMAP 是除 Gmail、Outlook 和 Exchange 之外所有邮件服务商背后的协议。

Written by Qasim Muhammad Staff SRE

Reviewed by Hazik

VerifiedCLI 3.1.1 · IMAP · last tested April 11, 2026

如何从终端使用 IMAP CLI?

连接 IMAP 账户一次,然后使用 nylas email listnylas email searchnylas email read。这让 Fastmail、Zoho、ProtonMail Bridge、Dovecot 和 ISP 邮箱获得与 OAuth 优先的服务商相同的终端工作流。

作为 IMAP 命令行工具,CLI 在你需要一次性测试 IMAP 连接命令行访问,然后持续使用标准化邮件命令而无需维护单独的 mutt、fetchmail 或 imaplib 配置时非常有用。

IMAP 仍然是大型托管服务商之外邮件系统的骨干。

IMAP(RFC 3501,发布于 2003 年)是为三大巨头(Google、Microsoft、Apple)之外的邮件服务商提供邮件访问的协议。虽然 Gmail 和 Outlook 主导消费级邮件市场,但相当大份额的商业和机构邮件仍运行在纯 IMAP 服务器上。

自托管邮件管理员、ISP 邮箱用户、大学生以及 Fastmail 或 Posteo 等注重隐私的服务商用户都依赖 IMAP。协议本身没问题,但从命令行配置 IMAP 客户端很麻烦。

IMAP 配置难题

每个 IMAP 服务器都有各自的主机名、端口、TLS 模式和认证方式。要用 muttfetchmail 或 Python 的 imaplib 连接,你需要知道这四项。搞错任何一项,你会盯着连接超时等 30 秒,然后看到一条难以理解的错误信息。

以下是单个服务商的典型 .muttrc 配置:

# Fastmail 的 .muttrc 配置 — 一个账户需要 8 行配置
set imap_user = "you@fastmail.com"
set imap_pass = "app-specific-password-here"
set folder = "imaps://imap.fastmail.com:993/"
set spoolfile = "+INBOX"
set record = "+Sent"
set postponed = "+Drafts"
set ssl_starttls = yes
set ssl_force_tls = yes

每多一个 IMAP 账户就要再写一遍这些配置。再加上一个使用自签名证书的自托管服务器、一个端口不同的 ISP 账户,以及一个只支持端口 143 上 STARTTLS 的大学邮箱。那就是三个独立的配置块,各有不同的 TLS 设置,而且任何密码变更都会让连接悄悄断开。

1. 安装 Nylas CLI

Nylas CLI 安装为单个二进制文件,无运行时依赖。在 macOS 和 Linux 上,Homebrew 是最快的安装方式——安装在 30 秒内完成,并包含自动 SHA-256 校验。二进制文件约 25 MB,支持 x86_64 和 ARM64 架构。

brew install nylas/nylas-cli/nylas

其他平台请参阅入门指南,了解 shell 脚本、PowerShell 和 Go 安装方式。

2. 连接你的 IMAP 账户

将 IMAP 账户连接到 Nylas CLI 需要通过 Nylas 控制台进行一次性设置。控制台可自动检测 50 多个已知 IMAP 服务商的服务器设置,包括 Fastmail、Zoho 和 Posteo。对于自托管服务器,你需要手动输入主机名和端口。整个设置大约需要 2 分钟。

前往 dashboard-v3.nylas.com,创建应用并连接你的 IMAP 账户。然后使用 API 密钥配置 CLI:

nylas auth config
# 按提示粘贴你的 API 密钥

# 验证连接
nylas auth whoami
# => Authenticated as you@fastmail.com (IMAP)

3. 列出你的邮件

nylas email list 命令使用与 Gmail、Outlook 或 Exchange 账户相同的语法从任何已连接的 IMAP 服务器检索消息。默认返回按日期排序的最近 10 条消息。你可以按已读状态筛选或使用标志调整结果数量。

IMAP 的 RFC 3501 FETCH 命令通常需要指定消息序列号和数据项。CLI 将其抽象为一条适用于所有服务商的命令。

# 列出最近的消息
nylas email list

# 仅显示未读消息
nylas email list --unread

# 限制为 25 条结果
nylas email list --limit 25

自托管邮件服务器(Dovecot、Postfix、Zimbra)

自托管邮件服务器通过与任何商业服务商相同的 IMAP 连接流程与 Nylas CLI 配合使用。根据 Dovecot 项目自己的使用数据,仅 Dovecot 就支撑着全球约 73% 的 IMAP 服务器。无论你运行 Dovecot 处理 IMAP、Postfix 处理 SMTP,还是 Mail-in-a-Box 或 Zimbra 这样的一体化方案,控制台设置只需要主机名和端口。

Nylas 平台为自托管服务器处理 TLS 协商、连接池和 IMAP IDLE 保活。以下是常见的自托管配置及在 Nylas 控制台中需要输入的值:

服务器方案IMAP 主机名端口TLS
Dovecot(标准)mail.yourdomain.com993Implicit TLS
Mail-in-a-Boxbox.yourdomain.com993Implicit TLS
Zimbramail.yourdomain.com993Implicit TLS
Courier IMAPmail.yourdomain.com993 or 143Implicit TLS or STARTTLS
Cyrus IMAPmail.yourdomain.com993Implicit TLS
hMailServer (Windows)mail.yourdomain.com993Implicit TLS

通过 Nylas 控制台连接自托管服务器后,CLI 命令与其他任何服务商完全一样。CLI 使用中没有任何 IMAP 特定的内容——无论服务器运行 Dovecot、Zimbra 还是 Cyrus,相同的 nylas email listnylas email search 命令都能正常工作。

# 自托管 Dovecot 服务器 — 与 Gmail 或 Outlook 命令相同
nylas email list --limit 10
nylas email search "from:client@example.com"
nylas email list --folder "Sent" --limit 5

ISP 和电信运营商邮箱

来自 Comcast、AT&T 和 Deutsche Telekom 等服务商的 ISP 邮箱通过标准 IMAP 凭据连接 Nylas CLI。根据 Consumer Reports 2023 年的数据,估计仍有 3000-4000 万美国人使用 ISP 提供的邮箱地址。这些账户仅提供 IMAP 访问——没有 OAuth2,没有 REST API,只有用户名和密码。

常见的 ISP 域名包括 Comcast/Xfinity (@comcast.net)、AT&T (@att.net, @sbcglobal.net)、Deutsche Telekom (@t-online.de) 和 BT (@btinternet.com)。ISP 邮箱在传统 IMAP 客户端中出了名地脆弱,因为 ISP 经常更改服务器设置。例如,AT&T 在 2017 年从 imap.mail.att.net 迁移到了 Yahoo 的基础设施,导致所有手动配置的客户端失效。

以下是主要 ISP 服务商的 IMAP 服务器主机名。如果自动检测未找到该服务商,请在 Nylas 控制台设置时输入这些值。

# 常见 ISP IMAP 服务器(供 Nylas 控制台设置时参考)
# Comcast/Xfinity: imap.comcast.net:993
# AT&T:            imap.mail.att.net:993
# Verizon:         incoming.verizon.net:993
# Deutsche Telekom: secureimap.t-online.de:993
# BT Internet:     imap4.btconnect.com:993

# 通过控制台连接后,使用相同的命令:
nylas email list --limit 10

大学和机构邮箱

大学和机构邮箱系统通常运行独立的 IMAP 服务器,Nylas CLI 可以通过标准 IMAP 授权流程连接这些服务器。根据 2023 年 EDUCAUSE 调查,欧洲约 40% 的高等教育机构仍自行运营邮件基础设施,而非外包给 Google Workspace 或 Microsoft 365。MIT、Caltech 和大多数欧洲研究型大学都属于这一类。

这些账户通常有与商业 IMAP 服务商不同的特殊要求:

  • 校外访问 IMAP 可能需要 VPN
  • 在端口 143 上使用 STARTTLS 而非端口 993 上的 Implicit TLS
  • 使用 Kerberos 或 LDAP 认证而非普通密码
  • 激进的连接超时设置(通常为 5 分钟,而 IMAP 标准为 30 分钟)

在你于控制台设置过程中提供服务器信息后,Nylas CLI 会处理连接层的细节——TLS 协商、IDLE 保活以及超时后的重连。

TLS、端口与 STARTTLS 的混淆

IMAP 使用两个端口号——993 用于 Implicit TLS,143 用于 STARTTLS 或明文——选错端口会导致连接静默失败。RFC 8314 于 2018 年发布,建议将端口 993 上的 Implicit TLS 作为所有新部署的默认方式。尽管如此,IETF 2022 年的一项调查发现,超过 35% 的活跃 IMAP 服务器仍接受端口 143 上的 STARTTLS 连接。

端口方式工作原理状态
993Implicit TLS先进行 TLS 握手,然后是 IMAP推荐(RFC 8314)
143STARTTLSIMAP 以明文连接,然后升级为 TLS旧版(仍常见)
143明文 IMAP(无加密)已弃用——应避免

STARTTLS 方式有一个已知漏洞:中间人可以在客户端看到 STARTTLS 命令之前将其剥离,强制使用明文连接。这就是 RFC 8314 推荐 Implicit TLS 的原因。Nylas 平台在 IMAP 连接中始终使用 TLS。

IMAP 与 POP3:为什么 IMAP 更重要

IMAP 将消息保留在服务器上并在设备之间同步状态,而 POP3 下载消息并可选择从服务器删除。RFC 3501(IMAP)于 2003 年发布,作为 RFC 1939(POP3,1996 年发布)的替代。一些较旧的 ISP 账户仍同时提供两种协议,但 IMAP 是唯一支持服务器端搜索、文件夹导航和部分消息获取的协议。

功能IMAP (RFC 3501)POP3 (RFC 1939)
消息存储在服务器上(同步)下载到客户端(默认从服务器删除)
多设备是——所有客户端看到相同状态否——每个客户端独立下载
文件夹支持是(INBOX、Sent、自定义文件夹)否(仅收件箱)
搜索服务器端 SEARCH 命令不支持——必须先下载
部分获取是(仅获取邮件头、获取正文部分)否(下载整封邮件)
带宽更低(仅同步变更)更高(重新下载全部内容)
离线访问客户端本地缓存完整本地副本

如果你的服务商同时提供两种协议,请始终选择 IMAP。Nylas CLI 不支持 POP3,因为 IMAP 为 CLI 操作提供了严格优于 POP3 的接口——服务器端搜索、文件夹导航和部分消息获取都需要 IMAP。

聚合多个 IMAP 账户

Nylas CLI 可以使用 --grant 标志将多个 IMAP 账户聚合到一个命令行界面中。每个已连接的 IMAP 账户——无论是 Fastmail、自托管 Dovecot 还是 ISP 邮箱——都成为一个单独的授权,你可以用一个标志在它们之间切换。传统 IMAP 客户端(如 mutt)需要为每个账户单独配置一个配置块,这意味着 3-4 个账户需要维护 3-4 个凭据文件。

以下示例展示了如何查询三个独立的 IMAP 账户,并在一个 shell 循环中统计所有账户的未读邮件数。

# 使用 --grant 标志在账户之间切换
nylas email list --grant "you@fastmail.com" --limit 5
nylas email list --grant "you@selfhosted.org" --limit 5
nylas email list --grant "you@comcast.net" --limit 5

# 在特定账户中搜索
nylas email search "invoice" --grant "you@fastmail.com"

# 在一个脚本中统计所有账户的未读数
for grant in "you@fastmail.com" "you@selfhosted.org" "you@comcast.net"; do
  count=$(nylas email list --unread --json --grant "$grant" | jq length)
  echo "$grant: $count unread"
done

IMAP 文件夹名称没有统一标准

各服务器的 IMAP 文件夹名称各不相同,因为 RFC 3501 只定义了一个必需的文件夹:INBOX。其他所有文件夹名称——Sent、Drafts、Trash、Junk——都是惯例而非标准。Courier IMAP 使用点分隔名称如 INBOX.Sent,Dovecot 使用纯 Sent,而 Zimbra 使用带不同内部命名空间的 Sent。RFC 6154(2011)引入了 SPECIAL-USE 扩展来按角色标记文件夹,但采用率参差不齐——大约 60% 的 IMAP 服务器支持它。

nylas folder list 命令显示已连接 IMAP 服务器上的所有文件夹。Nylas CLI 会规范化常见的文件夹名称,因此无论服务器内部的命名约定如何,你都可以使用 Sent

# 列出 IMAP 服务器上的所有文件夹
nylas folder list

# 不同服务商的文件夹名称差异:
# Fastmail:   "Sent", "Trash", "Junk Mail", "Archive"
# Dovecot:    "Sent" or "INBOX.Sent" (namespace prefix varies)
# Zimbra:     "Sent", "Trash", "Junk"
# Zoho:       "Sent", "Trash", "Spam"
# Courier:    "INBOX.Sent", "INBOX.Trash" (dot-separated hierarchy)

# Nylas CLI 规范化常见文件夹名称
nylas email list --folder "Sent"
nylas email list --folder "Drafts"
nylas email list --folder "Trash"

INBOX. 前缀是 Courier IMAP 在 2000 年代初期的惯例。如果你在 nylas folder list 输出中看到它,说明你的服务器使用了旧式命名空间。CLI 能处理两种格式。

用于 IMAP 自动化的 JSON 输出

Nylas CLI 使用 --json 标志将原始 IMAP 协议响应转换为结构化 JSON。原生 IMAP 使用 RFC 3501 中定义的基于文本的格式,采用类似 S 表达式的括号结构——不能直接管道到 jq 而不用自定义解析器。--json 标志将每条消息输出为包含 subjectfrom datebody 等字段的 JSON 对象,可直接用于脚本编写或 AI 智能体使用。

三个常见的自动化模式展示了 JSON 输出的价值:每日收件箱摘要、完整 JSON 导出和发件人频率分析。每个模式都使用 jq 处理 CLI 的 JSON 输出。

# 从自托管服务器生成每日收件箱摘要
nylas email list --unread --json --limit 50 | \
  jq -r '.[] | "\(.date | split("T")[0]) | \(.from[0].name // .from[0].email) | \(.subject)"' | \
  column -t -s '|'

# 将最近 100 条消息导出为 JSON 文件用于分析
nylas email list --limit 100 --json > inbox-export.json

# 查找最频繁的发件人
nylas email list --limit 200 --json | \
  jq -r '[.[] | .from[0].email] | group_by(.) |
  map({sender: .[0], count: length}) |
  sort_by(-.count) | .[:10] |
  .[] | "\(.count)	\(.sender)"'

IMAP 服务商参考

本参考涵盖 9 个常用 IMAP 服务商的 IMAP 服务器主机名、端口和认证方式。Nylas 控制台可自动检测大多数服务商的设置,但如果自动检测失败,你也可以手动输入。除了 ProtonMail Bridge 在本地端口 1143 上运行外,所有列出的服务商都使用端口 993 和 Implicit TLS。

服务商IMAP 服务器端口认证方式
Fastmailimap.fastmail.com993应用密码或 OAuth2
Zoho Mailimap.zoho.com993应用专用密码
ProtonMail Bridge127.0.0.11143Bridge 生成的密码
Posteoposteo.de993账户密码
GMXimap.gmx.com993账户密码
mail.comimap.mail.com993账户密码
Comcast/Xfinityimap.comcast.net993账户密码
AT&Timap.mail.att.net993账户密码
Dovecot(自托管)你的服务器主机名993你的认证配置

后续步骤

列出 IMAP 邮件后,Nylas CLI 还支持在所有已连接的服务商之间发送、搜索以及管理日历和联系人。以下指南涵盖了 IMAP 和其他邮件服务商的相关工作流。