A service to link IMAP mailboxes together across servers.
Inspired by other IMAP-to-IMAP forwarders, this is a project that is designed to run as a daemon (or similar) type service to grab new emails from one account and forward them to another one.
- Auto-reconnect
- Multiple connections
- Full message is always copied
- Made in Rust, so it compiles easily to a standalone binary and is relatively memory efficient
- Send forwarded mail to different recipient inbox
- Lots of logging everywhere to make it easy to diagnose issues
- Because it's in its first version, extensive testing has not been completed, and the likelihood of bug encounters are high. When you do find bugs, please submit them as issues on the repo, and attach logs from stderr-- please run with
RUST_LOG=none,imap_link=trace RUST_BACKTRACE=1 cargo runto get full output. PRs are welcome, too! - There's a possibility that the program panics at a couple steps in the process, so it's advisable to have it auto-restart (maybe using systemd?)
- Ease of troubleshooting was prioritized over memory usage, and optimizations are not yet present.
- Set up your config.
In
accounts.toml, define your accounts, like so: (2 minimum, one from, one to)
[acct_name]
email = "contact@mikeylab.com"
username = "contact@mikeylab.com"
password = "super-secret"
server = "imap.email-service.com"
port = 993
[acct_name_2]
email = "contact+other@mikeylab.com"
username = "contact+other@mikeylab.com"
password = "super-secret-2"
server = "imap.email-service-2.com"
port = 993Then in connections.toml, set up your connections:
[example_connection]
from = "acct_name"
to = "acct_name_2"To ease troubleshooting and protect privacy, names of accounts and connections defined in the TOML files will appear in logs in place of actual account information.
- Run the binary.
Simply run
cargo run, or, runcargo buildand copy the target binary somewhere.
GPLv3