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

Spa*_*awk 8 email mutt

我正在考虑切换到mutt电子邮件。但是,我有一些要求。

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

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

Spa*_*awk 6

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

相反,我最终使用的解决方案是imapnotifyisync的组合。我配置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
Run Code Online (Sandbox Code Playgroud)

更新

imapnotify (nodejs-imapnotify) 定期断开连接,没有警告/错误,并且经常错过新邮件。python-imapnotify也间歇性地工作。但是,根据我的经验,goimapnotify效果很好。它很少退出,当它退出时(例如,由于网络断开和/或挂起周期),它会毫不费力地快速重新启动。