残念ながら、他の回答で提案された2つの可能性は不完全でした。offlineimap
最高の時にかなりバギーでした。たとえば、新しいメールが到着した後にスクリプトを自動的に実行する方法はありません。fetchmail
双方向で同期しません。
代わりに、私が最終的に使用したソリューションは、imapnotifyとisyncの組み合わせでした。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も断続的に動作します。ただし、goimapnotifyは私の経験では非常にうまく機能します。ドロップアウトが発生することはめったになく、ドロップすると(たとえば、ネットワークの切断やサスペンドサイクルのため)、手間をかけずにすぐに再起動します。