Provided by: larch_1.1.2-2_all bug


       larch - copy messages from one IMAP server to another


       larch [options]

       larch [--from URI] [--to URI]


       Larch is a tool to copy messages from one IMAP server to another quickly and safely.  It's
       smart enough not to copy messages that already exist on the destination and robust  enough
       to deal with interruptions caused by flaky connections or misbehaving servers.

       Larch is particularly well-suited for copying email to, from, or between Gmail accounts.


   Server options
       --from, -f URI
              URI of the source IMAP server.

       --from-folder, -F FOLDER
              Source folder to copy from. Default is INBOX.

       --from-pass, -p PASSWD
              Source server password. Default is to prompt the user.

       --from-user, -u USER
              Source server username. Default is to prompt the user.

       --to, -t URI
              URI of the destination IMAP server.

       --to-folder, -T FOLDER
              Destination folder to copy to. Default is INBOX.

       --to-pass, -P PASSWD
              Destination server password. Default is to prompt the user.

       --to-user, -U USER
              Destination server username. Default is to prompt the user.

   Copy options
       --all, -a
              Copy all folders recursively.

       --all-subscribed, -s
              Copy all subscribed folders recursively.

       --delete, -d
              Delete messages from the source after copying them, or if they already exist at the

       --exclude PATTERN [ PATTERN... ]
              List of mailbox names/patterns that shouldn't be copied.

       --exclude-file FILE
              Filename containing mailbox names/patterns that shouldn't be copied.

       --expunge, -x
              Expunge deleted messages from the source.

       --sync-flags, -S
              Sync message flags from the source to the destination  for  messages  that  already
              exist at the destination.

   General options
       --config, -c FILE
              Specify a non-default config file to use. Default is ~/.larch/config.yaml.

       --database FILE
              Specify a non-default message database to use. Default is ~/.larch/larch.db.

       --dry-run, -n
              Don't actually make any changes.

       --max-retries NUM
              Maximum number of times to retry after a recoverable error. Default is 3.

              Don't create destination folders that don't already exist.

       --ssl-certs FILE
              Path to a trusted certificate bundle to use to verify server SSL certificates.

              Verify server SSL certificates.

       --verbosity, -V STR
              Output verbosity: debug, info, warn, error, or fatal. Default is info.

       --version, -v
              Print version and exit.

       --help, -h
              Show a help message.


       While  it's  possible  to  control  Larch  entirely  from  the  command  line, this can be
       inconvenient if you need to specify a lot of options or if you run  Larch  frequently  and
       can't  always  remember  which  options  to  use.  Using a configuration file can simplify

       By default, Larch looks for a config file at ~/.larch/config.yaml and uses  it  if  found.
       You may specify a custom config file using the --config command line option.

       The  Larch  configuration  file  is a simple YAML ⟨⟩ file that may contain
       multiple sections, each with a different set of options, as  well  as  a  special  default
       section.  The options in the default section will be used unless they're overridden either
       in another config section or on the command line.

       Here's a sample Larch config file:

              # Copy all subscribed folders by default
                all-subscribed: true

              # Copy mail from Gmail to my server, excluding stuff I don't want.
              gmail to my server:
                from: imaps://
                from-user: example
                from-pass: secret

                to: imaps://
                to-user: example
                to-pass: secret

                  - "[Gmail]/Sent Mail"
                  - "[Gmail]/Spam"
                  - "[Gmail]/Trash"

              # Copy mail from my INBOX to Gmail's INBOX
              my inbox to gmail inbox:
                all-subscribed: false

                from: imaps://
                from-folder: INBOX
                from-user: example
                from-pass: secret

                to: imaps://
                to-folder: INBOX
                to-user: example
                to-pass: secret

       This file contains three sections.  The options from default will be  used  in  all  other
       sections as well unless they're overridden.

       To  specify  which config section you want Larch to use, just pass its name on the command
       line (use quotes if the name contains spaces):

              larch 'gmail to my server'

       If you specify additional command line options, they'll override  options  in  the  config

              larch 'gmail to my server' --from-user anotheruser

       Running  Larch  with  no command line arguments will cause the default section to be used.
       With the example above, this will result in an error since  the  default  section  doesn't
       contain  the required from and to options, but if you only need to use Larch with a single
       configuration, you could use the default section for everything  and  save  yourself  some
       typing on the command line.




   Server compatibility
       Larch should work well with any server that properly supports IMAP4rev1 ⟨http://⟩ , and does its best to  get  along  with  servers  that  have
       buggy, unreliable, or incomplete IMAP implementations.

       Larch has been tested on and is known to work well with the following IMAP servers:

       ·      Dovecot

       ·      Gmail

       ·      Microsoft Exchange 2003

       The following servers are known to work, but with caveats:

       ·      Yahoo! Mail

       The following servers do not work well with Larch:

       ·      BlitzMail  Buggy server implementation; fails to properly quote or escape some IMAP
              responses, which can cause Net::IMAP to hang waiting for  a  terminating  character
              that will never arrive.

   Gmail quirks
       Gmail's  IMAP  implementation  is quirky.  Larch does its best to work around these quirks
       whenever possible, but here are a few things to watch out for:

       Some messages could not be FETCHed error

       This error indicates that a message on Gmail is corrupt, and Gmail  itself  is  unable  to
       read  it.  The message will continue to show up in the mailbox, but all attempts to access
       it via IMAP, POP, or the Gmail web interface will result in errors.   Larch  will  try  to
       skip these messages and continue processing others if possible.

       It's  not clear how this corruption occurs or exactly what kind of corruption causes these
       errors, although in every case I'm aware of, the corrupt message has originated outside of
       Gmail  (Gmail  itself does not corrupt the message).  There is currently no known solution
       for this problem apart from deleting the corrupted messages.

       Folder names cannot contain leading or trailing whitespace

       Most IMAP servers allow folder names to contain leading and trailing whitespace, such as "
       folder   ". Gmail does not. When copying folders to Gmail, Larch will automatically remove
       leading and trailing whitespace in folder names to prevent errors.

   Yahoo! mail quirks
       Yahoo! doesn't officially support IMAP access for general usage,  but  Larch  is  able  to
       connect  to  and by using a fairly well-known
       trick.  That said, as with anything tricky, there are caveats.

       No hierarchical folders

       Similar to Gmail, Yahoo! Mail doesn't allow hierarchical (nested) folders.  If you try  to
       copy  a  folder hierarchy to Yahoo!, it will work, but you'll end up with a set of folders
       named "folder"  and  "folder.subfolder"  rather  than  seeing  "subfolder"  as  an  actual
       subfolder of "folder".

       No custom flags

       Yahoo!  Mail IMAP doesn't support custom message flags, such as the tags and junk/not junk
       flags used by Thunderbird.  When transferring messages with custom flags to a Yahoo!  Mail
       IMAP account, the custom flags will be lost.

       Here there be dragons

       Larch's  support  for  Yahoo! Mail is very new and very lightly tested.  Given its newness
       and the fact that Yahoo!'s IMAP gateway isn't official,  there  are  likely  to  be  other
       quirks we're not yet aware of.  There's also no guarantee that Yahoo!  won't shut down its
       IMAP gateway, deprecate the trick Larch uses to connect, or  just  outright  block  Larch.
       Use at your own risk.


       Larch  uses Ruby's Net::IMAP standard library for all IMAP operations.  While Net::IMAP is
       generally a very solid library, it contains a bug that can cause a deadlock to occur if  a
       connection  drops  unexpectedly (either due to network issues or because the server closed
       the connection without warning) when the server has already begun sending a  response  and
       Net::IMAP  is  waiting  to  receive  more  data.  If this happens, Net::IMAP will continue
       waiting forever without passing control back to Larch, and you will need to manually  kill
       and restart Larch.

       Net::IMAP  in  Ruby 1.8 has also been known to hang when it can't parse a server response,
       either because the response itself is malformed or because of a bug in Net::IMAP's parser.
       This is rare, but it happens.  Unfortunately there's nothing Larch can do about this.


       Larch  is  run from the command line.  The following examples demonstrate how to run Larch
       using only command line arguments, but you may also place these options in a  config  file
       and run Larch without any arguments if you prefer.

       At  a  minimum,  you  must specify a source server and a destination server in the form of
       IMAP URIs:

              larch --from imap:// \
                    --to imap://

       Larch will prompt you for the necessary usernames and passwords, then sync the contents of
       the source's INBOX folder to the destination's INBOX folder.

       To connect using SSL, specify a URI beginning with imaps://:

              larch --from imaps:// \
                    --to imaps://

       If  you'd  like  to  sync  a  specific  folder  other  than  INBOX, specify the source and
       destination folders using --from-folder and --to-folder.  Folder names  containing  spaces
       must be enclosed in quotes:

              larch --from imaps:// \
                    --to imaps:// \
                    --from-folder 'Sent Mail' --to-folder 'Sent Mail'

       To  sync  all  folders, use the --all option (or --all-subscribed if you only want to sync
       subscribed folders):

              larch --from imaps:// \
                    --to imaps:// --all

       By default Larch will create folders on the  destination  server  if  they  don't  already
       exist. To prevent this, add the --no-create-folder option:

              larch --from imaps:// \
                    --to imaps:// --all \

       You  can  prevent  Larch  from  syncing one or more folders by using the --exclude option,
       which accepts multiple arguments:

              larch --from imaps:// \
                    --to imaps:// --all \
                    --exclude Spam Trash Drafts "[Gmail]/*"

       If your exclusion list is long or complex, create a text file with one  exclusion  pattern
       per line and tell Larch to load it with the --exclude-file option:

              larch --from imaps:// \
                    --to imaps:// --all \
                    --exclude-file exclude.txt

       The  wildcard  characters  *  and  ?  are supported in exclusion lists. You may also use a
       regular expression by enclosing a pattern in forward  slashes,  so  the  previous  example
       could be achieved with the pattern /(Spam|Trash|Drafts|\[Gmail]\/.*)/


       Adapted from the program's documentation for Debian by Martín Ferrari <>.