Version Build Status Coverage License

imap-backup

Backup, restore and migrate email accounts.

Modes

There are two types of backups:

  • Keep all (the default) - progressively saves a local copy of all emails,
  • Mirror - adds and deletes emails from the local copy to keep it up to date with the account.

What You Can Do with a Backup

  • Migrate - use the local copy to populate emails on another account. This is a once-only action that deletes any existing emails on the destination account.
  • Mirror - make a destination account match the local copy. This action can be repeated.
  • Restore - push the local copy back to the original account.

See below for a full list of commands.

Installation

Homebrew (macOS)

If you have Homebrew, do this:

brew install imap-backup

As a Ruby Gem

gem install imap-backup

If that doesn't work, see the detailed installation instructions.

From Source Code

If you want to use imap-backup directly from the source code, see here.

Setup

As a first step, you need to add accounts via a menu-driven command line program:

Run:

imap-backup setup

GMail

To use imap-backup with GMail, you will need to enable 'App passwords' on your account.

Backup

Manually, from the command line:

imap-backup

Alternatively, add it to your crontab.

Backups can also be inspected, for example via local show and exported via utils export-to-thunderbird.

Commands

For a full list of available commands, run

imap-backup help

For more information about a command, run

imap-backup help COMMAND

Performace

There are a couple of performance tweaks that you can use to improve backup speed.

These are activated via two settings:

  • Global setting "Delay download writes"
  • Account setting "Multi-fetch size"

As with all performance tweaks, there are trade-offs. If you are using a small virtual server or Raspberry Pi to run your backups, you will probably want to leave the deafult settings. If, on the other hand, you are using a computer with a fair bit of RAM, and you are dealing with a lot of email, then changing these settings may be worthwhile.

Delay download writes

This setting affects all account backups.

When not set, each message is written to disk, one at a time. Doing so means the message itself is appended to the MBox file, but more importantly, the JSON metadata is rewritten to disk from scratch.

When in use, all of a mailboxes unbackupped messages are downloaded first, and then written to disk just once.

This speeds up backup as the metadata file is not rewritten after each message is added, but it potentially uses much more memory.

Multi-fetch Size

By default, during backup, each message is downloaded one-by-one.

Using this setting, you can download chunks of emails at a time, potentially speeding up the process.

If you're not using "Delayed downlaod writes", using multi-fetch will mean that the backup process will use more memory - equivalent to the size of the greater number of messages downloaded at a time.

This behaviour may also exceed limits on your email provider, so it's best to check before cranking it up!

Troubleshooting

If you have problems:

  1. ensure that you have the latest release,
  2. run imap-backup with the -v or --verbose parameter.

Development

See the Development documentation for notes on development and testing.

See the CHANGELOG to a list of changes that have been made in each release.