123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351 |
- offlineimap(1)
- ==============
- NAME
- ----
- offlineimap - Synchronize mailboxes and Maildirs
- SYNOPSIS
- --------
- [verse]
- 'offlineimap' (options)
- DESCRIPTION
- -----------
- Synchronize the accounts configured in the configuration file via IMAP. Each
- account has two sides. One of the side must be an IMAP server. The other side
- can either be a Maildir or another IMAP server.
- Python 3 is supported while still EXPERIMENTAL.
- OPTIONS
- -------
- -h::
- --help::
- Display summary of options.
- --version::
- Output version.
- -V::
- Output offlineimap version and additional imaplib2 information.
- --dry-run::
- Run in dry run mode.
- +
- Do not actually modify any store but check and print what synchronization
- actions would be taken if a sync would be performed. It will not precisely
- give the exact information what will happen. If e.g. we need to create a
- folder, it merely outputs 'Would create folder X', but not how many and which
- mails it would transfer.
- --info::
- Output information on the configured email repositories.
- +
- Useful for debugging and bug reporting. Use in conjunction with the `-a' option
- to limit the output to a single account. This mode will prevent any actual sync
- to occur and exits after it output the debug information.
- -1::
- Limit multithreading operations and run solely a single-thread sync.
- +
- This effectively sets the 'maxsyncaccounts' and all 'maxconnections' configuration
- file variables to '1' (the number).
- -P <directory>::
- Set OfflineIMAP into profile mode.
- +
- The program will create DIR (it must not already exist). As it runs, Python
- profiling information about each thread is logged into profiledir. Please
- note: This option is present for debugging and optimization only, and should
- NOT be used unless you have a specific reason to do so. It will significantly
- decrease program performance, may reduce reliability, and can generate huge
- amounts of data. This option implies the `-1' option.
- -a <account1[,account2[,...]]>::
- Overrides the accounts section in the config file.
- +
- Allows one to specify a particular account or set of accounts to sync without
- having to edit the config file.
- -c <path/to/configuration_file>::
- Specifies a configuration file to use.
- -d <type1[,type2[,...]]>::
- Enables debugging for OfflineIMAP.
- +
- This is useful if you are to track down a malfunction or figure out what is
- going on under the hood. This option requires one or more debugtypes,
- separated by commas. These define what exactly will be debugged, and so far
- include options: "imap", "thread", "maildir" or "ALL". The imap option will enable
- IMAP protocol stream and parsing debugging. Note that the output may contain
- passwords, so take care to remove that from the debugging output before
- sending it to anyone else. The maildir option will enable debugging for
- certain Maildir operations. The use of any debug option (unless "thread" is
- included), implies the single-thread option `-1'.
- -l <path/to/file.log>::
- Send logs to <file.log>.
- -s::
- Send logs to syslog.
- -f <folder1[,folder1[,...]]>::
- Only sync the specified folders.
- +
- The folder names are the untranslated foldernames of the remote repository.
- This command-line option overrides any 'folderfilter' and 'folderincludes'
- options in the configuration file.
- -k <[section:]option=value::
- Override any configuration file option.
- +
- If "section" is omitted, it defaults to "general". Any underscores in the
- section name are replaced with spaces: for instance, to override option
- "autorefresh" in the "[Account Personal]" section in the config file one would
- use `-k Account_Personal:autorefresh=30'. Repeat this option as much as
- necessary to redefine multiple options.
- -o::
- Run only once.
- +
- Ignore any autorefresh setting in the configuration file.
- -q::
- Run only quick synchronizations.
- +
- Ignore any flag updates on IMAP servers. If a flag on the remote IMAP changes,
- and we have the message locally, it will be left untouched in a quick run. This
- option is ignored if maxage is set.
- -u <UI>::
- Specifies an alternative user interface to use.
- +
- This overrides the default specified in the configuration file. The UI
- specified with `-u' will be forced to be used, even if checks determine that it
- is not usable. Possible interface choices are: quiet, basic, syslog, ttyui,
- blinkenlights, machineui.
- --delete-folder::
- Delete a folder on the remote repository.
- +
- Only one account must be specified/configured for this feature to work. The
- folder name must be provided in IMAP encoding with the remote separators (likely
- '/'). E.g.: "Remote/folder/name".
- --migrate-fmd5-using-nametrans::
- Migrate FMD5 hashes from versions prior to 6.3.5.
- +
- The way that FMD5 hashes are calculated was changed in version 6.3.5 (now using
- the nametrans folder name) introducing a regression which may lead to
- re-uploading all messages. Try and fix the above regression by calculating the
- correct FMD5 values and renaming the corresponding messages.
- CAUTION: Since the FMD5 part of the filename changes, this may lead to UID
- conflicts. Ensure to dispose a proper backup of both the cache and the Maildir
- before running this fix as well as verify the results using the `--dry-run'
- flag first.
- --mbnames-prune::
- Remove dangling entries for removed accounts or if mbnames is not enabled/used
- anymore.
- +
- Internally, offlineimap build intermediate mbnames files. They are added
- automatically when mbnames is enabled. However, disabling accounts so they are
- not synced anymore does not necessarily means they should be removed from the file
- built by mbnames. It is required to start offlineimap with this CLI option each
- time accounts are removed. When run, any account not in the 'accounts'
- configuration option are removed in the mbnames file.
- +
- It is possible to manually remove intermediate files in '<metadata>/mbnames/'.
- +
- Notice this option honors --dry-run.
- Synchronization Performance
- ---------------------------
- By default, we use fairly conservative settings that are safe for syncing but
- that might not be the best performing one. Once you got everything set up and
- running, you might want to look into speeding up your synchronization. Here
- are a couple of hints and tips on how to achieve this.
- 1. Synchronize more than one account.
- +
- By default we only use one connection to an IMAP server. Using 2 or even 3
- speeds things up considerably in most cases. In order to synchronize more than
- one account concurrently, consider starting one instance of offlineimap per
- account.
- +
- WARNING: enabling the 'maxsyncaccounts' and 'maxconnections' options is
- deprecated since it's known to have race conditions.
- 2. Use folderfilters.
- +
- The quickest sync is a sync that can ignore some folders. I sort my inbox into
- monthly folders, and ignore every folder that is more than 2-3 months old,
- this lets me only inspect a fraction of my Mails on every sync. If you haven't
- done this yet, do it :). See the 'folderfilter' section in 'offlineimap.conf'.
- 3. The sqlite cache.
- +
- OfflineImap caches the state of the synchronisation to e.g. be able to determine
- if a mail has been added or deleted on either side.
- +
- The historical status cache is a plain text file that writes out the complete
- file for each single new message (or even changed flag) to a temporary file. If
- you have plenty of files in a folder, this is a few hundred kilo to megabytes
- for each mail and is bound to make things slow. The latest default status cache
- is sqlite. This saves plenty of disk activity. The sqlite engine and the Python
- sqlite module must be installed. Enable the 'status_backend = plain' setting in
- 'offlineimap.conf' for legacy compatibility with versions prior to '6.4.0'.
- +
- If you switch the backend from plain to sqlite, you may want to delete the old
- cache directory in '<metadata>/Account-<account>/LocalStatus' manually (the
- sqlite cache stands in the 'LocalStatus-sqlite' folder).
- 4. Use quick sync.
- +
- A regular sync will request all flags and all UIDs of all mails in each folder
- which takes quite some time. A quick sync only compares the number of
- messages in a folder on the IMAP side (it will detect flag changes on the
- Maildir side of things though). A quick sync on my smallish account will take
- 7 seconds rather than 40 seconds. E.g. run a cron script that does a regular
- sync once a day, and does quick syncs `-q' only synchronizing the `-f INBOX'
- in between.
- 5. Turn off fsync.
- +
- In the '[general]' section you can set fsync to 'True' or 'False'. If you want to
- play 110% safe and wait for all operations to hit the disk before continuing,
- you can set this to True. If you set it to False, you lose some of that
- safety, trading it for speed.
- Security and SSL
- ----------------
- By default, OfflineIMAP will connect using any method that 'openssl' supports,
- that is SSLv2, SSLv3, or TLSv1.
- Do note that SSLv2 is notoriously insecure and deprecated. Unfortunately,
- python2 does not offer easy ways to disable SSLv2. It is recommended you test
- your setup and make sure that the mail server does not use an SSLv2
- connection. Use e.g. "openssl s_client -host mail.server -port 443" to find
- out the connection that is used by default.
- * Certificate checking
- +
- Unfortunately, by default we will not verify the certificate of an IMAP
- TLS/SSL server we connect to, so connecting by SSL is no guarantee against
- man-in-the-middle attacks. While verifying a server certificate checking the
- fingerprint is recommended. There is currently only one safe way
- to ensure that you connect to the correct server in an encrypted manner: you
- can specify a 'sslcacertfile' setting in your repository section of
- offlineimap.conf pointing to a file that contains (among others) a CA
- Certificate in PEM format which validating your server certificate. In this
- case, we will check that:
- 1. The server SSL certificate is validated by the CA Certificate.
- 2. The server host name matches the SSL certificate.
- 3. The server certificate is not past its expiration date.
- The FAQ has an entry on how to create your own certificate and CA certificate.
- * StartTLS
- +
- If you have not configured your account to connect via SSL anyway, OfflineImap
- will still attempt to set up an SSL connection via the STARTTLS function, in
- case the imap server supports it.
- +
- There is no certificate or fingerprint checking involved at all, when using
- STARTTLS (the underlying imaplib library does not support this yet). This
- means that you will be protected against passively listening eavesdroppers and
- they will not be able to see your password or email contents. However, this
- will not protect you from active attacks, such as Man-In-The-Middle attacks
- which cause you to connect to the wrong server and pretend to be your mail
- server.
- +
- *DO NOT RELY ON STARTTLS AS A SAFE CONNECTION GUARANTEEING THE AUTHENTICITY OF
- YOUR IMAP SERVER!*
- Unix Signals
- ------------
- OfflineImap listens to the unix signals SIGUSR1, SIGUSR2, SIGTERM, SIGINT,
- SIGHUP, SIGQUIT.
- * If sent a SIGUSR1 it will abort any current (or next future) sleep of all
- accounts that are configured to 'autorefresh'. In effect, this will trigger a
- full sync of all accounts to be performed as soon as possible.
- * If sent a SIGUSR2 or SIGABRT, it will stop 'autorefresh' mode for all
- accounts. That is, accounts will abort any current sleep and will exit after a
- currently running synchronization has finished. This signal can be used to
- gracefully exit out of a running offlineimap "daemon".
- * SIGTERM, SIGINT, SIGHUP are all treated to gracefully terminate as soon as
- possible. This means it will finish syncing the current folder in each
- account, close keep alive connections, remove locks on the accounts and exit.
- +
- It may take up to 10 seconds, if autorefresh option is used.
- +
- More than one SIGTERM will behave like SIGQUIT.
- * If sent SIGQUIT, dumps stack traces for all threads and tries to dump
- process core.
- Known Issues
- ------------
- include::./offlineimap.known_issues.txt[]
- Main authors
- ------------
- John Goerzen, Sebastian Spaetz, Eygene Ryabinkin, Nicolas Sebrecht.
- See Also
- --------
- offlineimapui(7), openssl(1), signal(7), sqlite3(1).
- http://www.offlineimap.org
|