Removed generated docs from source tree
This commit is contained in:
		
							
								
								
									
										1872
									
								
								manual.html
									
									
									
									
									
								
							
							
						
						
									
										1872
									
								
								manual.html
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								manual.pdf
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								manual.pdf
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										691
									
								
								manual.txt
									
									
									
									
									
								
							
							
						
						
									
										691
									
								
								manual.txt
									
									
									
									
									
								
							@@ -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 <URL:http://software.complete.org/offlineimap/>.
 | 
			
		||||
 | 
			
		||||
   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 <URL:http://www.python.org/>.  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    <URL:http://software.com-
 | 
			
		||||
       plete.org/offlineimap/>  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
 | 
			
		||||
       <URL:http://software.complete.org/offlineimap/>.  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
 | 
			
		||||
       <URL:http://software.complete.org/offlineimap/>.  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
 | 
			
		||||
       <URL:http://lists.complete.org/offlineimap@complete.org/>.    You   can
 | 
			
		||||
       find      a      detailed       discussion       <URL:http://lists.com-
 | 
			
		||||
       plete.org/offlineimap@complete.org/2003/04/msg00012.html.gz>   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
 | 
			
		||||
         <URL:http://www.qmail.org/qmail-manual-html/man5/maildir.html>    and
 | 
			
		||||
         the qmail website <URL:http://cr.yp.to/proto/maildir.html>.
 | 
			
		||||
 | 
			
		||||
       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
 | 
			
		||||
        <URL: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 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 <jgoerzen@complete.org>
 | 
			
		||||
       and copyright is held as stated in the COPYRIGHT section.
 | 
			
		||||
 | 
			
		||||
       OfflineIMAP may be downloaded, and information found, from its homepage
 | 
			
		||||
       <URL:http://software.complete.org/offlineimap>.
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
							
								
								
									
										803
									
								
								offlineimap.1
									
									
									
									
									
								
							
							
						
						
									
										803
									
								
								offlineimap.1
									
									
									
									
									
								
							@@ -1,803 +0,0 @@
 | 
			
		||||
.\" This manpage has been automatically generated by docbook2man 
 | 
			
		||||
.\" from a DocBook document.  This tool can be found at:
 | 
			
		||||
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/> 
 | 
			
		||||
.\" Please send any bug reports, improvements, comments, patches, 
 | 
			
		||||
.\" etc. to Steve Cheng <steve@ggi-project.org>.
 | 
			
		||||
.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 <URL:http://software.complete.org/offlineimap/>\&.
 | 
			
		||||
.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 <URL:http://www.python.org/>\&.
 | 
			
		||||
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 <URL:http://software.complete.org/offlineimap/>
 | 
			
		||||
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 <URL:http://software.complete.org/offlineimap/>\&.
 | 
			
		||||
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 <URL:http://software.complete.org/offlineimap/>\&.
 | 
			
		||||
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 <URL:http://lists.complete.org/offlineimap@complete.org/>\&.  You can find a
 | 
			
		||||
detailed
 | 
			
		||||
discussion <URL:http://lists.complete.org/offlineimap@complete.org/2003/04/msg00012.html.gz> 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 <URL:http://www.qmail.org/qmail-manual-html/man5/maildir.html> and
 | 
			
		||||
the qmail website <URL:http://cr.yp.to/proto/maildir.html>\&.
 | 
			
		||||
.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
 | 
			
		||||
 <URL:http://lists.complete.org/offlineimap@complete.org/>\&.
 | 
			
		||||
.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 <jgoerzen@complete.org> and
 | 
			
		||||
copyright is held as stated in the COPYRIGHT section.
 | 
			
		||||
.PP
 | 
			
		||||
\fBOfflineIMAP\fR may be downloaded, and information found, from its
 | 
			
		||||
homepage <URL:http://software.complete.org/offlineimap>\&.
 | 
			
		||||
.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.
 | 
			
		||||
		Reference in New Issue
	
	Block a user