diff --git a/manual.html b/manual.html deleted file mode 100644 index a52682c..0000000 --- a/manual.html +++ /dev/null @@ -1,1872 +0,0 @@ - -OfflineIMAP Manual

I. OfflineIMAP Manual

Table of Contents
offlineimap -- Powerful IMAP/Maildir synchronization - and reader support

offlineimap

Name

OfflineIMAP -- Powerful IMAP/Maildir synchronization - and reader support

Synopsis

offlineimap [-1] [-P profiledir] [-a accountlist] [-c configfile] [-d debugtype[,...]] [-l filename] [-o] [-u interface]

offlineimap -h | --help

Description

OfflineIMAP is a tool to simplify your e-mail - reading. With OfflineIMAP, you can read the same mailbox - from multiple computers. You get a current copy of your - messages on each computer, and changes you make one place will be - visible on all other systems. For instance, you can delete a message - on your home computer, and it will appear deleted on your work - computer as well. OfflineIMAP is also useful if you want to - use a mail reader that does not have IMAP support, has poor IMAP - support, or does not provide disconnected operation. -

OfflineIMAP is FAST; it synchronizes - my two accounts with over 50 folders in 3 seconds. Other - similar tools might take over a minute, and achieve a - less-reliable result. Some mail readers can take over 10 - minutes to do the same thing, and some don't even support it - at all. Unlike other mail tools, OfflineIMAP features a - multi-threaded synchronization algorithm that can dramatically - speed up performance in many situations by synchronizing - several different things simultaneously. -

OfflineIMAP is FLEXIBLE; you can - customize which folders are synced via regular expressions, - lists, or Python expressions; a versatile and comprehensive - configuration file is used to control behavior; two user - interfaces are built-in; fine-tuning of synchronization - performance is possible; internal or external automation is - supported; SSL and PREAUTH tunnels are both supported; offline - (or "unplugged") reading is supported; and esoteric IMAP - features are supported to ensure compatibility with the widest - variety of IMAP servers. -

OfflineIMAP is SAFE; it uses an - algorithm designed to prevent mail loss at all costs. Because - of the design of this algorithm, even programming errors - should not result in loss of mail. I am so confident in the - algorithm that I use my own personal and work accounts for - testing of OfflineIMAP pre-release, development, and beta - releases. Of course, legally speaking, OfflineIMAP comes - with no warranty, so I am not responsible if this turns out - to be wrong. -

Method of Operation

OfflineIMAP traditionally - operates by maintaining a hierarchy of - mail folders in Maildir format locally. Your own mail - reader will read mail from this tree, and need never know - that the mail comes from IMAP. OfflineIMAP will detect - changes to the mail folders on your IMAP server and your own - computer and bi-directionally synchronize them, copying, - marking, and deleting messages as necessary. -

With OfflineIMAP 4.0, a powerful new ability has been - introduced -- the program can now synchronize two IMAP - servers with each other, with no need to have a Maildir - layer in-between. Many people use this if they use a mail - reader on their local machine that does not support - Maildirs. People may install an IMAP server on their local - machine, and point both OfflineIMAP and their mail reader - of choice at it. This is often preferable to the mail - reader's own IMAP support since OfflineIMAP supports many - features (offline reading, for one) that most IMAP-aware - readers don't. However, this feature is not as time-tested - as traditional syncing, so my advice is to stick with normal - methods of operation for the time being. -

Quick Start

If you have already installed OfflineIMAP system-wide, - or your system administrator has done that for you, your task - for setting up OfflineIMAP for the first time is quite - simple. You just need to set up your configuration file, make - your folder directory, and run it! -

You can quickly set up your configuration file. The distribution - includes a file offlineimap.conf.minimal - (Debian users - may find this at - /usr/share/doc/offlineimap/examples/offlineimap.conf.minimal) that is a basic example of setting of OfflineIMAP. You can - simply copy this file into your home directory and name it - .offlineimaprc (note the leading period). A - command such as cp offlineimap.conf.minimal ~/.offlineimaprc will do it. Or, if you prefer, you can just copy this text to - ~/.offlineimaprc: -

[general]
-accounts = Test
-
-[Account Test]
-localrepository = Local
-remoterepository = Remote
-
-[Repository Local]
-type = Maildir
-localfolders = ~/Test
-
-[Repository Remote]
-type = IMAP
-remotehost = examplehost
-remoteuser = jgoerzen

Now, edit the ~/.offlineimaprc file with - your favorite editor. All you have to do is specify a directory - for your folders to be in (on the localfolders - line), the host name of your IMAP server (on the - remotehost line), and your login name on - the remote (on the remoteuser line). That's - it!

To run OfflineIMAP, you just have to say - offlineimap -- it will fire up, ask you for - a login password if necessary, synchronize your folders, and exit. - See? You can just throw away the rest of this finely-crafted, - perfectly-honed manual! Of course, if you want to see how you can - make OfflineIMAP FIVE TIMES FASTER FOR JUST $19.95 (err, well, - $0), you have to read on! -

Installation

If you are reading this document via the "man" command, it is - likely - that you have no installation tasks to perform; your system - administrator has already installed it. If you need to install it - yourself, you have three options: a system-wide installation with - Debian, system-wide installation with other systems, and a single-user - installation. You can download the latest version of OfflineIMAP from - the OfflineIMAP - website. -

Prerequisites

In order to use OfflineIMAP, you need to have these conditions - satisfied: -

  • Your mail server must support IMAP. Most Internet Service - Providers - and corporate networks do, and most operating systems - have an IMAP - implementation readily available. -

  • You must have Python version 2.2.1 or above installed. - If you are - running on Debian GNU/Linux, this requirement will automatically be - taken care of for you. If you do not have Python already, check with - your system administrator or operating system vendor; or, download it from - the Python website. - If you intend to use the Tk interface, you must have Tkinter - (python-tk) installed. If you intend to use the SSL interface, your - Python must have been built with SSL support. -

  • Have a mail reader that supports the Maildir mailbox - format. Most modern mail readers have this support - built-in, so you can choose from a wide variety of mail - servers. This format is also known as the "qmail" - format, so any mail reader compatible with it will work - with OfflineIMAP. If you do not have a mail reader - that supports Maildir, you can often install a local - IMAP server and point both OfflineIMAP and your mail - reader at it. -

System-Wide Installation, Debian

If you are tracking Debian unstable, you may install - OfflineIMAP by simply running the following command as root: -

apt-get install offlineimap -

If you are not tracking Debian unstable, download the Debian .deb - package from the OfflineIMAP website - and then run dpkg -i to install the downloaded - package. Then, skip to Configuration below. You will type offlineimap to - invoke the program. -

System-Wide Installation, Other

Download the tar.gz version of the package from the - website. - Then run - these commands, making sure that you are the "root" user first: -

tar -zxvf offlineimap_x.y.z.tar.gz
-cd offlineimap-x.y.z
-python2.2 setup.py install

On some systems, you will need to use - python instead of python2.2. - Next, proceed to Configuration below. You will type offlineimap to - invoke the program. -

Single-Account Installation

Download the tar.gz version of the package from the - website. - Then run these commands: -

tar -zxvf offlineimap_x.y.z.tar.gz
-cd offlineimap-x.y.z

When you want to run OfflineIMAP, you will issue the - cd command as above and then type - ./offlineimap.py; there is no installation - step necessary. -

Configuration

OfflineIMAP is regulated by a configuration file that is normally - stored in ~/.offlineimaprc. OfflineIMAP - ships with a file named offlineimap.conf - that you should copy to that location and then edit. This file is - vital to proper operation of the system; it sets everything you need - to run OfflineIMAP. Full documentation for the configuration file - is included within the sample file. -

OfflineIMAP also ships a file named - offlineimap.conf.minimal that you can also try. - It's useful if you want to get started with - the most basic feature set, and you can read about other features - later with offlineimap.conf. -

Options

Most configuration is done via the configuration file. Nevertheless, - there are a few command-line options that you may set for - OfflineIMAP. -

-1

Disable most multithreading operations and use - solely a single-connection - sync. This effectively sets the - maxsyncaccounts - and all maxconnections configuration file - variables to 1. -

-P profiledir

Sets OfflineIMAP into profile mode. The program - will create profiledir - (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 - slow program performance, may reduce reliability, and can generate - huge amounts of data. You must use the -1 option when - you use -P. -

-a accountlist

Overrides the accounts option - in the general section of the configuration - file. You might use this to exclude certain accounts, or to sync - some accounts that you normally prefer not to. Separate the - accounts by commas, and use no embedded spaces. -

-c configfile

Specifies a configuration file to use in lieu of - the default, ~/.offlineimaprc. -

-d debugtype[,...]

Enables debugging for OfflineIMAP. This is useful if - you are trying to track down a malfunction or figure out what is going - on under the hood. I suggest that you use this with - -1 to make the results more sensible.

-d requires one or more debugtypes, - separated by commas. These define what exactly will be - debugged, and include three options: imap, - maildir, and thread. - 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. And thread - will debug the threading model. -

-l - filename

Enables logging to filename. This will log everything - that goes to the screen to the specified file. - Additionally, if any debugging is specified with -d, - then debug messages will not go to the screen, but - instead to the logfile only.

-o

Run only once, ignoring all - autorefresh settings in the configuration - file.

-h, --help

Show summary of options.

-u interface

Specifies an alternative user interface module - to use. This overrides the default specified in the - configuration file. The pre-defined options are listed in - the User Interfaces section.

User Interfaces

OfflineIMAP has a pluggable user interface system that lets you choose how the - program communicates information to you. There are two graphical - interfaces, two terminal interfaces, and two noninteractive interfaces - suitable for scripting or logging purposes. The - ui option in the configuration file specifies - user interface preferences. The -u command-line - option can override the configuration file setting. The available - values for the configuration file or command-line are described - in this section.

Tk.Blinkenlights

Tk.Blinkenlights is an interface designed to be sleek, fun to watch, and - informative of the overall picture of what OfflineIMAP - is doing. I consider it to be the best general-purpose interface in - OfflineIMAP. -

Tk.Blinkenlights contains, by default, a small window with a row of - LEDs, a small log, and a row of command buttons. - The total size of the window is - very small, so it uses little desktop space, yet it is quite - functional. The optional, toggleable, log shows more - detail about what is happening and is color-coded to match the color - of the lights. -

Tk.Blinkenlights is the only user interface that has configurable - parameters; see the example offlineimap.conf - for more details. -

Each light in the Blinkenlights interface represents a thread - of execution -- that is, a particular task that OfflineIMAP - is performing right now. The colors indicate what task - the particular thread is performing, and are as follows: -

Black

indicates that this light's thread has terminated; it will light up - again later when new threads start up. So, black indicates no - activity. -

Red (Meaning 1)

is the color of the main program's thread, which basically does - nothing but monitor the others. It might remind you of HAL 9000 in - [2001]. -

Gray

indicates that the thread is establishing a new connection to the IMAP - server. -

Purple

is the color of an account synchronization thread that is monitoring - the progress of the folders in that account (not generating any I/O). -

Cyan

indicates that the thread is syncing a folder. -

Green

means that a folder's message list is being loaded. -

Blue

is the color of a message synchronization controller thread. -

Orange

indicates that an actual message is being copied. - (We use fuchsia for fake messages.) -

Red (meaning 2)

indicates that a message is being deleted. -

Yellow / bright orange

indicates that message flags are being added. -

Pink / bright red

indicates that message flags are being removed. -

Red / Black Flashing

corresponds to the countdown timer that runs between - synchronizations. -

The name of this interfaces derives from a bit of computer - history. Eric Raymond's [Jargon File] defines - blinkenlights, in part, as: -

Front-panel diagnostic - lights on a computer, esp. a dinosaur. Now that dinosaurs are rare, - this term usually refers to status lights on a modem, network hub, or - the like. -

This term derives from the last word of the famous blackletter-Gothic - sign in mangled pseudo-German that once graced about half the computer - rooms in the English-speaking world. One version ran in its entirety as - follows: -

ACHTUNG! ALLES LOOKENSPEEPERS! -

Das computermachine ist nicht fuer gefingerpoken und mittengrabben. - Ist easy schnappen der springenwerk, blowenfusen und poppencorken - mit spitzensparken. Ist nicht fuer gewerken bei das dumpkopfen. - Das rubbernecken sichtseeren keepen das cotten-pickenen hans in das - pockets muss; relaxen und watchen das blinkenlichten. -

Curses.Blinkenlights

Curses.Blinkenlights is an interface very similar to Tk.Blinkenlights, - but is designed to be run in a console window (an xterm, Linux virtual - terminal, etc.) Since it doesn't have access to graphics, it isn't - quite as pretty, but it still gets the job done. -

Please see the Tk.Blinkenlights section above for more - information about the colors used in this interface. -

Tk.VerboseUI

Tk.VerboseUI (formerly known as Tk.TkUI) is a graphical interface - that presents a variable-sized window. In the window, each - currently-executing thread has a section where its name and current - status are displayed. This interface is best suited to people running - on slower connections, as you get a lot of detail, but for fast - connections, the detail may go by too quickly to be useful. People - with fast connections may wish to use Tk.Blinkenlights instead. -

TTY.TTYUI

TTY.TTYUI interface is for people running in basic, non-color terminals. It - prints out basic status messages and is generally friendly to use on a console - or xterm. -

Noninteractive.Basic

Noninteractive.Basic is designed for situations in which OfflineIMAP - will be run non-attended and the status of its execution will be - logged. You might use it, for instance, to have the system run - automatically and - e-mail you the results of the synchronization. This user interface - is not capable of reading a password from the keyboard; account - passwords must be specified using one of the configuration file options. -

Noninteractive.Quiet

Noninteractive.Quiet is designed for non-attended running in situations - where normal status messages are not desired. It will output nothing - except errors and serious warnings. Like Noninteractive.Basic, - this user interface - is not capable of reading a password from the keyboard; account - passwords must be specified using one of the configuration file options. -

Examples

Here are some example configurations for various situations. - Please e-mail any other examples you have that may be useful to - me. -

Multiple Accounts with Mutt

This example shows you how to set up OfflineIMAP to - synchronize multiple accounts with the mutt mail reader. -

Start by creating a directory to hold your folders by running - mkdir ~/Mail. Then, in your - ~/.offlineimaprc, specify: -

accounts = Personal, Work

Make sure that you have both an - [Account Personal] - and an [Account Work] section. The - local repository for each account must have different - localfolder path names. - Also, make sure - to enable [mbnames]. -

In each local repository section, write something like this: -

localfolders = ~/Mail/Personal

Finally, add these lines to your ~/.muttrc: -

source ~/path-to-mbnames-muttrc-mailboxes
-folder-hook Personal set from="youremail@personal.com"
-folder-hook Work set from="youremail@work.com"
-set mbox_type=Maildir
-set folder=$HOME/Mail
-spoolfile=+Personal/INBOX

That's it! -

UW-IMAPD and References

Some users with a UW-IMAPD server need to use OfflineIMAP's - "reference" feature to get at their mailboxes, specifying a reference - of "~/Mail" or "#mh/" depending on the configuration. The below - configuration from (originally from docwhat@gerf.org) - shows using a reference of Mail, a nametrans - that strips - the leading Mail/ off incoming folder names, and a - folderfilter that - limits the folders synced to just three. -

[Account Gerf]
-localrepository = GerfLocal
-remoterepository = GerfRemote
-
-[Repository GerfLocal]
-type = Maildir
-localfolders = ~/Mail
-
-[Repository GerfRemote]
-type = IMAP
-remotehost = gerf.org
-ssl = yes
-remoteuser = docwhat
-reference = Mail
-# Trims off the preceeding Mail on all the folder names.
-nametrans = lambda foldername: \
-            re.sub('^Mail/', '', foldername)
-# Yeah, you have to mention the Mail dir, even though it
-# would seem intuitive that reference would trim it.
-folderfilter = lambda foldername: foldername in [
-      'Mail/INBOX',
-      'Mail/list/zaurus-general',
-      'Mail/list/zaurus-dev',
-      ]
-maxconnections = 1
-holdconnectionopen = no

pythonfile Configuration File Option

You can have OfflineIMAP - load up a Python file before evaluating the - configuration file options that are Python expressions. This example - is based on one supplied by Tommi Virtanen for this feature. -

In ~/.offlineimap.rc, he adds these options: -

[general]
-pythonfile=~/.offlineimap.py
-[Repository foo]
-foldersort=mycmp

Then, the ~/.offlineimap.py file will - contain: -

prioritized = ['INBOX', 'personal', 'announce', 'list']
-
-def mycmp(x, y):
-   for prefix in prioritized:
-       xsw = x.startswith(prefix)
-       ysw = y.startswith(prefix)
-       if xsw and ysw:
-          return cmp(x, y)
-       elif xsw:
-          return -1
-       elif ysw:
-          return +1
-   return cmp(x, y)
-
-def test_mycmp():
-   import os, os.path
-   folders=os.listdir(os.path.expanduser('~/data/mail/tv@hq.yok.utu.fi'))
-   folders.sort(mycmp)
-   print folders

This code snippet illustrates how the foldersort - option can be customized with a Python function from the - pythonfile to always synchronize certain - folders first. -

Errors

If you get one of some frequently-encountered or confusing errors, - please check this section. -

UID validity problem for folder

IMAP servers use a unique ID (UID) to refer to a specific message. - This number is guaranteed to be unique to a particular message - forever. - No other message in the same folder will ever get the same - UID. UIDs are an integral part of OfflineIMAP's synchronization - scheme; they are used to match up messages on your computer to - messages on the server. -

Sometimes, the UIDs on the server might get reset. Usually this will - happen if you delete and then recreate a folder. When you create a - folder, the server will often start the UID back from 1. But - OfflineIMAP might still have the UIDs from the previous folder by the - same name stored. OfflineIMAP will detect this condition and skip the - folder. This is GOOD, because it prevents data loss. -

You can fix it by removing your local folder and cache data. For - instance, if your folders are under ~/Folders - and the folder with the problem is INBOX, you'd type this: -

rm -r ~/Folders/INBOX
-rm -r ~/.offlineimap/Account-AccountName
-rm -r ~/.offlineimap/Repository-RepositoryName

(Of course, replace AccountName and RepositoryName - with the names as specified - in ~/.offlineimaprc). -

Next time you run OfflineIMAP, it will re-download - the folder with the - new UIDs. Note that the procedure specified above will lose any local - changes made to the folder. -

Some IMAP servers are broken and do not support UIDs properly. If you - continue to get this error for all your folders even after performing - the above procedure, it is likely that your IMAP server falls into - this category. OfflineIMAP is incompatible with such servers. - Using OfflineIMAP with them will not destroy any mail, but at the same time, - it will not actually synchronize it either. (OfflineIMAP will detect - this condition and abort prior to synchronization.) -

This question comes up frequently on the - OfflineIMAP - mailing list. You can find a - detailed - discussion of the problem there. -

Conforming To

Notes

Deleting Local Folders

OfflineIMAP does a two-way synchronization. That is, if you - make a change to the mail on the server, it will be propagated to your - local copy, and vise-versa. Some people might think that it would be - wise to just delete all their local mail folders periodically. If you - do this with OfflineIMAP, remember to also remove your local status - cache (~/.offlineimap by default). Otherwise, OfflineIMAP will take - this as an intentional deletion of many messages and will interpret - your action as requesting them to be deleted from the server as well. - (If you don't understand this, don't worry; you probably won't - encounter this situation) -

Multiple Instances

OfflineIMAP is not designed to have several instances (for instance, a cron job and an interactive invocation) run over the same - mailbox simultaneously. It will perform a check on startup and - abort if another OfflineIMAP is already running. If you need - to schedule synchronizations, please use the - autorefresh settings rather than cron. - Alternatively, you can set a separate metadata - directory for each instance. -

Copying Messages Between Folders

Normally, when you copy a message between folders or add a new message - to a folder locally, OfflineIMAP - will just do the right thing. However, sometimes this can be tricky - -- if your IMAP server does not provide the SEARCH command, or does - not return something useful, OfflineIMAP - cannot determine the new UID of the message. So, in these rare - instances, OfflineIMAP will upload the message to the IMAP server and - delete it from your local folder. Then, on your next sync, the - message will be re-downloaded with the proper UID. - OfflineIMAP makes sure that the message was properly uploaded before deleting it, - so there should be no risk of data loss. -

Mailing List

There is an OfflineIMAP mailing list available. - To subscribe, send the text "Subscribe" in the subject of a mail to - offlineimap-request@complete.org. To post, send the message to - offlineimap@complete.org. Archives are available at - http://lists.complete.org/offlineimap@complete.org/. -

Bugs

Reports of bugs should be reported online at the - OfflineIMAP homepage. - Debian users are encouraged to instead use the - Debian - bug-tracking system. -

Upgrading to 4.0

If you are upgrading from a version of OfflineIMAP prior to - 3.99.12, you will find that you will get errors when - OfflineIMAP starts up (relating to ConfigParser or - AccountHashGenerator) and the - configuration file. This is because the config file format - had to change to accommodate new features in 4.0. Fortunately, - it's not difficult to adjust it to suit. -

First thing you need to do is stop any running OfflineIMAP - instance, making sure first that it's synced all your mail. - Then, modify your - ~/.offlineimaprc file. You'll need to - split up each account section (make sure that it now starts - with "Account ") into two Repository sections (one for the - local side and another for the remote side.) See the files - offlineimap.conf.minimal and - offlineimap.conf in the distribution if - you need more assistance. -

OfflineIMAP's status directory area has also changed. - Therefore, you should delete everything in ~/.offlineimap as - well as your local mail folders. -

When you start up OfflineIMAP 4.0, it will re-download all - your mail from the server and then you can continue using it - like normal. -

Copyright

OfflineIMAP, and this manual, are Copyright © 2002 - 2006 John Goerzen.

This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. -

This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. -

You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

imaplib.py comes from the Python dev tree and is licensed under - the GPL-compatible PSF license as stated in the file - COPYRIGHT in the OfflineIMAP - distribution. -

Author

OfflineIMAP, its libraries, documentation, and all included files, except where - noted, was written by John Goerzen <jgoerzen@complete.org> and - copyright is held as stated in the COPYRIGHT section. -

OfflineIMAP may be downloaded, and information found, from its - homepage. -

See Also

mutt(1), - python(1) -

History

Detailed history may be found in the file ChangeLog in the - OfflineIMAP distribution. Feature and bug histories may be - found in the file debian/changelog which, despite its name, is - not really Debian-specific. This section provides a large - overview. -

Development on OfflineIMAP began on June 18, 2002. Version - 1.0.0 was released three days later on June 21, 2002. Point - releases followed, including speed optimizations and some - compatibility fixes. -

Version 2.0.0 was released on July 3, 2002, and - represented the first time the synchronization became - multithreaded and, to the best of my knowledge, the first - multithreaded IMAP syncrhonizing application in existance. - The last 2.0.x release, 2.0.8, was made on July 9. -

Version 3.0.0 was released on July 11, 2002, and introduced - modular user interfaces and the first GUI interface for - OfflineIMAP. This manual also was introduced with 3.0.0, - along with many command-line options. Version 3.1.0 was - released on July 21, adding the Noninteractive user - interfaces, profiling support, and several bugfixes. 3.2.0 - was released on July 24, adding support for the Blinkenlights - GUI interface. OfflineIMAP entered maintenance mode for - awhile, as it had reached a feature-complete milestone in my - mind. -

The 3.99.x branch began in on October 7, 2002, to begin work - for 4.0. The Curses.Blinkenlights interface was added in - 3.99.6, and many architectural changes were made. -

4.0.0 was released on July 18, 2003, including the ability to - synchronize directly between two IMAP servers, the first - re-architecting of the configuration file to refine the - notion of an account, and the new Curses interface. -

\ No newline at end of file diff --git a/manual.pdf b/manual.pdf deleted file mode 100644 index 6af564c..0000000 Binary files a/manual.pdf and /dev/null differ diff --git a/manual.txt b/manual.txt deleted file mode 100644 index a72e8cd..0000000 --- a/manual.txt +++ /dev/null @@ -1,691 +0,0 @@ -OFFLINEIMAP(1) OfflineIMAP Manual OFFLINEIMAP(1) - - - -NAME - OfflineIMAP - Powerful IMAP/Maildir synchronization and reader support - -SYNOPSIS - offlineimap [ -1 ] [ -P profiledir ] [ -a accountlist ] [ -c configfile - ] [ -d debugtype[,...] ] [ -l filename ] [ -o ] [ -u interface ] - - - offlineimap -h | --help - - -DESCRIPTION - OfflineIMAP is a tool to simplify your e-mail reading. With - OfflineIMAP, you can read the same mailbox from multiple computers. - You get a current copy of your messages on each computer, and changes - you make one place will be visible on all other systems. For instance, - you can delete a message on your home computer, and it will appear - deleted on your work computer as well. OfflineIMAP is also useful if - you want to use a mail reader that does not have IMAP support, has poor - IMAP support, or does not provide disconnected operation. - - OfflineIMAP is FAST; it synchronizes my two accounts with over 50 fold- - ers in 3 seconds. Other similar tools might take over a minute, and - achieve a less-reliable result. Some mail readers can take over 10 - minutes to do the same thing, and some don't even support it at all. - Unlike other mail tools, OfflineIMAP features a multi-threaded synchro- - nization algorithm that can dramatically speed up performance in many - situations by synchronizing several different things simultaneously. - - OfflineIMAP is FLEXIBLE; you can customize which folders are synced via - regular expressions, lists, or Python expressions; a versatile and com- - prehensive configuration file is used to control behavior; two user - interfaces are built-in; fine-tuning of synchronization performance is - possible; internal or external automation is supported; SSL and PREAUTH - tunnels are both supported; offline (or "unplugged") reading is sup- - ported; and esoteric IMAP features are supported to ensure compatibil- - ity with the widest variety of IMAP servers. - - OfflineIMAP is SAFE; it uses an algorithm designed to prevent mail loss - at all costs. Because of the design of this algorithm, even program- - ming errors should not result in loss of mail. I am so confident in - the algorithm that I use my own personal and work accounts for testing - of OfflineIMAP pre-release, development, and beta releases. Of course, - legally speaking, OfflineIMAP comes with no warranty, so I am not - responsible if this turns out to be wrong. - - METHOD OF OPERATION - OfflineIMAP traditionally operates by maintaining a hierarchy of mail - folders in Maildir format locally. Your own mail reader will read mail - from this tree, and need never know that the mail comes from IMAP. - OfflineIMAP will detect changes to the mail folders on your IMAP server - and your own computer and bi-directionally synchronize them, copying, - marking, and deleting messages as necessary. - - With OfflineIMAP 4.0, a powerful new ability has been introduced -- the - program can now synchronize two IMAP servers with each other, with no - need to have a Maildir layer in-between. Many people use this if they - use a mail reader on their local machine that does not support - Maildirs. People may install an IMAP server on their local machine, - and point both OfflineIMAP and their mail reader of choice at it. This - is often preferable to the mail reader's own IMAP support since - OfflineIMAP supports many features (offline reading, for one) that most - IMAP-aware readers don't. However, this feature is not as time-tested - as traditional syncing, so my advice is to stick with normal methods of - operation for the time being. - -QUICK START - If you have already installed OfflineIMAP system-wide, or your system - administrator has done that for you, your task for setting up - OfflineIMAP for the first time is quite simple. You just need to set - up your configuration file, make your folder directory, and run it! - - You can quickly set up your configuration file. The distribution - includes a file offlineimap.conf.minimal (Debian users may find this at - /usr/share/doc/offlineimap/examples/offlineimap.conf.minimal) that is a - basic example of setting of OfflineIMAP. You can simply copy this file - into your home directory and name it .offlineimaprc (note the leading - period). A command such as cp offlineimap.conf.minimal - ~/.offlineimaprc will do it. Or, if you prefer, you can just copy this - text to ~/.offlineimaprc: - - [general] - accounts = Test - - [Account Test] - localrepository = Local - remoterepository = Remote - - [Repository Local] - type = Maildir - localfolders = ~/Test - - [Repository Remote] - type = IMAP - remotehost = examplehost - remoteuser = jgoerzen - - Now, edit the ~/.offlineimaprc file with your favorite editor. All you - have to do is specify a directory for your folders to be in (on the - localfolders line), the host name of your IMAP server (on the remote- - host line), and your login name on the remote (on the remoteuser line). - That's it! - - To run OfflineIMAP, you just have to say offlineimap -- it will fire - up, ask you for a login password if necessary, synchronize your fold- - ers, and exit. See? You can just throw away the rest of this finely- - crafted, perfectly-honed manual! Of course, if you want to see how you - can make OfflineIMAP FIVE TIMES FASTER FOR JUST $19.95 (err, well, $0), - you have to read on! - -INSTALLATION - If you are reading this document via the "man" command, it is likely - that you have no installation tasks to perform; your system administra- - tor has already installed it. If you need to install it yourself, you - have three options: a system-wide installation with Debian, system-wide - installation with other systems, and a single-user installation. You - can download the latest version of OfflineIMAP from the OfflineIMAP - website . - - PREREQUISITES - In order to use OfflineIMAP, you need to have these conditions satis- - fied: - - o Your mail server must support IMAP. Most Internet Service Providers - and corporate networks do, and most operating systems have an IMAP - implementation readily available. - - o You must have Python version 2.2.1 or above installed. If you are - running on Debian GNU/Linux, this requirement will automatically be - taken care of for you. If you do not have Python already, check with - your system administrator or operating system vendor; or, download it - from the Python website . If you intend - to use the Tk interface, you must have Tkinter (python-tk) installed. - If you intend to use the SSL interface, your Python must have been - built with SSL support. - - o Have a mail reader that supports the Maildir mailbox format. Most - modern mail readers have this support built-in, so you can choose - from a wide variety of mail servers. This format is also known as - the "qmail" format, so any mail reader compatible with it will work - with OfflineIMAP. If you do not have a mail reader that supports - Maildir, you can often install a local IMAP server and point both - OfflineIMAP and your mail reader at it. - - SYSTEM-WIDE INSTALLATION, DEBIAN - If you are tracking Debian unstable, you may install OfflineIMAP by - simply running the following command as root: - - apt-get install offlineimap - - If you are not tracking Debian unstable, download the Debian .deb pack- - age from the OfflineIMAP website and then run dpkg -i to install the downloaded - package. Then, skip to [XRef to CONFIGURATION] below. You will type - offlineimap to invoke the program. - - SYSTEM-WIDE INSTALLATION, OTHER - Download the tar.gz version of the package from the website - . Then run these com- - mands, making sure that you are the "root" user first: - - tar -zxvf offlineimap_x.y.z.tar.gz - cd offlineimap-x.y.z - python2.2 setup.py install - - On some systems, you will need to use python instead of python2.2. - Next, proceed to [XRef to CONFIGURATION] below. You will type - offlineimap to invoke the program. - - SINGLE-ACCOUNT INSTALLATION - Download the tar.gz version of the package from the website - . Then run these com- - mands: - - tar -zxvf offlineimap_x.y.z.tar.gz - cd offlineimap-x.y.z - - When you want to run OfflineIMAP, you will issue the cd command as - above and then type ./offlineimap.py; there is no installation step - necessary. - -CONFIGURATION - OfflineIMAP is regulated by a configuration file that is normally - stored in ~/.offlineimaprc. OfflineIMAP ships with a file named - offlineimap.conf that you should copy to that location and then edit. - This file is vital to proper operation of the system; it sets every- - thing you need to run OfflineIMAP. Full documentation for the configu- - ration file is included within the sample file. - - OfflineIMAP also ships a file named offlineimap.conf.minimal that you - can also try. It's useful if you want to get started with the most - basic feature set, and you can read about other features later with - offlineimap.conf. - -OPTIONS - Most configuration is done via the configuration file. Nevertheless, - there are a few command-line options that you may set for OfflineIMAP. - - -1 Disable most multithreading operations and use solely a single- - connection sync. This effectively sets the maxsyncaccounts and - all maxconnections configuration file variables to 1. - - -P profiledir - Sets OfflineIMAP into profile mode. The program will create - profiledir (it must not already exist). As it runs, Python pro- - filing information about each thread is logged into profiledir. - Please note: This option is present for debugging and optimiza- - tion only, and should NOT be used unless you have a specific - reason to do so. It will significantly slow program perfor- - mance, may reduce reliability, and can generate huge amounts of - data. You must use the -1 option when you use -P. - - -a accountlist - Overrides the accounts option in the general section of the con- - figuration file. You might use this to exclude certain - accounts, or to sync some accounts that you normally prefer not - to. Separate the accounts by commas, and use no embedded - spaces. - - -c configfile - Specifies a configuration file to use in lieu of the default, - ~/.offlineimaprc. - - -d debugtype[,...] - Enables debugging for OfflineIMAP. This is useful if you are - trying to track down a malfunction or figure out what is going - on under the hood. I suggest that you use this with -1 to make - the results more sensible. - - -d requires one or more debugtypes, separated by commas. These - define what exactly will be debugged, and include three options: - imap, maildir, and thread. 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 debug- - ging output before sending it to anyone else. The maildir - option will enable debugging for certain Maildir operations. - And thread will debug the threading model. - - -l filename - Enables logging to filename. This will log everything that goes - to the screen to the specified file. Additionally, if any - debugging is specified with -d, then debug messages will not go - to the screen, but instead to the logfile only. - - -o Run only once, ignoring all autorefresh settings in the configu- - ration file. - - -h - - --help Show summary of options. - - -u interface - Specifies an alternative user interface module to use. This - overrides the default specified in the configuration file. The - pre-defined options are listed in the User Interfaces section. - -USER INTERFACES - OfflineIMAP has a pluggable user interface system that lets you choose - how the program communicates information to you. There are two graphi- - cal interfaces, two terminal interfaces, and two noninteractive inter- - faces suitable for scripting or logging purposes. The ui option in the - configuration file specifies user interface preferences. The -u com- - mand-line option can override the configuration file setting. The - available values for the configuration file or command-line are - described in this section. - - TK.BLINKENLIGHTS - Tk.Blinkenlights is an interface designed to be sleek, fun to watch, - and informative of the overall picture of what OfflineIMAP is doing. I - consider it to be the best general-purpose interface in OfflineIMAP. - - Tk.Blinkenlights contains, by default, a small window with a row of - LEDs, a small log, and a row of command buttons. The total size of the - window is very small, so it uses little desktop space, yet it is quite - functional. The optional, toggleable, log shows more detail about what - is happening and is color-coded to match the color of the lights. - - Tk.Blinkenlights is the only user interface that has configurable - parameters; see the example offlineimap.conf for more details. - - Each light in the Blinkenlights interface represents a thread of execu- - tion -- that is, a particular task that OfflineIMAP is performing right - now. The colors indicate what task the particular thread is perform- - ing, and are as follows: - - Black indicates that this light's thread has terminated; it will light - up again later when new threads start up. So, black indicates - no activity. - - Red (Meaning 1) - is the color of the main program's thread, which basically does - nothing but monitor the others. It might remind you of HAL 9000 - in 2001. - - Gray indicates that the thread is establishing a new connection to - the IMAP server. - - Purple is the color of an account synchronization thread that is moni- - toring the progress of the folders in that account (not generat- - ing any I/O). - - Cyan indicates that the thread is syncing a folder. - - Green means that a folder's message list is being loaded. - - Blue is the color of a message synchronization controller thread. - - Orange indicates that an actual message is being copied. (We use fuch- - sia for fake messages.) - - Red (meaning 2) - indicates that a message is being deleted. - - Yellow / bright orange - indicates that message flags are being added. - - Pink / bright red - indicates that message flags are being removed. - - Red / Black Flashing - corresponds to the countdown timer that runs between synchro- - nizations. - - The name of this interfaces derives from a bit of computer history. - Eric Raymond's Jargon File defines blinkenlights, in part, as: - - - Front-panel diagnostic lights on a computer, esp. a dinosaur. - Now that dinosaurs are rare, this term usually refers to status - lights on a modem, network hub, or the like. - - This term derives from the last word of the famous blackletter- - Gothic sign in mangled pseudo-German that once graced about half - the computer rooms in the English-speaking world. One version - ran in its entirety as follows: - - ACHTUNG! ALLES LOOKENSPEEPERS! - - Das computermachine ist nicht fuer gefingerpoken und mitten- - grabben. Ist easy schnappen der springenwerk, blowenfusen und - poppencorken mit spitzensparken. Ist nicht fuer gewerken bei - das dumpkopfen. Das rubbernecken sichtseeren keepen das cotten- - pickenen hans in das pockets muss; relaxen und watchen das - blinkenlichten. - - CURSES.BLINKENLIGHTS - Curses.Blinkenlights is an interface very similar to Tk.Blinkenlights, - but is designed to be run in a console window (an xterm, Linux virtual - terminal, etc.) Since it doesn't have access to graphics, it isn't - quite as pretty, but it still gets the job done. - - Please see the Tk.Blinkenlights section above for more information - about the colors used in this interface. - - TK.VERBOSEUI - Tk.VerboseUI (formerly known as Tk.TkUI) is a graphical interface that - presents a variable-sized window. In the window, each currently-exe- - cuting thread has a section where its name and current status are dis- - played. This interface is best suited to people running on slower con- - nections, as you get a lot of detail, but for fast connections, the - detail may go by too quickly to be useful. People with fast connec- - tions may wish to use Tk.Blinkenlights instead. - - TTY.TTYUI - TTY.TTYUI interface is for people running in basic, non-color termi- - nals. It prints out basic status messages and is generally friendly to - use on a console or xterm. - - NONINTERACTIVE.BASIC - Noninteractive.Basic is designed for situations in which OfflineIMAP - will be run non-attended and the status of its execution will be - logged. You might use it, for instance, to have the system run auto- - matically and e-mail you the results of the synchronization. This user - interface is not capable of reading a password from the keyboard; - account passwords must be specified using one of the configuration file - options. - - NONINTERACTIVE.QUIET - Noninteractive.Quiet is designed for non-attended running in situations - where normal status messages are not desired. It will output nothing - except errors and serious warnings. Like Noninteractive.Basic, this - user interface is not capable of reading a password from the keyboard; - account passwords must be specified using one of the configuration file - options. - -EXAMPLES - Here are some example configurations for various situations. Please e- - mail any other examples you have that may be useful to me. - - MULTIPLE ACCOUNTS WITH MUTT - This example shows you how to set up OfflineIMAP to synchronize multi- - ple accounts with the mutt mail reader. - - Start by creating a directory to hold your folders by running mkdir - ~/Mail. Then, in your ~/.offlineimaprc, specify: - - accounts = Personal, Work - - Make sure that you have both an [Account Personal] and an [Account - Work] section. The local repository for each account must have differ- - ent localfolder path names. Also, make sure to enable [mbnames]. - - In each local repository section, write something like this: - - localfolders = ~/Mail/Personal - - Finally, add these lines to your ~/.muttrc: - - source ~/path-to-mbnames-muttrc-mailboxes - folder-hook Personal set from="youremail@personal.com" - folder-hook Work set from="youremail@work.com" - set mbox_type=Maildir - set folder=$HOME/Mail - spoolfile=+Personal/INBOX - - That's it! - - UW-IMAPD AND REFERENCES - Some users with a UW-IMAPD server need to use OfflineIMAP's "reference" - feature to get at their mailboxes, specifying a reference of "~/Mail" - or "#mh/" depending on the configuration. The below configuration from - (originally from docwhat@gerf.org) shows using a reference of Mail, a - nametrans that strips the leading Mail/ off incoming folder names, and - a folderfilter that limits the folders synced to just three. - - [Account Gerf] - localrepository = GerfLocal - remoterepository = GerfRemote - - [Repository GerfLocal] - type = Maildir - localfolders = ~/Mail - - [Repository GerfRemote] - type = IMAP - remotehost = gerf.org - ssl = yes - remoteuser = docwhat - reference = Mail - # Trims off the preceeding Mail on all the folder names. - nametrans = lambda foldername: \ - re.sub('^Mail/', '', foldername) - # Yeah, you have to mention the Mail dir, even though it - # would seem intuitive that reference would trim it. - folderfilter = lambda foldername: foldername in [ - 'Mail/INBOX', - 'Mail/list/zaurus-general', - 'Mail/list/zaurus-dev', - ] - maxconnections = 1 - holdconnectionopen = no - - PYTHONFILE CONFIGURATION FILE OPTION - You can have OfflineIMAP load up a Python file before evaluating the - configuration file options that are Python expressions. This example - is based on one supplied by Tommi Virtanen for this feature. - - In ~/.offlineimap.rc, he adds these options: - - [general] - pythonfile=~/.offlineimap.py - [Repository foo] - foldersort=mycmp - - Then, the ~/.offlineimap.py file will contain: - - prioritized = ['INBOX', 'personal', 'announce', 'list'] - - def mycmp(x, y): - for prefix in prioritized: - xsw = x.startswith(prefix) - ysw = y.startswith(prefix) - if xsw and ysw: - return cmp(x, y) - elif xsw: - return -1 - elif ysw: - return +1 - return cmp(x, y) - - def test_mycmp(): - import os, os.path - folders=os.listdir(os.path.expanduser('~/data/mail/tv@hq.yok.utu.fi')) - folders.sort(mycmp) - print folders - - This code snippet illustrates how the foldersort option can be cus- - tomized with a Python function from the pythonfile to always synchro- - nize certain folders first. - -ERRORS - If you get one of some frequently-encountered or confusing errors, - please check this section. - - UID VALIDITY PROBLEM FOR FOLDER - IMAP servers use a unique ID (UID) to refer to a specific message. - This number is guaranteed to be unique to a particular message forever. - No other message in the same folder will ever get the same UID. UIDs - are an integral part of OfflineIMAP's synchronization scheme; they are - used to match up messages on your computer to messages on the server. - - Sometimes, the UIDs on the server might get reset. Usually this will - happen if you delete and then recreate a folder. When you create a - folder, the server will often start the UID back from 1. But - OfflineIMAP might still have the UIDs from the previous folder by the - same name stored. OfflineIMAP will detect this condition and skip the - folder. This is GOOD, because it prevents data loss. - - You can fix it by removing your local folder and cache data. For - instance, if your folders are under ~/Folders and the folder with the - problem is INBOX, you'd type this: - - rm -r ~/Folders/INBOX - rm -r ~/.offlineimap/Account-AccountName - rm -r ~/.offlineimap/Repository-RepositoryName - - (Of course, replace AccountName and RepositoryName with the names as - specified in ~/.offlineimaprc). - - Next time you run OfflineIMAP, it will re-download the folder with the - new UIDs. Note that the procedure specified above will lose any local - changes made to the folder. - - Some IMAP servers are broken and do not support UIDs properly. If you - continue to get this error for all your folders even after performing - the above procedure, it is likely that your IMAP server falls into this - category. OfflineIMAP is incompatible with such servers. Using - OfflineIMAP with them will not destroy any mail, but at the same time, - it will not actually synchronize it either. (OfflineIMAP will detect - this condition and abort prior to synchronization.) - - This question comes up frequently on the OfflineIMAP mailing list - . You can - find a detailed discussion of the - problem there. - -CONFORMING TO - o Internet Message Access Protocol version 4rev1 (IMAP 4rev1) as speci- - fied in RFC2060 and RFC3501 - - o CRAM-MD5 as specified in RFC2195 - - o Maildir as specified in the Maildir manpage - and - the qmail website . - - o Standard Python 2.2.1 as implemented on POSIX-compliant systems. - -NOTES - DELETING LOCAL FOLDERS - OfflineIMAP does a two-way synchronization. That is, if you make a - change to the mail on the server, it will be propagated to your local - copy, and vise-versa. Some people might think that it would be wise to - just delete all their local mail folders periodically. If you do this - with OfflineIMAP, remember to also remove your local status cache - (~/.offlineimap by default). Otherwise, OfflineIMAP will take this as - an intentional deletion of many messages and will interpret your action - as requesting them to be deleted from the server as well. (If you - don't understand this, don't worry; you probably won't encounter this - situation) - - MULTIPLE INSTANCES - OfflineIMAP is not designed to have several instances (for instance, a - cron job and an interactive invocation) run over the same mailbox - simultaneously. It will perform a check on startup and abort if - another OfflineIMAP is already running. If you need to schedule syn- - chronizations, please use the autorefresh settings rather than cron. - Alternatively, you can set a separate metadata directory for each - instance. - - COPYING MESSAGES BETWEEN FOLDERS - Normally, when you copy a message between folders or add a new message - to a folder locally, OfflineIMAP will just do the right thing. How- - ever, sometimes this can be tricky -- if your IMAP server does not pro- - vide the SEARCH command, or does not return something useful, - OfflineIMAP cannot determine the new UID of the message. So, in these - rare instances, OfflineIMAP will upload the message to the IMAP server - and delete it from your local folder. Then, on your next sync, the - message will be re-downloaded with the proper UID. OfflineIMAP makes - sure that the message was properly uploaded before deleting it, so - there should be no risk of data loss. - - MAILING LIST - There is an OfflineIMAP mailing list available. To subscribe, send the - text "Subscribe" in the subject of a mail to offlineimap-request@com- - plete.org. To post, send the message to offlineimap@complete.org. - Archives are available at - . - - BUGS - Reports of bugs should be reported online at the OfflineIMAP homepage. - Debian users are encouraged to instead use the Debian bug-tracking sys- - tem. - -UPGRADING TO 4.0 - If you are upgrading from a version of OfflineIMAP prior to 3.99.12, - you will find that you will get errors when OfflineIMAP starts up - (relating to ConfigParser or AccountHashGenerator) and the configura- - tion file. This is because the config file format had to change to - accommodate new features in 4.0. Fortunately, it's not difficult to - adjust it to suit. - - First thing you need to do is stop any running OfflineIMAP instance, - making sure first that it's synced all your mail. Then, modify your - ~/.offlineimaprc file. You'll need to split up each account section - (make sure that it now starts with "Account ") into two Repository sec- - tions (one for the local side and another for the remote side.) See - the files offlineimap.conf.minimal and offlineimap.conf in the distri- - bution if you need more assistance. - - OfflineIMAP's status directory area has also changed. Therefore, you - should delete everything in ~/.offlineimap as well as your local mail - folders. - - When you start up OfflineIMAP 4.0, it will re-download all your mail - from the server and then you can continue using it like normal. - -COPYRIGHT - OfflineIMAP, and this manual, are Copyright (C) 2002 - 2006 John - Goerzen. - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of MER- - CHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General - Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - imaplib.py comes from the Python dev tree and is licensed under the - GPL-compatible PSF license as stated in the file COPYRIGHT in the - OfflineIMAP distribution. - -AUTHOR - OfflineIMAP, its libraries, documentation, and all included files, - except where noted, was written by John Goerzen - and copyright is held as stated in the COPYRIGHT section. - - OfflineIMAP may be downloaded, and information found, from its homepage - . - -SEE ALSO - mutt(1), python(1) - -HISTORY - Detailed history may be found in the file ChangeLog in the OfflineIMAP - distribution. Feature and bug histories may be found in the file - debian/changelog which, despite its name, is not really Debian-spe- - cific. This section provides a large overview. - - Development on OfflineIMAP began on June 18, 2002. Version 1.0.0 was - released three days later on June 21, 2002. Point releases followed, - including speed optimizations and some compatibility fixes. - - Version 2.0.0 was released on July 3, 2002, and represented the first - time the synchronization became multithreaded and, to the best of my - knowledge, the first multithreaded IMAP syncrhonizing application in - existance. The last 2.0.x release, 2.0.8, was made on July 9. - - Version 3.0.0 was released on July 11, 2002, and introduced modular - user interfaces and the first GUI interface for OfflineIMAP. This man- - ual also was introduced with 3.0.0, along with many command-line - options. Version 3.1.0 was released on July 21, adding the Noninterac- - tive user interfaces, profiling support, and several bugfixes. 3.2.0 - was released on July 24, adding support for the Blinkenlights GUI - interface. OfflineIMAP entered maintenance mode for awhile, as it had - reached a feature-complete milestone in my mind. - - The 3.99.x branch began in on October 7, 2002, to begin work for 4.0. - The Curses.Blinkenlights interface was added in 3.99.6, and many archi- - tectural changes were made. - - 4.0.0 was released on July 18, 2003, including the ability to synchro- - nize directly between two IMAP servers, the first re-architecting of - the configuration file to refine the notion of an account, and the new - Curses interface. - - - -John Goerzen 01 December 2006 OFFLINEIMAP(1) diff --git a/offlineimap.1 b/offlineimap.1 deleted file mode 100644 index 076b5ef..0000000 --- a/offlineimap.1 +++ /dev/null @@ -1,803 +0,0 @@ -.\" This manpage has been automatically generated by docbook2man -.\" from a DocBook document. This tool can be found at: -.\" -.\" Please send any bug reports, improvements, comments, patches, -.\" etc. to Steve Cheng . -.TH "OFFLINEIMAP" "1" "01 December 2006" "John Goerzen" "OfflineIMAP Manual" - -.SH NAME -OfflineIMAP \- Powerful IMAP/Maildir synchronization and reader support -.SH SYNOPSIS - -\fBofflineimap\fR [ \fB-1\fR ] [ \fB-P \fIprofiledir\fB\fR ] [ \fB-a \fIaccountlist\fB\fR ] [ \fB-c \fIconfigfile\fB\fR ] [ \fB-d \fIdebugtype[,...]\fB\fR ] [ \fB-l \fIfilename\fB\fR ] [ \fB-o\fR ] [ \fB-u \fIinterface\fB\fR ] - - -\fBofflineimap\fR \fB-h\fR | \fB--help\fR - -.SH "DESCRIPTION" -.PP -\fBOfflineIMAP\fR is a tool to simplify your e-mail -reading. With \fBOfflineIMAP\fR, you can read the same mailbox -from multiple computers. You get a current copy of your -messages on each computer, and changes you make one place will be -visible on all other systems. For instance, you can delete a message -on your home computer, and it will appear deleted on your work -computer as well. \fBOfflineIMAP\fR is also useful if you want to -use a mail reader that does not have IMAP support, has poor IMAP -support, or does not provide disconnected operation. -.PP -\fBOfflineIMAP\fR is \fBFAST\fR; it synchronizes -my two accounts with over 50 folders in 3 seconds. Other -similar tools might take over a minute, and achieve a -less-reliable result. Some mail readers can take over 10 -minutes to do the same thing, and some don't even support it -at all. Unlike other mail tools, \fBOfflineIMAP\fR features a -multi-threaded synchronization algorithm that can dramatically -speed up performance in many situations by synchronizing -several different things simultaneously. -.PP -\fBOfflineIMAP\fR is \fBFLEXIBLE\fR; you can -customize which folders are synced via regular expressions, -lists, or Python expressions; a versatile and comprehensive -configuration file is used to control behavior; two user -interfaces are built-in; fine-tuning of synchronization -performance is possible; internal or external automation is -supported; SSL and PREAUTH tunnels are both supported; offline -(or "unplugged") reading is supported; and esoteric IMAP -features are supported to ensure compatibility with the widest -variety of IMAP servers. -.PP -\fBOfflineIMAP\fR is \fBSAFE\fR; it uses an -algorithm designed to prevent mail loss at all costs. Because -of the design of this algorithm, even programming errors -should not result in loss of mail. I am so confident in the -algorithm that I use my own personal and work accounts for -testing of \fBOfflineIMAP\fR pre-release, development, and beta -releases. Of course, legally speaking, \fBOfflineIMAP\fR comes -with no warranty, so I am not responsible if this turns out -to be wrong. -.SS "METHOD OF OPERATION" -.PP -\fBOfflineIMAP\fR traditionally -operates by maintaining a hierarchy of -mail folders in Maildir format locally. Your own mail -reader will read mail from this tree, and need never know -that the mail comes from IMAP. \fBOfflineIMAP\fR will detect -changes to the mail folders on your IMAP server and your own -computer and bi-directionally synchronize them, copying, -marking, and deleting messages as necessary. -.PP -With \fBOfflineIMAP\fR 4.0, a powerful new ability has been -introduced -- the program can now synchronize two IMAP -servers with each other, with no need to have a Maildir -layer in-between. Many people use this if they use a mail -reader on their local machine that does not support -Maildirs. People may install an IMAP server on their local -machine, and point both \fBOfflineIMAP\fR and their mail reader -of choice at it. This is often preferable to the mail -reader's own IMAP support since \fBOfflineIMAP\fR supports many -features (offline reading, for one) that most IMAP-aware -readers don't. However, this feature is not as time-tested -as traditional syncing, so my advice is to stick with normal -methods of operation for the time being. -.SH "QUICK START" -.PP -If you have already installed \fBOfflineIMAP\fR system-wide, -or your system administrator has done that for you, your task -for setting up \fBOfflineIMAP\fR for the first time is quite -simple. You just need to set up your configuration file, make -your folder directory, and run it! -.PP -You can quickly set up your configuration file. The distribution -includes a file \fIofflineimap.conf.minimal\fR -(Debian users -may find this at -\fI/usr/share/doc/offlineimap/examples/offlineimap.conf.minimal\fR) that is a basic example of setting of \fBOfflineIMAP\fR\&. You can -simply copy this file into your home directory and name it -\fI\&.offlineimaprc\fR (note the leading period). A -command such as \fBcp offlineimap.conf.minimal ~/.offlineimaprc\fR will do it. Or, if you prefer, you can just copy this text to -\fI~/.offlineimaprc\fR: - -.nf -[general] -accounts = Test - -[Account Test] -localrepository = Local -remoterepository = Remote - -[Repository Local] -type = Maildir -localfolders = ~/Test - -[Repository Remote] -type = IMAP -remotehost = examplehost -remoteuser = jgoerzen -.fi -.PP -Now, edit the \fI~/.offlineimaprc\fR file with -your favorite editor. All you have to do is specify a directory -for your folders to be in (on the \fIlocalfolders\fR -line), the host name of your IMAP server (on the -\fIremotehost\fR line), and your login name on -the remote (on the \fIremoteuser\fR line). That's -it! -.PP -To run \fBOfflineIMAP\fR, you just have to say -\fBofflineimap\fR -- it will fire up, ask you for -a login password if necessary, synchronize your folders, and exit. -See? You can just throw away the rest of this finely-crafted, -perfectly-honed manual! Of course, if you want to see how you can -make \fBOfflineIMAP\fR FIVE TIMES FASTER FOR JUST $19.95 (err, well, -$0), you have to read on! -.SH "INSTALLATION" -.PP -If you are reading this document via the "man" command, it is -likely -that you have no installation tasks to perform; your system -administrator has already installed it. If you need to install it -yourself, you have three options: a system-wide installation with -Debian, system-wide installation with other systems, and a single-user -installation. You can download the latest version of \fBOfflineIMAP\fR from -the \fBOfflineIMAP\fR -website \&. -.SS "PREREQUISITES" -.PP -In order to use \fBOfflineIMAP\fR, you need to have these conditions -satisfied: -.TP 0.2i -\(bu -Your mail server must support IMAP. Most Internet Service -Providers -and corporate networks do, and most operating systems -have an IMAP -implementation readily available. -.TP 0.2i -\(bu -You must have Python version 2.2.1 or above installed. -If you are -running on Debian GNU/Linux, this requirement will automatically be -taken care of for you. If you do not have Python already, check with -your system administrator or operating system vendor; or, download it from -the Python website \&. -If you intend to use the Tk interface, you must have Tkinter -(python-tk) installed. If you intend to use the SSL interface, your -Python must have been built with SSL support. -.TP 0.2i -\(bu -Have a mail reader that supports the Maildir mailbox -format. Most modern mail readers have this support -built-in, so you can choose from a wide variety of mail -servers. This format is also known as the "qmail" -format, so any mail reader compatible with it will work -with \fBOfflineIMAP\fR\&. If you do not have a mail reader -that supports Maildir, you can often install a local -IMAP server and point both \fBOfflineIMAP\fR and your mail -reader at it. -.SS "SYSTEM-WIDE INSTALLATION, DEBIAN" -.PP -If you are tracking Debian unstable, you may install -\fBOfflineIMAP\fR by simply running the following command as root: -.PP -\fBapt-get install offlineimap\fR -.PP -If you are not tracking Debian unstable, download the Debian .deb -package from the \fBOfflineIMAP\fR website -and then run \fBdpkg -i\fR to install the downloaded -package. Then, skip to [XRef to CONFIGURATION] below. You will type \fBofflineimap\fR to -invoke the program. -.SS "SYSTEM-WIDE INSTALLATION, OTHER" -.PP -Download the tar.gz version of the package from the -website \&. -Then run -these commands, making sure that you are the "root" user first: - -.nf -tar -zxvf offlineimap_x.y.z.tar.gz -cd offlineimap-x.y.z -python2.2 setup.py install -.fi -.PP -On some systems, you will need to use -\fBpython\fR instead of \fBpython2.2\fR\&. -Next, proceed to [XRef to CONFIGURATION] below. You will type \fBofflineimap\fR to -invoke the program. -.SS "SINGLE-ACCOUNT INSTALLATION" -.PP -Download the tar.gz version of the package from the -website \&. -Then run these commands: - -.nf -tar -zxvf offlineimap_x.y.z.tar.gz -cd offlineimap-x.y.z -.fi -.PP -When you want to run \fBOfflineIMAP\fR, you will issue the -\fBcd\fR command as above and then type -\fB\&./offlineimap.py\fR; there is no installation -step necessary. -.SH "CONFIGURATION" -.PP -\fBOfflineIMAP\fR is regulated by a configuration file that is normally -stored in \fI~/.offlineimaprc\fR\&. \fBOfflineIMAP\fR -ships with a file named \fIofflineimap.conf\fR -that you should copy to that location and then edit. This file is -vital to proper operation of the system; it sets everything you need -to run \fBOfflineIMAP\fR\&. Full documentation for the configuration file -is included within the sample file. -.PP -\fBOfflineIMAP\fR also ships a file named -\fIofflineimap.conf.minimal\fR that you can also try. -It's useful if you want to get started with -the most basic feature set, and you can read about other features -later with \fIofflineimap.conf\fR\&. -.SH "OPTIONS" -.PP -Most configuration is done via the configuration file. Nevertheless, -there are a few command-line options that you may set for -\fBOfflineIMAP\fR\&. -.TP -\fB-1\fR -Disable most multithreading operations and use -solely a single-connection -sync. This effectively sets the -\fImaxsyncaccounts\fR -and all \fImaxconnections\fR configuration file -variables to 1. -.TP -\fB-P \fIprofiledir\fB\fR -Sets \fBOfflineIMAP\fR into profile mode. The program -will create \fIprofiledir\fR -(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 -slow program performance, may reduce reliability, and can generate -huge amounts of data. You must use the \fB-1\fR option when -you use \fB-P\fR\&. -.TP -\fB-a \fIaccountlist\fB\fR -Overrides the \fIaccounts\fR option -in the \fIgeneral\fR section of the configuration -file. You might use this to exclude certain accounts, or to sync -some accounts that you normally prefer not to. Separate the -accounts by commas, and use no embedded spaces. -.TP -\fB-c \fIconfigfile\fB\fR -Specifies a configuration file to use in lieu of -the default, \fI~/.offlineimaprc\fR\&. -.TP -\fB-d \fIdebugtype[,...]\fB\fR -Enables debugging for OfflineIMAP. This is useful if -you are trying to track down a malfunction or figure out what is going -on under the hood. I suggest that you use this with -\fB-1\fR to make the results more sensible. - -\fB-d\fR requires one or more debugtypes, -separated by commas. These define what exactly will be -debugged, and include three options: \fIimap\fR, -\fImaildir\fR, and \fIthread\fR\&. -The \fIimap\fR -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 -\fImaildir\fR option will enable debugging for -certain Maildir operations. And \fIthread\fR -will debug the threading model. -.TP -\fB-l \fIfilename\fB\fR -Enables logging to filename. This will log everything -that goes to the screen to the specified file. -Additionally, if any debugging is specified with -d, -then debug messages will not go to the screen, but -instead to the logfile only. -.TP -\fB-o\fR -Run only once, ignoring all -\fIautorefresh\fR settings in the configuration -file. -.TP -\fB-h\fR -.TP -\fB--help\fR -Show summary of options. -.TP -\fB-u \fIinterface\fB\fR -Specifies an alternative user interface module -to use. This overrides the default specified in the -configuration file. The pre-defined options are listed in -the User Interfaces section. -.SH "USER INTERFACES" -.PP -\fBOfflineIMAP\fR has a pluggable user interface system that lets you choose how the -program communicates information to you. There are two graphical -interfaces, two terminal interfaces, and two noninteractive interfaces -suitable for scripting or logging purposes. The -\fIui\fR option in the configuration file specifies -user interface preferences. The \fB-u\fR command-line -option can override the configuration file setting. The available -values for the configuration file or command-line are described -in this section. -.SS "TK.BLINKENLIGHTS" -.PP -Tk.Blinkenlights is an interface designed to be sleek, fun to watch, and -informative of the overall picture of what \fBOfflineIMAP\fR -is doing. I consider it to be the best general-purpose interface in -\fBOfflineIMAP\fR\&. -.PP -Tk.Blinkenlights contains, by default, a small window with a row of -LEDs, a small log, and a row of command buttons. -The total size of the window is -very small, so it uses little desktop space, yet it is quite -functional. The optional, toggleable, log shows more -detail about what is happening and is color-coded to match the color -of the lights. -.PP -Tk.Blinkenlights is the only user interface that has configurable -parameters; see the example \fIofflineimap.conf\fR -for more details. -.PP -Each light in the Blinkenlights interface represents a thread -of execution -- that is, a particular task that \fBOfflineIMAP\fR -is performing right now. The colors indicate what task -the particular thread is performing, and are as follows: -.TP -\fBBlack\fR -indicates that this light's thread has terminated; it will light up -again later when new threads start up. So, black indicates no -activity. -.TP -\fBRed (Meaning 1)\fR -is the color of the main program's thread, which basically does -nothing but monitor the others. It might remind you of HAL 9000 in -2001\&. -.TP -\fBGray\fR -indicates that the thread is establishing a new connection to the IMAP -server. -.TP -\fBPurple\fR -is the color of an account synchronization thread that is monitoring -the progress of the folders in that account (not generating any I/O). -.TP -\fBCyan\fR -indicates that the thread is syncing a folder. -.TP -\fBGreen\fR -means that a folder's message list is being loaded. -.TP -\fBBlue\fR -is the color of a message synchronization controller thread. -.TP -\fBOrange\fR -indicates that an actual message is being copied. -(We use fuchsia for fake messages.) -.TP -\fBRed (meaning 2)\fR -indicates that a message is being deleted. -.TP -\fBYellow / bright orange\fR -indicates that message flags are being added. -.TP -\fBPink / bright red\fR -indicates that message flags are being removed. -.TP -\fBRed / Black Flashing\fR -corresponds to the countdown timer that runs between -synchronizations. -.PP -The name of this interfaces derives from a bit of computer -history. Eric Raymond's Jargon File defines -\fIblinkenlights\fR, in part, as: -.sp -.RS -.PP -Front-panel diagnostic -lights on a computer, esp. a dinosaur. Now that dinosaurs are rare, -this term usually refers to status lights on a modem, network hub, or -the like. -.PP -This term derives from the last word of the famous blackletter-Gothic -sign in mangled pseudo-German that once graced about half the computer -rooms in the English-speaking world. One version ran in its entirety as -follows: -.PP -\fBACHTUNG! ALLES LOOKENSPEEPERS!\fR -.PP -Das computermachine ist nicht fuer gefingerpoken und mittengrabben. -Ist easy schnappen der springenwerk, blowenfusen und poppencorken -mit spitzensparken. Ist nicht fuer gewerken bei das dumpkopfen. -Das rubbernecken sichtseeren keepen das cotten-pickenen hans in das -pockets muss; relaxen und watchen das blinkenlichten. -.RE -.SS "CURSES.BLINKENLIGHTS" -.PP -Curses.Blinkenlights is an interface very similar to Tk.Blinkenlights, -but is designed to be run in a console window (an xterm, Linux virtual -terminal, etc.) Since it doesn't have access to graphics, it isn't -quite as pretty, but it still gets the job done. -.PP -Please see the Tk.Blinkenlights section above for more -information about the colors used in this interface. -.SS "TK.VERBOSEUI" -.PP -Tk.VerboseUI (formerly known as Tk.TkUI) is a graphical interface -that presents a variable-sized window. In the window, each -currently-executing thread has a section where its name and current -status are displayed. This interface is best suited to people running -on slower connections, as you get a lot of detail, but for fast -connections, the detail may go by too quickly to be useful. People -with fast connections may wish to use Tk.Blinkenlights instead. -.SS "TTY.TTYUI" -.PP -TTY.TTYUI interface is for people running in basic, non-color terminals. It -prints out basic status messages and is generally friendly to use on a console -or xterm. -.SS "NONINTERACTIVE.BASIC" -.PP -Noninteractive.Basic is designed for situations in which \fBOfflineIMAP\fR -will be run non-attended and the status of its execution will be -logged. You might use it, for instance, to have the system run -automatically and -e-mail you the results of the synchronization. This user interface -is not capable of reading a password from the keyboard; account -passwords must be specified using one of the configuration file options. -.SS "NONINTERACTIVE.QUIET" -.PP -Noninteractive.Quiet is designed for non-attended running in situations -where normal status messages are not desired. It will output nothing -except errors and serious warnings. Like Noninteractive.Basic, -this user interface -is not capable of reading a password from the keyboard; account -passwords must be specified using one of the configuration file options. -.SH "EXAMPLES" -.PP -Here are some example configurations for various situations. -Please e-mail any other examples you have that may be useful to -me. -.SS "MULTIPLE ACCOUNTS WITH MUTT" -.PP -This example shows you how to set up \fBOfflineIMAP\fR to -synchronize multiple accounts with the mutt mail reader. -.PP -Start by creating a directory to hold your folders by running -\fBmkdir ~/Mail\fR\&. Then, in your -\fI~/.offlineimaprc\fR, specify: - -.nf -accounts = Personal, Work -.fi -.PP -Make sure that you have both an -\fI[Account Personal]\fR -and an \fI[Account Work]\fR section. The -local repository for each account must have different -\fIlocalfolder\fR path names. -Also, make sure -to enable \fI[mbnames]\fR\&. -.PP -In each local repository section, write something like this: - -.nf -localfolders = ~/Mail/Personal -.fi -.PP -Finally, add these lines to your \fI~/.muttrc\fR: - -.nf -source ~/path-to-mbnames-muttrc-mailboxes -folder-hook Personal set from="youremail@personal.com" -folder-hook Work set from="youremail@work.com" -set mbox_type=Maildir -set folder=$HOME/Mail -spoolfile=+Personal/INBOX -.fi -.PP -That's it! -.SS "UW-IMAPD AND REFERENCES" -.PP -Some users with a UW-IMAPD server need to use \fBOfflineIMAP\fR\&'s -"reference" feature to get at their mailboxes, specifying a reference -of "~/Mail" or "#mh/" depending on the configuration. The below -configuration from (originally from docwhat@gerf.org) -shows using a \fIreference\fR of Mail, a \fInametrans\fR -that strips -the leading Mail/ off incoming folder names, and a -\fIfolderfilter\fR that -limits the folders synced to just three. - -.nf -[Account Gerf] -localrepository = GerfLocal -remoterepository = GerfRemote - -[Repository GerfLocal] -type = Maildir -localfolders = ~/Mail - -[Repository GerfRemote] -type = IMAP -remotehost = gerf.org -ssl = yes -remoteuser = docwhat -reference = Mail -# Trims off the preceeding Mail on all the folder names. -nametrans = lambda foldername: \\ - re.sub('^Mail/', '', foldername) -# Yeah, you have to mention the Mail dir, even though it -# would seem intuitive that reference would trim it. -folderfilter = lambda foldername: foldername in [ - 'Mail/INBOX', - 'Mail/list/zaurus-general', - 'Mail/list/zaurus-dev', - ] -maxconnections = 1 -holdconnectionopen = no -.fi -.SS "PYTHONFILE CONFIGURATION FILE OPTION" -.PP -You can have \fBOfflineIMAP\fR -load up a Python file before evaluating the -configuration file options that are Python expressions. This example -is based on one supplied by Tommi Virtanen for this feature. -.PP -In \fI~/.offlineimap.rc\fR, he adds these options: - -.nf -[general] -pythonfile=~/.offlineimap.py -[Repository foo] -foldersort=mycmp -.fi -.PP -Then, the \fI~/.offlineimap.py\fR file will -contain: - -.nf -prioritized = ['INBOX', 'personal', 'announce', 'list'] - -def mycmp(x, y): - for prefix in prioritized: - xsw = x.startswith(prefix) - ysw = y.startswith(prefix) - if xsw and ysw: - return cmp(x, y) - elif xsw: - return -1 - elif ysw: - return +1 - return cmp(x, y) - -def test_mycmp(): - import os, os.path - folders=os.listdir(os.path.expanduser('~/data/mail/tv@hq.yok.utu.fi')) - folders.sort(mycmp) - print folders -.fi -.PP -This code snippet illustrates how the \fIfoldersort\fR -option can be customized with a Python function from the -\fIpythonfile\fR to always synchronize certain -folders first. -.SH "ERRORS" -.PP -If you get one of some frequently-encountered or confusing errors, -please check this section. -.SS "UID VALIDITY PROBLEM FOR FOLDER" -.PP -IMAP servers use a unique ID (UID) to refer to a specific message. -This number is guaranteed to be unique to a particular message -\fBforever\fR\&. -No other message in the same folder will ever get the same -UID. UIDs are an integral part of \fBOfflineIMAP\fR\&'s synchronization -scheme; they are used to match up messages on your computer to -messages on the server. -.PP -Sometimes, the UIDs on the server might get reset. Usually this will -happen if you delete and then recreate a folder. When you create a -folder, the server will often start the UID back from 1. But -\fBOfflineIMAP\fR might still have the UIDs from the previous folder by the -same name stored. \fBOfflineIMAP\fR will detect this condition and skip the -folder. This is GOOD, because it prevents data loss. -.PP -You can fix it by removing your local folder and cache data. For -instance, if your folders are under \fI~/Folders\fR -and the folder with the problem is INBOX, you'd type this: - -.nf -rm -r ~/Folders/INBOX -rm -r ~/.offlineimap/Account-\fIAccountName\fR -rm -r ~/.offlineimap/Repository-\fIRepositoryName\fR -.fi -.PP -(Of course, replace AccountName and RepositoryName -with the names as specified -in \fI~/.offlineimaprc\fR). -.PP -Next time you run \fBOfflineIMAP\fR, it will re-download -the folder with the -new UIDs. Note that the procedure specified above will lose any local -changes made to the folder. -.PP -Some IMAP servers are broken and do not support UIDs properly. If you -continue to get this error for all your folders even after performing -the above procedure, it is likely that your IMAP server falls into -this category. \fBOfflineIMAP\fR is incompatible with such servers. -Using \fBOfflineIMAP\fR with them will not destroy any mail, but at the same time, -it will not actually synchronize it either. (\fBOfflineIMAP\fR will detect -this condition and abort prior to synchronization.) -.PP -This question comes up frequently on the -\fBOfflineIMAP\fR -mailing list \&. You can find a -detailed -discussion of the problem there. -.SH "CONFORMING TO" -.TP 0.2i -\(bu -Internet Message Access Protocol version 4rev1 (IMAP 4rev1) as -specified in RFC2060 and RFC3501 -.TP 0.2i -\(bu -CRAM-MD5 as specified in RFC2195 -.TP 0.2i -\(bu -Maildir as specified in -the Maildir manpage and -the qmail website \&. -.TP 0.2i -\(bu -Standard Python 2.2.1 as implemented on POSIX-compliant systems. -.SH "NOTES" -.SS "DELETING LOCAL FOLDERS" -.PP -\fBOfflineIMAP\fR does a two-way synchronization. That is, if you -make a change to the mail on the server, it will be propagated to your -local copy, and vise-versa. Some people might think that it would be -wise to just delete all their local mail folders periodically. If you -do this with \fBOfflineIMAP\fR, remember to also remove your local status -cache (\fI~/.offlineimap\fR by default). Otherwise, \fBOfflineIMAP\fR will take -this as an intentional deletion of many messages and will interpret -your action as requesting them to be deleted from the server as well. -(If you don't understand this, don't worry; you probably won't -encounter this situation) -.SS "MULTIPLE INSTANCES" -.PP -\fBOfflineIMAP\fR is not designed to have several instances (for instance, a cron job and an interactive invocation) run over the same -mailbox simultaneously. It will perform a check on startup and -abort if another \fBOfflineIMAP\fR is already running. If you need -to schedule synchronizations, please use the -\fIautorefresh\fR settings rather than cron. -Alternatively, you can set a separate \fImetadata\fR -directory for each instance. -.SS "COPYING MESSAGES BETWEEN FOLDERS" -.PP -Normally, when you copy a message between folders or add a new message -to a folder locally, \fBOfflineIMAP\fR -will just do the right thing. However, sometimes this can be tricky --- if your IMAP server does not provide the SEARCH command, or does -not return something useful, \fBOfflineIMAP\fR -cannot determine the new UID of the message. So, in these rare -instances, OfflineIMAP will upload the message to the IMAP server and -delete it from your local folder. Then, on your next sync, the -message will be re-downloaded with the proper UID. -\fBOfflineIMAP\fR makes sure that the message was properly uploaded before deleting it, -so there should be no risk of data loss. -.SS "MAILING LIST" -.PP -There is an OfflineIMAP mailing list available. -To subscribe, send the text "Subscribe" in the subject of a mail to -offlineimap-request@complete.org. To post, send the message to -offlineimap@complete.org. Archives are available at - \&. -.SS "BUGS" -.PP -Reports of bugs should be reported online at the -\fBOfflineIMAP\fR homepage. -Debian users are encouraged to instead use the -Debian -bug-tracking system. -.SH "UPGRADING TO 4.0" -.PP -If you are upgrading from a version of \fBOfflineIMAP\fR prior to -3.99.12, you will find that you will get errors when -\fBOfflineIMAP\fR starts up (relating to ConfigParser or -AccountHashGenerator) and the -configuration file. This is because the config file format -had to change to accommodate new features in 4.0. Fortunately, -it's not difficult to adjust it to suit. -.PP -First thing you need to do is stop any running \fBOfflineIMAP\fR -instance, making sure first that it's synced all your mail. -Then, modify your -\fI~/.offlineimaprc\fR file. You'll need to -split up each account section (make sure that it now starts -with "Account ") into two Repository sections (one for the -local side and another for the remote side.) See the files -\fIofflineimap.conf.minimal\fR and -\fIofflineimap.conf\fR in the distribution if -you need more assistance. -.PP -\fBOfflineIMAP\fR\&'s status directory area has also changed. -Therefore, you should delete everything in ~/.offlineimap as -well as your local mail folders. -.PP -When you start up \fBOfflineIMAP\fR 4.0, it will re-download all -your mail from the server and then you can continue using it -like normal. -.SH "COPYRIGHT" -.PP -OfflineIMAP, and this manual, are Copyright (C) 2002 - 2006 John Goerzen. -.PP -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -.PP -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -.PP -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -.PP -imaplib.py comes from the Python dev tree and is licensed under -the GPL-compatible PSF license as stated in the file -\fICOPYRIGHT\fR in the \fBOfflineIMAP\fR -distribution. -.SH "AUTHOR" -.PP -\fBOfflineIMAP\fR, its libraries, documentation, and all included files, except where -noted, was written by John Goerzen and -copyright is held as stated in the COPYRIGHT section. -.PP -\fBOfflineIMAP\fR may be downloaded, and information found, from its -homepage \&. -.SH "SEE ALSO" -.PP -\fBmutt\fR(1), -\fBpython\fR(1) -.SH "HISTORY" -.PP -Detailed history may be found in the file ChangeLog in the -\fBOfflineIMAP\fR distribution. Feature and bug histories may be -found in the file debian/changelog which, despite its name, is -not really Debian-specific. This section provides a large -overview. -.PP -Development on \fBOfflineIMAP\fR began on June 18, 2002. Version -1.0.0 was released three days later on June 21, 2002. Point -releases followed, including speed optimizations and some -compatibility fixes. -.PP -Version 2.0.0 was released on July 3, 2002, and -represented the first time the synchronization became -multithreaded and, to the best of my knowledge, the first -multithreaded IMAP syncrhonizing application in existance. -The last 2.0.x release, 2.0.8, was made on July 9. -.PP -Version 3.0.0 was released on July 11, 2002, and introduced -modular user interfaces and the first GUI interface for -\fBOfflineIMAP\fR\&. This manual also was introduced with 3.0.0, -along with many command-line options. Version 3.1.0 was -released on July 21, adding the Noninteractive user -interfaces, profiling support, and several bugfixes. 3.2.0 -was released on July 24, adding support for the Blinkenlights -GUI interface. \fBOfflineIMAP\fR entered maintenance mode for -awhile, as it had reached a feature-complete milestone in my -mind. -.PP -The 3.99.x branch began in on October 7, 2002, to begin work -for 4.0. The Curses.Blinkenlights interface was added in -3.99.6, and many architectural changes were made. -.PP -4.0.0 was released on July 18, 2003, including the ability to -synchronize directly between two IMAP servers, the first -re-architecting of the configuration file to refine the -notion of an account, and the new Curses interface.