如何将 mutt 与本地存储、IMAP 和新电子邮件即时推送结合使用?

如何将 mutt 与本地存储、IMAP 和新电子邮件即时推送结合使用?

我正在考虑改用mutt电子邮件。不过,我有一些要求。

  1. 我希望能够离线存储电子邮件。
  2. 我希望将电子邮件立即推送到我的本地计算机,而不是定期轮询(例如使用 IMAP IDLE)。

对于离线存储,我可以使用imapofflineisync。据我了解,后者更稳定。但是,要按需推送电子邮件,我找到的 isync 的唯一选项是微软手表。不幸的是,这需要在远程电子邮件服务器上安装一个程序,这是不可能的。有没有一种解决方案可以让我使用mutt脱机电子邮件存储和即时电子邮件传送?

答案1

不幸的是,另一个中提出的两种可能性回答是不完美的。offlineimap在最好的时候也是相当有问题的。例如,无法在新邮件到达后自动运行脚本。fetchmail不双向同步。

相反,我最终使用的解决方案是以下组合通知同步。我配置imapnotify为在触发新邮件时运行脚本(通过 IDLE)。

该脚本的运行mbsync "${channel}:INBOX"取决于哪个帐户有邮件。接下来它运行notmuch new。最后,它将未读电子邮件的数量记录到文件中,如下所示。该文件的内容显示在我的桌面环境的面板上。

mail_count_file="/home/foo/.cache/new_mail_count"
new_count=$(find ~/.mail/*/Inbox/new -type f | wc -l)
if [[ $new_count > 0 ]]; then
  echo $new_count > "$mail_count_file"
else
  if [[ -f "$mail_count_file" ]]; then
    rm "$mail_count_file"
  fi
fi

更新

imapnotify(nodejs-imapnotify)经常断开连接,没有任何警告/错误,并且经常错过新邮件。python-imapnotify也间歇性地工作。然而,goimap通知根据我的经验,效果很好。它很少掉线,当它掉线时(例如,由于网络断开和/或挂起周期),它会快速自行重新启动而无需大惊小怪。

答案2

立即将邮件“推送”到客户端的唯一方法是服务器在邮件送达后立即执行此操作。这将不可避免地需要在邮件服务器上安装并运行软件,因此每个潜在的解决方案都会遇到与mswatch.

频繁轮询可能是您的最佳选择。

根据我的经验,offlineimap每隔几分钟从 cron 运行一次或类似的操作就足够了。

一些 imap 获取程序支持 imap IDLE 命令。 IDLE 并不完全是“推送”(因为邮件仍然由客户端从服务器拉取),但通常会导致本地邮箱几乎即时更新。

离线地图支持它,但手册说“IDLE 支持不完整且处于实验阶段。可能会遇到错误。”

获取邮件从5.0版本开始支持IDLE

相关内容