FairEmail 后台推送不工作:IMAP IDLE 与前台服务
FairEmail 为什么有一个常驻通知
FairEmail 启动后,Android 通知栏会持续显示一个常驻通知——通常叫「FairEmail 正在同步」或类似文字。很多用户第一次看到这个通知会想把它手动划掉,但划掉之后会很快发现:FairEmail 不再能及时收到新邮件了。
这个常驻通知不是设计失误,而是 Android 系统机制决定的——FairEmail 必须保持一个 前台服务(Foreground service) 来维持 IMAP IDLE 连接。Android 8 之后的系统对后台应用限制严格:不在前台的 App 随时可能被系统杀掉进程。而 IMAP IDLE 推送需要 FairEmail 一直运行着——被系统杀掉的话,推送自然中断。
所以 FairEmail 的前台通知是有意保留的设计,不是 bug。
通知能关掉吗
可以。Android 8+ 的渠道通知机制允许你:
- FairEmail 设置 → 「监测通道」或「监控通道」(Monitoring channel)
- 点击这个通道 → 跳转到 Android 系统通知设置
- 关闭这个通道的通知
关闭后,FairEmail 的前台服务仍然保持运行(IMAP IDLE 连接不会断),只是通知不再显示。适合不想被通知打扰但又需要保持推送的用户。
⚠️ 关闭通知通道的副作用:Android 有时会以「通知异常」为理由杀掉前台服务。如果发现关闭通知后推送也停了,需要重新开启。
IMAP IDLE 推送原理
FairEmail 的实时推送核心是 IMAP IDLE 命令——这是 IMAP 协议的一个扩展,允许客户端在不主动轮询的情况下让服务器在有新邮件时主动通知客户端。
工作流程:
- FairEmail 启动 IMAP 连接
- 连接建立后,FairEmail 发送
IDLE命令给服务器 - 服务器确认
IDLE命令,连接进入「空闲等待」状态 - 服务器上有新邮件到达时,立即通过这条连接发送通知
- FairEmail 收到通知 → 触发同步 → 拉取新邮件 → 弹出通知
对比「定时轮询」(每隔 N 分钟主动查一次有没有新邮件),IMAP IDLE:
- 延迟极低(新邮件到达后通常 1 秒内 FairEmail 就能收到)
- 省电(大部分时间连接处于空闲状态,不消耗 CPU)
- 省流量(空闲期间没有数据传输)
推送不工作的排查步骤
第一步:检查前台服务是否还在
打开 Android 通知栏,看 FairEmail 的常驻通知是否存在:
- 存在 → 前台服务正常运行,问题在别处
- 不存在 → 前台服务被系统杀掉了
如果前台服务消失了,尝试:
- 重新打开 FairEmail App → 它会重新启动前台服务
- Android 设置 → 电池 → FairEmail → 关闭「电池优化」或设置为「不限制」
- FairEmail 设置中检查「保持后台服务运行」相关选项(不同版本措辞不同)
第二步:检查电池优化
Android 系统对后台进程的管理非常激进——如果 FairEmail 被标记为「被电池优化」,系统可能在待机时杀掉它的前台服务。
检查路径:Android 设置 → 电池 → 电池优化 → FairEmail → 设置为「不优化」。
第三步:检查厂商的「自启动」和「后台限制」
小米、OPPO、VIVO、华为等定制 ROM 有比原生 Android 更激进的后台管理:
- 小米:设置 → 应用管理 → FairEmail → 自启动(允许)+ 后台弹出界面(允许)+ 锁定后台(近期任务界面下拉 FairEmail 卡片锁住)
- OPPO:设置 → 电池 → 后台冻结 → FairEmail(关闭冻结)
- 华为:设置 → 电池 → 应用启动管理 → FairEmail(允许后台活动)
- 一加:设置 → 电池 → 深度优化 → FairEmail(关闭深度优化)
每个厂商的措辞不同,但核心都一样——确保 FairEmail 不会被系统主动杀掉。
第四步:检查 IMAP 连接状态
FairEmail 设置 → 手动设置 → 账户 → 选择账户 → 找到「连接状态」或「最后一次同步」:
- 如果显示「已连接」或「IMAP IDLE 等待中」→ IMAP 连接正常
- 如果显示「断开」「认证失败」「连接超时」→ IMAP 连接有问题,参考「认证失败」页
第五步:检查网络状态
IMAP IDLE 连接对网络变化敏感:
- Wi-Fi 切换到移动数据 → FairEmail 应该自动重连,但有时需要手动触发
- Wi-Fi 路由器断开再重连 → FairEmail 可能没检测到,打开 FairEmail App 触发重连
- VPN 开启时 → 某些 VPN 会中断长连接(见 VPN 页)
第六步:Android 13+ 特殊权限
Android 13 引入了「闹钟与提醒(Alarms & reminders)」权限——FairEmail 的推送定时依赖这个权限。如果 FairEmail 被系统杀掉后无法自动恢复,检查:
- Android 设置 → 应用 → FairEmail → 权限
- 找到「闹钟与提醒」或「精确闹钟」权限 → 确保已授予
推送延迟或丢失
如果 FairEmail 能推送但经常延迟(几分钟后才收到新邮件通知):
- IMAP IDLE 连接被中间设备中断:某些路由器或防火墙会自动清理长时间空闲的 TCP 连接。FairEmail 有「定期 Ping」机制来保持连接活跃,但某些网络环境下仍然可能被断
- 服务端 IMAP IDLE 实现问题:少数老旧邮箱服务器的 IMAP IDLE 实现有 bug,无法真正推送,FairEmail 会自动退化为定时同步
- Android Doze 模式:手机长时间待机时进入 Doze 模式,限制后台活动。打开 FairEmail App 或给 FairEmail 设置 Doze 白名单可以改善
不推送的兜底方案
如果不管怎么调 FairEmail 都无法保持 IMAP IDLE 连接,有一个兜底办法——用 FairEmail 的定时同步功能(在每个账户的高级设置中):
- 设置 FairEmail 每隔 5~15 分钟自动同步一次
- 虽然不是实时推送,但能保证延迟在分钟级
- 电量消耗会比 IMAP IDLE 稍高(定期唤醒 App),但仍是可接受的