Backs up an IMAP mailbox to a maildir. Useful for backing up mail stored on free webmail providers, etc.
HTML Python
Fetching latest commit…
Cannot retrieve the latest commit at this time.


Usage: imap2maildir [options]

A script to copy a remote IMAP folder to a local mail storage area.  Ideal for
incremental backups of mail from free webmail providers, or perhaps as an
alternative to fetchmail.  Supports mbox and maildir, despite the name. See
COPYRIGHT for your rights; for info.

  --version             show program's version number and exit
  -h, --help            show this help message and exit

  Required options:
    -u USERNAME, --username=USERNAME
                        Username for authentication to IMAP server
    -d PATH, --destination=PATH
                        Where to store the mail, e.g. ~/Backups/Gmail

  Optional and debugging options:
    -p PASSWORD, --password=PASSWORD
                        Password for IMAP server.  Default: prompt user
    -H HOSTNAME, --hostname=HOSTNAME
                        Hostname of IMAP server, default:
    -P PORT, --port=PORT
                        Port number.  Default: 993 (SSL), 143 (clear)
    -v, --verbose       Turns up the verbosity
    -q, --quiet         Quiets all output (except prompts and errors)
    -r FOLDERNAME, --remote-folder=FOLDERNAME
                        Remote IMAP folder.  Default: [Gmail]/All Mail
    -s CRITERIA, --search=CRITERIA
                        IMAP4 search criteria to use.  Default: SEEN
    --create            If --destination doesn't exist, create it
    -T, --no-turbo      Check for message locally before asking IMAP.
                        Default: True
    -m MAX, --max-messages=MAX
                        How many messages to process in one run (0=infinite).
                        Default: 0
    -c CONFIGFILE, --config-file=CONFIGFILE
                        Configuration file to use.  Default: imap2maildir.conf
    -S, --ssl           Use SSL to connect, default: True
    -t TYPE, --type=TYPE
                        Mailbox type.  Choice of: maildir, mbox.  Default:
    --mboxdash          Use - in the mbox From line instead of sender's
                        address. Default: False

 $ imap2maildir -u -d /home/bob/backups/mail --create
   Prompts you for's password, uses the default mail server.
 $ imap2maildir -c blarf.conf
   Uses the configuration from blarf.conf
 $ imap2maildir -c something.conf -m 5000
   Uses the something.conf configuration, but overrides maxmessages to 5000.

 1. Google Mail users in the United Kingdom receive the following:
    Exception: ['[NONEXISTENT] Unknown Mailbox: [Gmail]/All Mail (Failure)']

    Workaround:  Add --remote-folder="[Google Mail]/All Mail"

 2. When a message is deleted from the server, it isn't deleted from
    imap2maildir's local store.

    My response, to someone who asked about this:
        It's pretty much intentional.  The original intent of the script was
        to automatically back up mail stored on a server, so it doesn't check
        for deleted messages -- if a message is missing from the server, an
        unattended delete of the local copy would be bad!

        There are certainly scenarios where local deletes would be good.  In
        fact, yours is probably one of them.  :-)  At first glance, it would
        involve iterating through all local messages and asking the server if
        they exist, but there might be an easier way.  (It's been awhile since
        I've thought about IMAP.)

    (Patches welcome.  :-)

Please use the github issue tracker at:

You can download the latest pile of poop at: