No description
Find a file
2024-06-22 11:05:00 +01:00
assets docs: add the readme 2024-06-22 11:05:00 +01:00
src feat: move over to using the "mbwatch" group for watchers 2024-06-22 07:58:35 +01:00
.gitignore chore: initial commit 2024-06-21 11:19:36 +01:00
Cargo.lock chore: initial commit 2024-06-21 11:19:36 +01:00
Cargo.toml chore: initial commit 2024-06-21 11:19:36 +01:00
README.md docs: add the readme 2024-06-22 11:05:00 +01:00

mbwatch

mbwatch is a CLI tool designed to monitor mailboxes and automatically invoke mbsync when changes occur in the remote mailbox. mbsync is a highly regarded tool for synchronizing remote email accounts with local maildir, but it requires manual execution to update changes. Typically, this is managed through periodic polling using a tool like cron, which can result in delayed message synchronization.

mbwatch addresses this issue by leveraging the IMAP IDLE feature to continuously monitor the mailbox for changes. When a change is detected, mbwatch automatically triggers mbsync to sync the new messages, ensuring your local maildir is always up-to-date without manual intervention.

Prerequisites

  • The remote IMAP server must support IDEL
  • The rust toolchain for building
  • mbsync installed and configured

Installation

Right now there are no prebuilt binary, you can install from git using cargo.

cargo install --git https://github.com/AdeAttwood/MbWatch

Configuration

This tool will use the mbsync Groups config from your existing .mbsyncrc. You will need to define a group called mbwatch, it will then watch all the mailboxes defined in the Channels prop. This should be a comma separated list of channel:mailbox like you define on the mbsync cli.

This is an example config, it assumes you have two channels called work and personal each remote store has a mailbox called INBOX and the work mailbox has one called Archive.

Group mbwatch
Channels work:INBOX, work:Archive, personal:INBOX

For more details on the .mbsyncrc you can view the upstream mbsync docs