doc: migrate from SGML to restructuredtext
This is a great move to help contributors in maintaining documentation. While doing huge changes in this area, do a bit more than simply SGML to rst: * move README from markdown to rst * make a "true" man page with no more information * refactor content and sections Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
This commit is contained in:
384
docs/FAQ.rst
Normal file
384
docs/FAQ.rst
Normal file
@ -0,0 +1,384 @@
|
||||
.. -*- coding: utf-8 -*-
|
||||
|
||||
.. NOTE TO MAINTAINERS: Please add new questions to the end of their
|
||||
sections, so section/question numbers remain stable.
|
||||
|
||||
|
||||
=============================================
|
||||
OfflineIMAP FAQ (Frequently Asked Questions)
|
||||
=============================================
|
||||
|
||||
:Web site: https://github.com/nicolas33/offlineimap
|
||||
:Copyright: This document is licensed under GPLv2.
|
||||
|
||||
.. contents::
|
||||
.. sectnum::
|
||||
|
||||
|
||||
This is a work in progress.
|
||||
|
||||
Please feel free to ask questions and/or provide answers; send email to the
|
||||
`mailing list`_.
|
||||
|
||||
.. _mailing list: http://lists.alioth.debian.org/mailman/listinfo/offlineimap-project
|
||||
.. _OfflineIMAP: https://github.com/nicolas33/offlineimap
|
||||
|
||||
|
||||
OfflineIMAP
|
||||
===========
|
||||
|
||||
Where do I get OfflineIMAP?
|
||||
---------------------------
|
||||
|
||||
See the information on the Home page `OfflineIMAP`_.
|
||||
|
||||
How fast is it?
|
||||
---------------
|
||||
|
||||
OfflineIMAP has a multithreaded sync, so it should have very nice performance.
|
||||
|
||||
OfflineIMAP versions 2.0 and above contain a multithreaded system. A good way
|
||||
to experiment is by setting maxsyncaccounts to 3 and maxconnections to 3 in
|
||||
each account clause.
|
||||
|
||||
This lets OfflineIMAP open up multiple connections simultaneously. That will
|
||||
let it process multiple folders and messages at once. In most cases, this will
|
||||
increase performance of the sync.
|
||||
|
||||
Don’t set the number too high. If you do that, things might actually slow down
|
||||
as your link gets saturated. Also, too many connections can cause mail servers
|
||||
to have excessive load. Administrators might take unkindly to this, and the
|
||||
server might bog down. There are many variables in the optimal setting;
|
||||
experimentation may help.
|
||||
|
||||
An informal benchmark yields these results for my setup::
|
||||
|
||||
* 10 minutes with MacOS X Mail.app “manual cache”
|
||||
* 5 minutes with GNUS agent sync
|
||||
* 20 seconds with OfflineIMAP 1.x
|
||||
* 9 seconds with OfflineIMAP 2.x
|
||||
* 3 seconds with OfflineIMAP 3.x “cold start”
|
||||
* 2 seconds with OfflineIMAP 3.x “held connection”
|
||||
|
||||
What platforms does OfflineIMAP support?
|
||||
----------------------------------------
|
||||
|
||||
It should run on most platforms supported by Python, which are quite a few. I
|
||||
do not support Windows myself, but some have made it work there. Use on
|
||||
Windows
|
||||
|
||||
These answers have been reported by OfflineIMAP users. I do not run OfflineIMAP
|
||||
on Windows myself, so I can’t directly address their accuracy.
|
||||
|
||||
The basic answer is that it’s possible and doesn’t require hacking OfflineIMAP
|
||||
source code. However, it’s not necessarily trivial. The information below is
|
||||
based in instructions submitted by Chris Walker.
|
||||
|
||||
First, you must run OfflineIMAP in the Cygwin environment. The Windows
|
||||
filesystem is not powerful enough to accomodate Maildir by itself.
|
||||
|
||||
Next, you’ll need to mount your Maildir directory in a special way. There is
|
||||
information for doing that at http://barnson.org/node/295. That site gives this
|
||||
example::
|
||||
|
||||
mount -f -s -b -o managed "d:/tmp/mail" "/home/of/mail"
|
||||
|
||||
That URL also has more details on making OfflineIMAP work with Windows.
|
||||
|
||||
|
||||
Does OfflineIMAP support mbox, mh, or anything else other than Maildir?
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Not directly. Maildir was the easiest to implement. I’m not planning to write
|
||||
mbox code for OfflineIMAP, though if someone sent me well-written mbox support
|
||||
and pledged to support it, I’d commit it to the tree.
|
||||
|
||||
However, OfflineIMAP can directly sync accounts on two different IMAP servers
|
||||
together. So you could install an IMAP server on your local machine that
|
||||
supports mbox, sync to it, and then instruct your mail readers to use the
|
||||
mboxes.
|
||||
|
||||
Or you could install whatever IMAP server you like on the local machine, and
|
||||
point your mail readers to that IMAP server on localhost.
|
||||
|
||||
What is the 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/LocalStatus/INBOX
|
||||
rm -r ~/.offlineimap/Repository-RemoteRepositoryName/FolderValidity/INBOX
|
||||
|
||||
(Of course, replace AccountName and RemoteRepositoryName 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 `mailing list`_. You can find a detailed
|
||||
discussion of the problem there
|
||||
http://lists.complete.org/offlineimap@complete.org/2003/04/msg00012.html.gz.
|
||||
|
||||
How do I add or delete a folder?
|
||||
--------------------------------
|
||||
|
||||
OfflineIMAP does not currently provide this feature. However, if you create a
|
||||
new folder on the remote server, OfflineIMAP will detect this and create the
|
||||
corresponding folder locally automatically.
|
||||
|
||||
May I delete 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.)
|
||||
|
||||
Can I run multiple instances?
|
||||
-----------------------------
|
||||
|
||||
`OfflineIMAP`_ is not designed to have several instances (for instance, a cron
|
||||
job and an interactive invocation) run over the same mailbox simultaneously.
|
||||
It will perform a check on startup and abort if another `OfflineIMAP`_ is
|
||||
already running. If you need to schedule synchronizations, you'll probably
|
||||
find autorefresh settings more convenient than cron. Alternatively, you can
|
||||
set a separate metadata directory for each instance.
|
||||
|
||||
Can I copy messages between folders?
|
||||
---------------------------------------
|
||||
|
||||
Normally, when you copy a message between folders or add a new message to a
|
||||
folder locally, `OfflineIMAP`_ will just do the right thing. However,
|
||||
sometimes this can be tricky ― if your IMAP server does not provide the SEARCH
|
||||
command, or does not return something useful, `OfflineIMAP`_ cannot determine
|
||||
the new UID of the message. So, in these rare instances, OfflineIMAP will
|
||||
upload the message to the IMAP server and delete it from your local folder.
|
||||
Then, on your next sync, the message will be re-downloaded with the proper UID.
|
||||
`OfflineIMAP`_ makes sure that the message was properly uploaded before
|
||||
deleting it, so there should be no risk of data loss.
|
||||
|
||||
Does OfflineIMAP support POP?
|
||||
-----------------------------
|
||||
|
||||
No. POP is not robust enough to do a completely reliable multi-machine sync
|
||||
like OfflineIMAP can do.
|
||||
|
||||
OfflineIMAP will never support POP.
|
||||
|
||||
How is OfflineIMAP conformance?
|
||||
-------------------------------
|
||||
|
||||
* Internet Message Access Protocol version 4rev1 (IMAP 4rev1) as specified in
|
||||
`2060`:RFC: and `3501`:RFC:
|
||||
* CRAM-MD5 as specified in `2195`:RFC:
|
||||
* Maildir as specified in the Maildir manpage and the qmail website
|
||||
* Standard Python 2.6 as implemented on POSIX-compliant systems
|
||||
|
||||
|
||||
Configuration Questions
|
||||
=======================
|
||||
|
||||
Can I synchronize multiple accounts with OfflineIMAP?
|
||||
-----------------------------------------------------
|
||||
|
||||
Of course!
|
||||
|
||||
Just name them all in the accounts line in the general section of the
|
||||
configuration file, and add a per-account section for each one.
|
||||
|
||||
You can also optionally use the -a option when you run OfflineIMAP to request
|
||||
that it only operate upon a subset of the accounts for a particular run.
|
||||
|
||||
How do I specify the names of folders?
|
||||
--------------------------------------
|
||||
|
||||
You do not need to. OfflineIMAP is smart enough to automatically figure out
|
||||
what folders are present on the IMAP server and synchronize them. You can use
|
||||
the folderfilter and nametrans configuration file options to request only
|
||||
certain folders and rename them as they come in if you like.
|
||||
|
||||
How do I prevent certain folders from being synced?
|
||||
---------------------------------------------------
|
||||
|
||||
Use the folderfilter option.
|
||||
|
||||
What is the mailbox name recorder (mbnames) for?
|
||||
------------------------------------------------
|
||||
|
||||
Some mail readers, such as mutt, are not capable of automatically determining the names of your mailboxes. OfflineIMAP can help these programs by writing the names of the folders in a format you specify. See the example offlineimap.conf for details.
|
||||
|
||||
IMAP Server Notes
|
||||
=================
|
||||
|
||||
In general, OfflineIMAP works with any IMAP server that provides compatibility
|
||||
with the IMAP RFCs. Some servers provide imperfect compatibility that may be
|
||||
good enough for general clients. OfflineIMAP needs more features, specifically
|
||||
support for UIDs, in order to do its job accurately and completely.
|
||||
|
||||
Microsoft Exchange
|
||||
------------------
|
||||
|
||||
Several users have reported problems with Microsoft Exchange servers in
|
||||
conjunction with OfflineIMAP. This generally seems to be related to the
|
||||
Exchange servers not properly following the IMAP standards.
|
||||
|
||||
Mark Biggers has posted some information to the OfflineIMAP `mailing list`_
|
||||
about how he made it work.
|
||||
|
||||
Other users have indicated that older (5.5) releases of Exchange are so bad
|
||||
that they will likely not work at all.
|
||||
|
||||
I do not have access to Exchange servers for testing, so any problems with it,
|
||||
if they can even be solved at all, will require help from OfflineIMAP users to
|
||||
find and fix.
|
||||
|
||||
|
||||
Client Notes
|
||||
============
|
||||
|
||||
What clients does OfflineIMAP work with?
|
||||
----------------------------------------
|
||||
|
||||
Any client that supports Maildir. Popular ones include mutt, Evolution and
|
||||
KMail. Thunderbird does not have maildir suppport.
|
||||
|
||||
With OfflineIMAP’s IMAP-to-IMAP syncing, this can be even wider; see the next
|
||||
question.
|
||||
|
||||
Evolution
|
||||
---------
|
||||
|
||||
OfflineIMAP can work with Evolution. To do so, first configure your OfflineIMAP
|
||||
account to have sep = / in its configuration. Then, configure Evolution with
|
||||
the “Maildir-format mail directories” server type. For the path, you will need
|
||||
to specify the name of the top-level folder inside your OfflineIMAP storage
|
||||
location. You’re now set!
|
||||
|
||||
KMail
|
||||
-----
|
||||
|
||||
At this time, I believe that OfflineIMAP with Maildirs is not compatible with
|
||||
KMail. KMail cannot work in any mode other than to move all messages out of all
|
||||
folders immediately, which (besides being annoying and fundamentally broken) is
|
||||
incompatible with OfflineIMAP.
|
||||
|
||||
However, I have made KMail version 3 work well with OfflineIMAP by installing
|
||||
an IMAP server on my local machine, having OfflineIMAP sync to that, and
|
||||
pointing KMail at the same server.
|
||||
|
||||
Another way to see mails downloaded with offlineimap in KMail (KDE4) is to
|
||||
create a local folder (e.g. Backup) and then use ``ln -s
|
||||
localfolders_in_offlineimaprc ~/.kde/share/apps/kmail/mail/.Backup.directory``.
|
||||
Maybe you have to rebuild the index of the new folder. Works well with KMail
|
||||
1.11.4 (KDE4.x), offlineimap 6.1.2 and ArchLinux and sep = / in .offlineimaprc.
|
||||
|
||||
Mutt
|
||||
----
|
||||
|
||||
* Do I need to use set maildir_trash?
|
||||
|
||||
Other IMAP sync programs require you to do this. OfflineIMAP does not. You’ll
|
||||
get the best results without it, in fact, though turning it on won’t hurt
|
||||
anything.
|
||||
|
||||
* How do I set up mbnames with mutt?
|
||||
|
||||
The example offlineimap.conf file has this example. In your offlineimap.conf,
|
||||
you’ll list this::
|
||||
|
||||
[mbnames]
|
||||
enabled = yes
|
||||
filename = ~/Mutt/muttrc.mailboxes
|
||||
header = "mailboxes "
|
||||
peritem = "+%(accountname)s/%(foldername)s"
|
||||
sep = " "
|
||||
footer = "\n"
|
||||
|
||||
Then in your ``.muttrc``::
|
||||
|
||||
source ~/Mutt/muttrc.mailboxes
|
||||
|
||||
|
||||
You might also want to set::
|
||||
|
||||
set mbox_type=Maildir
|
||||
set folder=$HOME/Maildirpath
|
||||
|
||||
The OfflineIMAP manual has a more detailed example for doing this for multiple
|
||||
accounts.
|
||||
|
||||
Miscellaneous Questions
|
||||
=======================
|
||||
|
||||
Why are your Maildir message filenames so long?
|
||||
-----------------------------------------------
|
||||
|
||||
OfflineIMAP has two relevant principles: 1) never modifying your messages in
|
||||
any way and 2) ensuring 100% reliable synchronizations. In order to do a
|
||||
reliable sync, OfflineIMAP must have a way to uniquely identify each e-mail.
|
||||
Three pieces of information are required to do this: your account name, the
|
||||
folder name, and the message UID. The account name can be calculated from the
|
||||
path in which your messages are. The folder name can usually be as well, BUT
|
||||
some mail clients move messages between folders by simply moving the file,
|
||||
leaving the name intact.
|
||||
|
||||
So, OfflineIMAP must store both a UID folder ID. The folder ID is necessary so
|
||||
OfflineIMAP can detect a message moved to a different folder. OfflineIMAP
|
||||
stores the UID (U= number) and an md5sum of the foldername (FMD5= number) to
|
||||
facilitate this.
|
||||
|
||||
|
||||
What can I do to ensure OfflineIMAP is still running and hasn’t crashed?
|
||||
------------------------------------------------------------------------
|
||||
|
||||
This shell script will restart OfflineIMAP if it has crashed. Sorry, its
|
||||
written in Korn, so you’ll need ksh, pdksh, or mksh to run it::
|
||||
|
||||
#!/bin/ksh
|
||||
# remove any old instances of this shell script or offlineimap
|
||||
for pid in $(pgrep offlineimap)
|
||||
do
|
||||
if $pid -ne $$
|
||||
then
|
||||
kill $pid
|
||||
fi
|
||||
done
|
||||
|
||||
# wait for compiz (or whatever) to start and setup wifi
|
||||
sleep 20
|
||||
# If offlineimap exits, restart it
|
||||
while true
|
||||
do
|
||||
( exec /usr/bin/offlineimap -u Noninteractive.Quiet )
|
||||
sleep 60 # prevents extended failure condition
|
97
docs/INSTALL.rst
Normal file
97
docs/INSTALL.rst
Normal file
@ -0,0 +1,97 @@
|
||||
.. -*- coding: utf-8 -*-
|
||||
|
||||
.. _OfflineIMAP: https://github.com/nicolas33/offlineimap
|
||||
|
||||
.. contents::
|
||||
.. sectnum::
|
||||
|
||||
=============
|
||||
Prerequisites
|
||||
=============
|
||||
|
||||
In order to use `OfflineIMAP`_, you need to have these conditions satisfied:
|
||||
|
||||
1. Your mail server must support IMAP. Most Internet Service Providers and
|
||||
corporate networks do, and most operating systems have an IMAP implementation
|
||||
readily available. A special Gmail mailbox type is available to interface with
|
||||
Gmail's IMAP front-end.
|
||||
|
||||
2. You must have Python version 2.6 or above installed. If you are running on
|
||||
Debian GNU/Linux, this requirement will automatically be taken care of for you.
|
||||
If you do not have Python already, check with your system administrator or
|
||||
operating system vendor; or, download it from the Python website. If you intend
|
||||
to use the SSL interface, your Python must have been built with SSL support.
|
||||
|
||||
3. 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.
|
||||
|
||||
|
||||
============
|
||||
Installation
|
||||
============
|
||||
|
||||
You have three options:
|
||||
|
||||
1. a system-wide installation with Debian
|
||||
2. a system-wide installation with other systems
|
||||
3. a single-user installation. You can checkout the latest version of
|
||||
`OfflineIMAP`_ from official `OfflineIMAP`_ repository.
|
||||
|
||||
|
||||
System-Wide Installation, Debian
|
||||
================================
|
||||
|
||||
If you are tracking Debian unstable, you may install `OfflineIMAP`_ by simply
|
||||
running the following command as root::
|
||||
|
||||
apt-get install offlineimap
|
||||
|
||||
If you are not tracking Debian unstable, download the Debian `.deb` package from
|
||||
the `OfflineIMAP`_ website and then run ``dpkg -i`` to install the downloaded
|
||||
package. Then, skip to below. You will type offlineimap to invoke the
|
||||
program.
|
||||
|
||||
System-Wide Installation, Other
|
||||
===============================
|
||||
|
||||
Download the tar.gz version of the package from the website. Then run these
|
||||
commands, making sure that you are the "root" user first::
|
||||
|
||||
tar -zxvf offlineimap_x.y.z.tar.gz
|
||||
cd offlineimap-x.y.z
|
||||
python2.2 setup.py install
|
||||
|
||||
On some systems, you will need to use python instead of python2.6. Next,
|
||||
proceed to below. You will type offlineimap to invoke the program.
|
||||
|
||||
Single-Account Installation
|
||||
===========================
|
||||
|
||||
Download the tar.gz version of the package from the website. Then run these
|
||||
commands::
|
||||
|
||||
tar -zxvf offlineimap_x.y.z.tar.gz
|
||||
cd offlineimap-x.y.z
|
||||
|
||||
When you want to run `OfflineIMAP`_, you will issue the cd command as above and
|
||||
then type `./offlineimap.py`; there is no installation step necessary.
|
||||
|
||||
=============
|
||||
Configuration
|
||||
=============
|
||||
|
||||
`OfflineIMAP`_ is regulated by a configuration file that is normally stored in
|
||||
`~/.offlineimaprc`. `OfflineIMAP`_ ships with a file named `offlineimap.conf`
|
||||
that you should copy to that location and then edit. This file is vital to
|
||||
proper operation of the system; it sets everything you need to run
|
||||
`OfflineIMAP`_. Full documentation for the configuration file is included
|
||||
within the sample file.
|
||||
|
||||
|
||||
`OfflineIMAP`_ also ships a file named `offlineimap.conf.minimal` that you can
|
||||
also try. It's useful if you want to get started with the most basic feature
|
||||
set, and you can read about other features later with `offlineimap.conf`.
|
271
docs/MANUAL.rst
Normal file
271
docs/MANUAL.rst
Normal file
@ -0,0 +1,271 @@
|
||||
====================
|
||||
OfflineIMAP Manual
|
||||
====================
|
||||
|
||||
--------------------------------------------------------
|
||||
Powerful IMAP/Maildir synchronization and reader support
|
||||
--------------------------------------------------------
|
||||
|
||||
:Author: John Goerzen <jgoerzen@complete.org>
|
||||
:Date: 2011-01-15
|
||||
:Copyright: GPL v2
|
||||
:Manual section: 1
|
||||
|
||||
.. TODO: :Manual group:
|
||||
|
||||
|
||||
SYNOPSIS
|
||||
========
|
||||
|
||||
offlineimap [-h|--help]
|
||||
|
||||
offlineimap [OPTIONS]
|
||||
|
||||
| -1
|
||||
| -P profiledir
|
||||
| -a accountlist
|
||||
| -c configfile
|
||||
| -d debugtype[,...]
|
||||
| -f foldername[,...]
|
||||
| -k [section:]option=value
|
||||
| -l filename
|
||||
| -o
|
||||
| -u interface
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
===========
|
||||
|
||||
Most configuration is done via the configuration file. Nevertheless, there are
|
||||
a few command-line options that you may set for OfflineIMAP.
|
||||
|
||||
|
||||
OPTIONS
|
||||
=======
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-1 Disable most multithreading operations
|
||||
|
||||
Use solely a single-connection sync. This effectively sets the
|
||||
maxsyncaccounts and all maxconnections configuration file variables to 1.
|
||||
|
||||
|
||||
-P profiledir
|
||||
|
||||
Sets OfflineIMAP into profile mode. The program will create profiledir (it
|
||||
must not already exist). As it runs, Python profiling information about each
|
||||
thread is logged into profiledir. Please note: This option is present for
|
||||
debugging and optimization only, and should NOT be used unless you have a
|
||||
specific reason to do so. It will significantly slow program performance, may
|
||||
reduce reliability, and can generate huge amounts of data. You must use the
|
||||
-1 option when you use -P.
|
||||
|
||||
|
||||
-a accountlist
|
||||
|
||||
Overrides the accounts option in the general section of the configuration
|
||||
file. You might use this to exclude certain accounts, or to sync some
|
||||
accounts that you normally prefer not to. Separate the accounts by commas,
|
||||
and use no embedded spaces.
|
||||
|
||||
|
||||
-c configfile
|
||||
|
||||
Specifies a configuration file to use in lieu of the default,
|
||||
``~/.offlineimaprc``.
|
||||
|
||||
|
||||
-d debugtype[,...]
|
||||
|
||||
Enables debugging for OfflineIMAP. This is useful if you are trying to track
|
||||
down a malfunction or figure out what is going on under the hood. I suggest
|
||||
that you use this with -1 to make the results more sensible.
|
||||
|
||||
-d requires one or more debugtypes, separated by commas. These define what
|
||||
exactly will be debugged, and include three options: imap, maildir, and
|
||||
thread. The imap option will enable IMAP protocol stream and parsing
|
||||
debugging. Note that the output may contain passwords, so take care to remove
|
||||
that from the debugging output before sending it to anyone else. The maildir
|
||||
option will enable debugging for certain Maildir operations. And thread will
|
||||
debug the threading model.
|
||||
|
||||
|
||||
-f foldername[,foldername]
|
||||
|
||||
Only sync the specified folders. The foldernames are the untranslated
|
||||
foldernames. This command-line option overrides any folderfilter and
|
||||
folderincludes options in the configuration file.
|
||||
|
||||
|
||||
-k [section:]option=value
|
||||
|
||||
Override configuration file option. If "section" is omitted, it defaults to
|
||||
general. Any underscores "_" in the section name are replaced with spaces:
|
||||
for instance, to override option autorefresh in the "[Account Personal]"
|
||||
section in the config file one would use "-k Account_Personal:autorefresh=30".
|
||||
You may give more than one -k on the command line if you wish.
|
||||
|
||||
|
||||
-l filename
|
||||
|
||||
Enables logging to filename. This will log everything that goes to the screen
|
||||
to the specified file. Additionally, if any debugging is specified with -d,
|
||||
then debug messages will not go to the screen, but instead to the logfile
|
||||
only.
|
||||
|
||||
|
||||
-o Run only once,
|
||||
|
||||
ignoring all autorefresh settings in the configuration file.
|
||||
|
||||
|
||||
-q Run only quick synchronizations.
|
||||
|
||||
Ignore any flag updates on IMAP servers.
|
||||
|
||||
|
||||
-h|--help Show summary of options.
|
||||
|
||||
|
||||
-u interface
|
||||
|
||||
Specifies an alternative user interface module to use. This overrides the
|
||||
default specified in the configuration file. The pre-defined options are
|
||||
listed in the User Interfaces section.
|
||||
|
||||
|
||||
User Interfaces
|
||||
===============
|
||||
|
||||
OfflineIMAP has a pluggable user interface system that lets you choose how the
|
||||
program communicates information to you. There are two graphical interfaces,
|
||||
two terminal interfaces, and two noninteractive interfaces suitable for
|
||||
scripting or logging purposes. The ui option in the configuration file
|
||||
specifies user interface preferences. The -u command-line option can override
|
||||
the configuration file setting. The available values for the configuration file
|
||||
or command-line are described in this section.
|
||||
|
||||
|
||||
Curses.Blinkenlights
|
||||
--------------------
|
||||
|
||||
Curses.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.
|
||||
|
||||
|
||||
Curses.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.
|
||||
|
||||
|
||||
TTY.TTYUI
|
||||
---------
|
||||
|
||||
TTY.TTYUI interface is for people running in basic, non-color terminals. It
|
||||
prints out basic status messages and is generally friendly to use on a console
|
||||
or xterm.
|
||||
|
||||
|
||||
Noninteractive.Basic
|
||||
--------------------
|
||||
|
||||
Noninteractive.Basic is designed for situations in which OfflineIMAP will be run
|
||||
non-attended and the status of its execution will be logged. You might use it,
|
||||
for instance, to have the system run automatically and e-mail you the results of
|
||||
the synchronization. This user interface is not capable of reading a password
|
||||
from the keyboard; account passwords must be specified using one of the
|
||||
configuration file options.
|
||||
|
||||
|
||||
Noninteractive.Quiet
|
||||
--------------------
|
||||
|
||||
Noninteractive.Quiet is designed for non-attended running in situations where
|
||||
normal status messages are not desired. It will output nothing except errors
|
||||
and serious warnings. Like Noninteractive.Basic, this user interface is not
|
||||
capable of reading a password from the keyboard; account passwords must be
|
||||
specified using one of the configuration file options.
|
||||
|
||||
|
||||
Machine.MachineUI
|
||||
-----------------
|
||||
|
||||
Machine.MachineUI generates output in a machine-parsable format. It is designed
|
||||
for other programs that will interface to OfflineIMAP.
|
||||
|
||||
|
||||
KNOWN BUGS
|
||||
==========
|
||||
|
||||
SEE ALSO
|
||||
========
|
24
docs/Makefile
Normal file
24
docs/Makefile
Normal file
@ -0,0 +1,24 @@
|
||||
# This program is free software under the terms of the GNU General Public
|
||||
# License. See the COPYING file which must come with this package.
|
||||
|
||||
SOURCES = $(wildcard *.rst)
|
||||
HTML_TARGETS = $(patsubst %.rst,%.html,$(SOURCES))
|
||||
|
||||
RM = rm
|
||||
|
||||
all: html
|
||||
|
||||
html: $(HTML_TARGETS)
|
||||
|
||||
$(HTML_TARGETS): %.html : %.rst
|
||||
rst2html.py $? $@
|
||||
|
||||
man: offlineimap.1
|
||||
|
||||
offlineimap.1: MANUAL.rst
|
||||
rst2man.py MANUAL.rst offlineimap.1
|
||||
cp -f offlineimap.1 ..
|
||||
|
||||
clean:
|
||||
$(RM) -f $(HTML_TARGETS)
|
||||
$(RM) -f offlineimap.1 ../offlineimap.1
|
26
docs/UPGRADE.rst
Normal file
26
docs/UPGRADE.rst
Normal file
@ -0,0 +1,26 @@
|
||||
|
||||
|
||||
Upgrading to 4.0
|
||||
----------------
|
||||
|
||||
If you are upgrading from a version of OfflineIMAP prior to 3.99.12, you will
|
||||
find that you will get errors when OfflineIMAP starts up (relating to
|
||||
ConfigParser or AccountHashGenerator) and the configuration file. This is
|
||||
because the config file format had to change to accommodate new features in 4.0.
|
||||
Fortunately, it's not difficult to adjust it to suit.
|
||||
|
||||
|
||||
First thing you need to do is stop any running OfflineIMAP instance, making sure
|
||||
first that it's synced all your mail. Then, modify your `~/.offlineimaprc` file.
|
||||
You'll need to split up each account section (make sure that it now starts with
|
||||
"Account ") into two Repository sections (one for the local side and another for
|
||||
the remote side.) See the files offlineimap.conf.minimal and offlineimap.conf
|
||||
in the distribution if you need more assistance.
|
||||
|
||||
|
||||
OfflineIMAP's status directory area has also changed. Therefore, you should
|
||||
delete everything in `~/.offlineimap` as well as your local mail folders.
|
||||
|
||||
|
||||
When you start up OfflineIMAP 4.0, it will re-download all your mail from the
|
||||
server and then you can continue using it like normal.
|
@ -1,187 +0,0 @@
|
||||
# -*- Mode: makefile; -*-
|
||||
#
|
||||
# Common Makefile for SGML documents
|
||||
#
|
||||
# Copyright (C) 2002, 2003 John Goerzen
|
||||
# <jgoerzen@complete.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
# The following variables should be set:
|
||||
# MASTERBASE -- basename of master file -- example: linux-guide
|
||||
# BASICDEPS -- various dependencies of the master file. For instance,
|
||||
# this might include files included in the SGML. It could also be empty.
|
||||
# TOPNODE -- Basename of top id for HTML link.
|
||||
|
||||
MASTER := $(MASTERBASE).sgml
|
||||
FIGUREDIRS := $(wildcard figures/*)
|
||||
DOINDEX ?= yes
|
||||
|
||||
######################################################################
|
||||
# Index generation
|
||||
######################################################################
|
||||
|
||||
ifeq ($(DOINDEX), yes)
|
||||
|
||||
INDEXSGMLFILE := index/index.sgml
|
||||
INDEXDATAFILE := index/HTML.index
|
||||
|
||||
$(INDEXSGMLFILE): $(INDEXDATAFILE)
|
||||
@echo " *** Generating SGML index from index list"
|
||||
collateindex.pl -i ch.index -g -o index/index.sgml index/HTML.index
|
||||
|
||||
$(INDEXDATAFILE): $(MASTER) $(BASICDEPS)
|
||||
# jade -t sgml -d docbook.dsl -V html-index $(MASTER)
|
||||
# jade -t sgml -V html-index $(MASTER)
|
||||
@echo " *** Generating index list from document"
|
||||
-rm -r index
|
||||
mkdir index
|
||||
collateindex.pl -i ch.index -N -o index/index.sgml
|
||||
#mkdir html-temp
|
||||
#docbook2html --output html-temp -V html-index $(MASTER)
|
||||
docbook-2-html -O -V -O html-index $(HTMLARGS) $(MASTER)
|
||||
mv $(MASTERBASE)-html/HTML.index index/
|
||||
rm -r $(MASTERBASE)-html
|
||||
endif # DOINDEX
|
||||
|
||||
######################################################################
|
||||
# PostScript generation
|
||||
######################################################################
|
||||
|
||||
$(MASTERBASE).ps: $(MASTER) $(BASICDEPS) $(INDEXSGMLFILE) $(EPSFILES)
|
||||
@echo " *** Generating PostScript output"
|
||||
# This works too: docbook2ps -V paper-size=Letter $(MASTER)
|
||||
docbook-2-ps -q -O -V -O paper-size=Letter $(PSARGS) $(MASTER)
|
||||
|
||||
######################################################################
|
||||
# Figure generation
|
||||
######################################################################
|
||||
|
||||
%_1.epi: %.ps
|
||||
$(get-epi)
|
||||
%_2.epi: %.ps
|
||||
$(get-epi)
|
||||
%_3.epi: %.ps
|
||||
$(get-epi)
|
||||
%_4.epi: %.ps
|
||||
$(get-epi)
|
||||
%_5.epi: %.ps
|
||||
$(get-epi)
|
||||
%_6.epi: %.ps
|
||||
$(get-epi)
|
||||
%_7.epi: %.ps
|
||||
$(get-epi)
|
||||
%_8.epi: %.ps
|
||||
$(get-epi)
|
||||
%_9.epi: %.ps
|
||||
$(get-epi)
|
||||
%_10.epi: %.ps
|
||||
$(get-epi)
|
||||
%_11.epi: %.ps
|
||||
$(get-epi)
|
||||
%_12.epi: %.ps
|
||||
$(get-epi)
|
||||
|
||||
%.png: %.epi
|
||||
@echo " *** Generating PNG image for $<"
|
||||
gs -q -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r90 -dBATCH -dNOPAUSE \
|
||||
-dSAFER -sOutputFile=$@ -sDEVICE=png16m $< -c showpage
|
||||
|
||||
%.ps: %.pdf
|
||||
pdftops $<
|
||||
|
||||
######################################################################
|
||||
# HTML generation
|
||||
######################################################################
|
||||
|
||||
define copy-figures-worker
|
||||
mkdir html/figures
|
||||
for DIRECTORY in $(FIGUREDIRS); do mkdir html/$$DIRECTORY; cp -v $$DIRECTORY/*.png html/$$DIRECTORY/; done
|
||||
endef
|
||||
|
||||
define copy-figures
|
||||
$(if $(FIGUREDIRS),$(copy-figures-worker))
|
||||
endef
|
||||
|
||||
html/index.html: $(MASTER) $(BASICDEPS) $(INDEXSGMLFILE) $(PNGFILES)
|
||||
@echo " *** Generating HTML output"
|
||||
-rm -r html
|
||||
mkdir html
|
||||
#docbook2html --output html $(MASTER)
|
||||
docbook-2-html $(HTMLARGS) $(MASTER)
|
||||
mv $(MASTERBASE)-html/* html/
|
||||
rmdir $(MASTERBASE)-html
|
||||
$(copy-figures)
|
||||
# tidy -m html/*.html
|
||||
ln -s $(TOPNODE).html html/index.html
|
||||
-cp -v /usr/share/gtk-doc/*.png html/
|
||||
|
||||
######################################################################
|
||||
# Cleaning
|
||||
######################################################################
|
||||
|
||||
clean:
|
||||
-rm -f `find . -name "*~"` `find . -name "*.png"` `find . -name "*.epi"`
|
||||
-rm -r html-temp linux-guide-html html index
|
||||
-rm *.aux *.log *.dvi *.tex *.jtex *.ps *.html *.log *.out jadetex.cfg
|
||||
-rm *.ps html/*.html figures/topology/*.epi figures/topology/*.png
|
||||
-rm *.log *.pdb
|
||||
-rm `find . -name ".ps"` `find . -name "*.epi"` *.pdf
|
||||
-rm `find . -name "*.png"`
|
||||
|
||||
######################################################################
|
||||
# Utility functions
|
||||
######################################################################
|
||||
|
||||
GETPAGE=$(shell echo $(1) | sed -e "s/^.*_\([0-9]*\).epi/\\1/g")
|
||||
define get-epi
|
||||
@echo " *** Generating EPI image for $<"
|
||||
psselect -q $(call GETPAGE,$@) $< temp.ps
|
||||
psresize -w 6.375in -h 8.25in temp.ps temp2.ps
|
||||
../sgml-common/ps2epsi temp2.ps $@
|
||||
rm temp.ps temp2.ps
|
||||
endef
|
||||
|
||||
pdf: $(MASTERBASE).pdf
|
||||
|
||||
$(MASTERBASE).pdf: $(MASTERBASE).ps
|
||||
ps2pdf14 $(MASTERBASE).ps
|
||||
|
||||
plucker: $(MASTERBASE).pdb
|
||||
$(MASTERBASE).pdb: html
|
||||
plucker-build --bpp=4 --compression=zlib --doc-name="$(MASTERBASE)" \
|
||||
-H file:`pwd`/html/index.html -M 5 \
|
||||
--maxheight=320 --maxwidth=310 \
|
||||
--staybelow=file:`pwd`/html --title="$(MASTERBASE)" -p . \
|
||||
-f $(MASTERBASE)
|
||||
|
||||
###########################################################################
|
||||
# These are obsolete but should still work.
|
||||
###########################################################################
|
||||
|
||||
|
||||
$(MASTERBASE).dvi: $(MASTERBASE).tex
|
||||
@echo " *** Generating DVI file."
|
||||
jadetex unix-guide.tex
|
||||
jadetex unix-guide.tex
|
||||
jadetex unix-guide.tex
|
||||
|
||||
$(MASTERBASE).tex: $(MASTER) $(BASICDEPS) $(INDEXSGMLFILE)
|
||||
@echo " *** Generating TeX files."
|
||||
docbook2tex -V paper-size=Letter $(MASTER)
|
||||
# jade -t tex -V tex-backend -d \
|
||||
# /usr/share/sgml/docbook/stylesheet/dsssl/modular/print/docbook.dsl \
|
||||
# $(MASTER)
|
||||
|
@ -1,76 +0,0 @@
|
||||
#!/bin/sh
|
||||
# $RCSfile: ps2epsi,v $ $Revision: 1.4.2.2 $
|
||||
|
||||
tmpfile=/tmp/ps2epsi$$
|
||||
|
||||
export outfile
|
||||
|
||||
if [ $# -lt 1 -o $# -gt 2 ]; then
|
||||
echo "Usage: `basename $0` file.ps [file.epsi]" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
infile=$1;
|
||||
|
||||
if [ $# -eq 1 ]
|
||||
then
|
||||
case "${infile}" in
|
||||
*.ps) base=`basename ${infile} .ps` ;;
|
||||
*.cps) base=`basename ${infile} .cps` ;;
|
||||
*.eps) base=`basename ${infile} .eps` ;;
|
||||
*.epsf) base=`basename ${infile} .epsf` ;;
|
||||
*) base=`basename ${infile}` ;;
|
||||
esac
|
||||
outfile=${base}.epsi
|
||||
else
|
||||
outfile=$2
|
||||
fi
|
||||
|
||||
ls -l ${infile} |
|
||||
awk 'F==1 {
|
||||
cd="%%CreationDate: " $6 " " $7 " " $8;
|
||||
t="%%Title: " $9;
|
||||
f="%%For:" U " " $3;
|
||||
c="%%Creator: Ghostscript ps2epsi from " $9;
|
||||
next;
|
||||
}
|
||||
/^%!/ {next;}
|
||||
/^%%Title:/ {t=$0; next;}
|
||||
/^%%Creator:/ {c=$0; next;}
|
||||
/^%%CreationDate:/ {cd=$0; next;}
|
||||
/^%%For:/ {f=$0; next;}
|
||||
!/^%/ {
|
||||
print "/ps2edict 30 dict def";
|
||||
print "ps2edict begin";
|
||||
print "/epsititle (" t "\\n) def";
|
||||
print "/epsicreator (" c "\\n) def";
|
||||
print "/epsicrdt (" cd "\\n) def";
|
||||
print "/epsifor (" f "\\n) def";
|
||||
print "end";
|
||||
exit(0);
|
||||
}
|
||||
' U="$USERNAME$LOGNAME" F=1 - F=2 ${infile} >$tmpfile
|
||||
|
||||
gs -q -dNOPAUSE -dSAFER -dDELAYSAFER -r72 -sDEVICE=bit -sOutputFile=/dev/null $tmpfile ps2epsi.ps $tmpfile <${infile} 1>&2
|
||||
rm -f $tmpfile
|
||||
|
||||
(
|
||||
cat << BEGINEPS
|
||||
save countdictstack mark newpath /showpage {} def /setpagedevice {pop} def
|
||||
%%EndProlog
|
||||
%%Page 1 1
|
||||
BEGINEPS
|
||||
|
||||
cat ${infile} |
|
||||
sed -e '/^%%BeginPreview:/,/^%%EndPreview[^!-~]*$/d' -e '/^%!PS-Adobe/d'\
|
||||
-e '/^%%[A-Za-z][A-Za-z]*[^!-~]*$/d' -e '/^%%[A-Za-z][A-Za-z]*: /d'
|
||||
|
||||
cat << ENDEPS
|
||||
%%Trailer
|
||||
cleartomark countdictstack exch sub { end } repeat restore
|
||||
%%EOF
|
||||
ENDEPS
|
||||
|
||||
) >> ${outfile}
|
||||
|
||||
exit 0
|
Reference in New Issue
Block a user