Provided by: offlineimap_6.5.4-2_all bug

NAME

       offlineimap - Powerful IMAP/Maildir synchronization and reader support

DESCRIPTION

       OfflineImap  operates  on  a REMOTE and a LOCAL repository and synchronizes emails between
       them, so that you can read the same mailbox from multiple computers. The REMOTE repository
       is some IMAP server, while LOCAL can be either a local Maildir or another IMAP server.

       Missing  folders will be automatically created on both sides if needed. No folders will be
       deleted at the moment.

       Configuring OfflineImap in basic mode is quite easy, however it provides an amazing amount
       of flexibility for those with special needs.  You can specify the number of connections to
       your IMAP server, use arbitrary python functions (including regular expressions) to  limit
       the  number  of  folders  being  synchronized.  You  can  transpose  folder  names between
       repositories using any python function, to mangle and modify folder  names  on  the  LOCAL
       repository.  There  are  six  different ways to hand the IMAP password to OfflineImap from
       console input, specifying in the configuration  file,  .netrc  support,  specifying  in  a
       separate  file,  to  using  arbitrary  python  functions that somehow return the password.
       Finally, you can use IMAPs IDLE infrastructure to always keep a connection  to  your  IMAP
       server  open  and  immediately be notified (and synchronized) when a new mail arrives (aka
       Push mail).

       Most configuration is done via the configuration file.  However, any setting can  also  be
       overridden by command line options handed to OfflineIMAP.

       OfflineImap  is  well  suited  to be frequently invoked by cron jobs, or can run in daemon
       mode to periodically check your email (however, it will exit in some error situations).

       The documentation is included in the git repository and can be created  by  issueing  make
       dev-doc  in  the  doc  folder  (python-sphinx  required),  or  it  can be viewed online at
       http://docs.offlineimap.org.

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.

       Check out the Use Cases section for some example configurations.

OPTIONS

       The command line options are described by issueing offlineimap --help.  Details  on  their
       use  can  be  found  either  in  the  sample  offlineimap.conf file or in the user docs at
       http://docs.offlineimap.org.

USER INTERFACES

       OfflineIMAP has various user interfaces that let you choose how the  program  communicates
       information  to  you.  The  'ui'  option  in  the  configuration  file  specifies the user
       interface.  The -u command-line option overrides  the  configuration  file  setting.   The
       available values for the configuration file or command-line are described in this section.

   Blinkenlights
       Blinkenlights  is  an interface designed to be sleek, fun to watch, and informative of the
       overall picture of what OfflineIMAP is doing.

       Blinkenlights contains a row of "LEDs" with command buttons and a  log.   The   log  shows
       more detail about what is happening and is color-coded to match the color of the lights.

       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.

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

   Basic
       Basic  is  designed  for  situations in which OfflineIMAP will be run non-attended and the
       status of its execution will be logged.  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. For example, it will not print  periodic  sleep  announcements
       and tends to be a tad less verbose, in general.

   Quiet
       It  will  output  nothing  except  errors  and  serious  warnings.   Like 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.

   MachineUI
       MachineUI  generates  output  in  a  machine-parsable  format.   It  is designed for other
       programs that will interface to OfflineIMAP.

SYNCHRONIZATION PERFORMANCE

       By default, we use fairly conservative settings that are safe for syncing but  that  might
       not be the best performing one. Once you got everything set up and running, you might want
       to look into speeding up your synchronization. Here are a couple of hints and tips on  how
       to achieve this.

          1. Use  maxconnections  >  1.  By default we only use one connection to an IMAP server.
             Using 2 or even 3 speeds things up considerably in most  cases.  This  setting  goes
             into the [Repository XXX] section.

          2. Use  folderfilters. The quickest sync is a sync that can ignore some folders. I sort
             my inbox into monthly folders, and ignore every folder that is more than 2-3  months
             old,  this lets me only inspect a fraction of my Mails on every sync. If you haven't
             done this yet, do it :). See the folderfilter section the example offlineimap.conf.

          3. The default status cache is a plain text file that will write out the complete  file
             for  each single new message (or even changed flag) to a temporary file. If you have
             plenty of files in a folder, this is a few hundred kilo to megabytes for  each  mail
             and  is bound to make things slower. I recommend to use the sqlite backend for that.
             See the status_backend = sqlite setting in the example  offlineimap.conf.  You  will
             need to have python-sqlite installed in order to use this. This will save you plenty
             of disk activity. Do note that the sqlite backend is still  considered  experimental
             as  it  has only been included recently (although a loss of your status cache should
             not be a tragedy as that file can be rebuild automatically)

          4. Use quick sync. A regular sync will request all flags and all UIDs of all  mails  in
             each  folder which takes quite some time. A 'quick' sync only compares the number of
             messages in a folder on the IMAP side (it will detect flag changes  on  the  Maildir
             side  of  things  though).  A  quick sync on my smallish account will take 7 seconds
             rather than 40 seconds. Eg, I run a cron script that does a regular sync once a day,
             and does quick syncs (-q) only synchronizing the "-f INBOX" in between.

          5. Turn  off fsync. In the [general] section you can set fsync to True or False. If you
             want to play 110%  safe  and  wait  for  all  operations  to  hit  the  disk  before
             continuing,  you can set this to True. If you set it to False, you lose some of that
             safety, trading it for speed.

UPGRADING FROM PLAIN TEXT CACHE TO SQLITE BASED CACHE

       OfflineImap uses a cache to store the last know status of mails (flags etc).  Historically
       that  has  meant  plain  text  files, but recently we introduced sqlite-based cache, which
       helps with performance and CPU usage on large folders. Here is  how  to  upgrade  existing
       plain text cache installations to sqlite based one:

       1. Sync to make sure things are reasonably similar

       2. Change the account section to status_backend = sqlite

       3. A  new  sync  will  convert your plain text cache to an sqlite cache (but leave the old
          plain text cache around for easy reverting) This should be quick and  not  involve  any
          mail up/downloading.

       4. See if it works :-)

       5. If it does not work, go back to the old version or set status_backend=plain

       6. Or, once you are sure it works, you can delete the .offlineimap/Account-foo/LocalStatus
          folder (the new cache will be in the LocalStatus-sqlite folder)

SECURITY AND SSL

       Some words on OfflineImap and its use of SSL/TLS. By default, we will  connect  using  any
       method  that  openssl  supports,  that  is  SSLv2,  SSLv3, or TLSv1. Do note that SSLv2 is
       notoriously insecure and deprecated.  Unfortunately, python2 does not offer easy  ways  to
       disable  SSLv2.  It  is recommended you test your setup and make sure that the mail server
       does not use an SSLv2 connection. Use e.g. "openssl s_client -host mail.server -port  443"
       to find out the connection that is used by default.

   Certificate checking
       Unfortunately,  by default we will not verify the certificate of an IMAP TLS/SSL server we
       connect to, so connecting by SSL is no guarantee against man-in-the-middle attacks.  While
       verifying  a  server  certificate fingerprint is being planned, it is not implemented yet.
       There is currently only one safe way to ensure that you connect to the correct  server  in
       an  encrypted manner: You can specify a 'sslcacertfile' setting in your repository section
       of offlineimap.conf pointing to a file that contains (among others) a  CA  Certificate  in
       PEM  format which validating your server certificate. In this case, we will check that: 1)
       The server SSL certificate is validated by the CA Certificate  2)  The  server  host  name
       matches the SSL certificate 3) The server certificate is not past its expiration date. The
       FAQ contains an entry on how to create your own certificate and CA certificate.

   StartTLS
       If you have not configured your account to connect via SSL anyway, OfflineImap will  still
       attempt  to  set  up  an SSL connection via the STARTTLS function, in case the imap server
       supports it. Do note, that there is no certificate or  fingerprint  checking  involved  at
       all,  when using STARTTLS (the underlying imaplib library does not support this yet). This
       means that you will be protected against passively listening eavesdroppers and  they  will
       not  be  able  to  see your password or email contents. However, this will not protect you
       from active attacks, such as Man-In-The-Middle attacks which cause you to connect  to  the
       wrong  server  and  pretend  to  be  your  mail  server. DO NOT RELY ON STARTTLS AS A SAFE
       CONNECTION GUARANTEEING THE AUTHENTICITY OF YOUR IMAP SERVER!

UNIX SIGNALS

       OfflineImap listens to the unix signals SIGUSR1, SIGUSR2, SIGTERM, SIGINT, SIGHUP:

       If sent a SIGUSR1 it will abort any current (or next future) sleep of  all  accounts  that
       are  configured to "autorefresh". In effect, this will trigger a full sync of all accounts
       to be performed as soon as possible.

       If sent a SIGUSR2, it will stop "autorefresh mode" for all  accounts.  That  is,  accounts
       will  abort  any current sleep and will exit after a currently running synchronization has
       finished. This signal can be  used  to  gracefully  exit  out  of  a  running  offlineimap
       "daemon".

       SIGTERM,  SIGINT, SIGHUP are all treated to gracefully terminate as soon as possible. This
       means it will finish syncing  the  current  folder  in  each  account,  close  keep  alive
       connections,  remove  locks  on  the  accounts  and exit. It may take up to 10 seconds, if
       autorefresh option is used.

FOLDER FILTERING AND NAMETRANS

       OfflineImap offers flexible (and complex) ways of filtering and transforming folder names.
       Please  see  the  docs/dev-docs-src/folderfilters.rst  document  about  details how to use
       folder filters and name transformations. The documentation  will  be  autogenerated  by  a
       "make dev-doc" in the docs directory. It is also viewable at
       :ref:`folder_filtering_and_name_translation`

       System Message: ERROR/3 (MANUAL.rst:, line 347)
              Unknown interpreted text role "ref".

KNOWN BUGS

   SSL3 write pending
       Users  enabling  SSL  may hit a bug about "SSL3 write pending". If so, the account(s) will
       stay unsynchronised from the time the bug appeared. Running OfflineIMAP again can help. We
       are  still  working  on  this  bug.  Patches or detailed bug reports would be appreciated.
       Please check you're running the last stable version and send us a report  to  the  mailing
       list including the full log.

   IDLE support
       IDLE support is incomplete and experimental. Bugs may be encountered.

       • No  hook  exists  for  "run after an IDLE response".  Email will show up, but may not be
         processed until the next refresh cycle.

       • nametrans may not be supported correctly.

       • IMAP IDLE <-> IMAP IDLE doesn't work yet.

       • IDLE may only work "once" per refresh.  If you encounter this bug, please send a  report
         to the list!

   Maildir support on Windows drive
       Maildir  uses  colon  caracter  (:)  in  message  file  names.  Colon is however forbidden
       character in windows drives. There are several workarounds for that situation:

       • Use "maildir-windows-compatible = yes" account OfflineIMAP configuration.
            That makes OfflineIMAP to use exclamation mark  (!)  instead  of  colon  for  storing
            messages.  Such  files  can  be  written to windows partitions. But you will probably
            loose compatibility with other programs trying to read the same Maildir.

            Exclamation     mark     was     chosen     because     of      the      note      in
            http://docs.python.org/library/mailbox.html

            If  you  have  some  messages  already  stored  without this option, you will have to
            re-sync them again.

       • Enable  file   name   character   translation   in   windows   registry   (not   tested)
         http://support.microsoft.com/kb/289627

       • Use cygwin managed mount (not tested) not available anymore since cygwin 1.7

PITFALLS & ISSUES

   Sharing a maildir with multiple IMAP servers
          Generally a word of caution mixing IMAP repositories on the same Maildir root. You have
          to be careful that you never use the same maildir folder for 2  IMAP  servers.  In  the
          best  case,  the  folder  MD5  will be different, and you will get a loop where it will
          upload your mails to both servers in turn (infinitely!) as it thinks  you  have  placed
          new  mails  in  the  local Maildir. In the worst case, the MD5 is the same (likely) and
          mail UIDs overlap (likely too!) and it will fail to sync some mails as it  thinks  they
          are already existent.

          I  would  create  a  new  local  Maildir  Repository  for  the Personal Gmail and use a
          different root to be on the safe side here. You could e.g. use  ~/mail/Pro  as  Maildir
          root for the ProGmail and ~/mail/Personal as root for the personal one.

          If  you  then  point  your  local  mutt, or whatever MUA you use to ~/mail/ as root, it
          should still recognize all folders. (see the 2 IMAP setup in the Use Cases section.

USE CASES

   Sync from GMail to another IMAP server
       This is an example of a setup where "TheOtherImap" requires all folders to be under INBOX:

       [Repository Gmailserver-foo]
       #This is the remote repository
       type = Gmail
       remotepass = XXX
       remoteuser = XXX
       # The below will put all GMAIL folders as sub-folders of the 'local' INBOX,
       # assuming that your path separator on 'local' is a dot.
       nametrans = lambda x: 'INBOX.' + x

       [Repository TheOtherImap]
       #This is the 'local' repository
       type = IMAP
       remotehost = XXX
       remotepass = XXX
       remoteuser = XXX
       #Do not use nametrans here.

   Selecting only a few folders to sync
       Add this to the remote gmail repository section to only sync mails which are in a  certain
       folder:

       folderfilter = lambda folder: folder.startswith('MyLabel')

       To only get the All Mail folder from a Gmail account, you would e.g. do:

       folderfilter = lambda folder: folder.startswith('[Gmail]/All Mail')

   Another nametrans transpose example
       Put  everything  in  a  GMX.  subfolder  except for the boxes INBOX, Draft, and Sent which
       should keep the same name:

       nametrans: lambda folder: folder if folder in ['INBOX', 'Drafts', 'Sent'] \
                                 else re.sub(r'^', r'GMX.', folder)

   2 IMAP using name translations
       Synchronizing 2 IMAP accounts to local Maildirs that are "next to  each  other",  so  that
       mutt   can   work   on   both.   Full   email   setup   described   by   Thomas  Kahle  at
       http://dev.gentoo.org/~tomka/mail.html

       offlineimap.conf:

       [general]
       accounts = acc1, acc2
       maxsyncaccounts = 2
       ui = ttyui
       pythonfile=~/bin/offlineimap-helpers.py
       socktimeout = 90

       [Account acc1]
       localrepository = acc1local
       remoterepository = acc1remote
       autorefresh = 2

       [Account acc2]
       localrepository = acc2local
       remoterepository = acc2remote
       autorefresh = 4

       [Repository acc1local]
       type = Maildir
       localfolders = ~/Mail/acc1

       [Repository acc2local]
       type = Maildir
       localfolders = ~/Mail/acc2

       [Repository acc1remote]
       type = IMAP
       remotehost = imap.acc1.com
       remoteusereval = get_username("imap.acc1.net")
       remotepasseval = get_password("imap.acc1.net")
       nametrans = oimaptransfolder_acc1
       ssl = yes
       maxconnections = 2
       # Folders to get:
       folderfilter = lambda foldername: foldername in [
                    'INBOX', 'Drafts', 'Sent', 'archiv']

       [Repository acc2remote]
       type = IMAP
       remotehost = imap.acc2.net
       remoteusereval = get_username("imap.acc2.net")
       remotepasseval = get_password("imap.acc2.net")
       nametrans = oimaptransfolder_acc2
       ssl = yes
       maxconnections = 2

       One of the coolest things about offlineimap is that you can  call  arbitrary  python  code
       from your configuration.  To do this, specify a pythonfile with:

       pythonfile=~/bin/offlineimap-helpers.py

       Your pythonfile needs to contain implementations for the functions that you want to use in
       offflineimaprc.  The example uses  it  for  two  purposes:  Fetching  passwords  from  the
       gnome-keyring and translating folder names on the server to local foldernames.  An example
       implementation of get_username and get_password showing  how  to  query  gnome-keyring  is
       contained  in http://dev.gentoo.org/~tomka/mail-setup.tar.bz2 The folderfilter is a lambda
       term that,  well,  filters  which  folders  to  get.  The  function  oimaptransfolder_acc2
       translates  remote  folders  into local folders with a very simple logic. The INBOX folder
       will have the same name as the account while any other folder will have the  account  name
       and  a  dot  as  a  prefix. This is useful for hierarchichal display in mutt.  Offlineimap
       handles the renaming correctly in both directions:

       import re
       def oimaptransfolder_acc1(foldername):
           if(foldername == "INBOX"):
               retval = "acc1"
           else:
               retval = "acc1." + foldername
           retval = re.sub("/", ".", retval)
           return retval

       def oimaptransfolder_acc2(foldername):
           if(foldername == "INBOX"):
               retval = "acc2"
           else:
               retval = "acc2." + foldername
           retval = re.sub("/", ".", retval)
           return retval

AUTHOR

       John Goerzen <jgoerzen@complete.org> & contributors

COPYRIGHT

       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.

                                            2012-02-23                             OFFLINEIMAP(1)