/offlineimap/head: changeset 478
Added -l option. Updated documentation for it. Changed _msg to _display override in UI modules. Renamed "doc" to "docs" target in Makefile to avoid conflicting with a subdir.
This commit is contained in:
parent
d52c007857
commit
022655dddd
@ -17,7 +17,7 @@
|
||||
SHELL=/bin/bash
|
||||
|
||||
clean:
|
||||
-python2.2 setup.py clean --all
|
||||
-python2.3 setup.py clean --all
|
||||
-rm -f `find . -name "*~"`
|
||||
-rm -f `find . -name "*.tmp"`
|
||||
-rm -f bin/offlineimapc
|
||||
@ -34,7 +34,7 @@ clean:
|
||||
changelog:
|
||||
svn log -v > ChangeLog
|
||||
|
||||
docs:
|
||||
doc:
|
||||
docbook2man offlineimap.sgml
|
||||
docbook2man offlineimap.sgml
|
||||
docbook2html -u offlineimap.sgml
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python2.2
|
||||
#!/usr/bin/env python2.3
|
||||
# Startup from system-wide installation
|
||||
# Copyright (C) 2002, 2003 John Goerzen
|
||||
# <jgoerzen@complete.org>
|
||||
|
@ -1,6 +1,9 @@
|
||||
offlineimap (3.99.18) unstable; urgency=low
|
||||
|
||||
* Made a fix for Python2.3 compatibility.
|
||||
This application now defaults to Python2.3! If you do not have Python
|
||||
2.3, things may not work as expected.
|
||||
* Removed warning when thread debug is specified. Closes: #195739.
|
||||
|
||||
-- John Goerzen <jgoerzen@complete.org> Tue, 27 May 2003 16:58:54 -0500
|
||||
|
||||
|
@ -2,13 +2,13 @@ Source: offlineimap
|
||||
Section: mail
|
||||
Priority: optional
|
||||
Maintainer: John Goerzen <jgoerzen@complete.org>
|
||||
Build-Depends-Indep: debhelper (>> 3.0.0), python2.2 (>= 2.2.1-4), python2.2-dev (>= 2.2.1-4), groff, docbook-utils
|
||||
Build-Depends-Indep: debhelper (>> 3.0.0), python2.3 (>= 2.2.104), python2.3-dev (>= 2.2.104), groff, docbook-utils
|
||||
Standards-Version: 3.5.2
|
||||
|
||||
Package: offlineimap
|
||||
Architecture: all
|
||||
Depends: python2.2
|
||||
Suggests: python2.2-tk
|
||||
Depends: python2.3
|
||||
Suggests: python2.3-tk
|
||||
Description: IMAP/Maildir synchronization and reader support
|
||||
OfflineIMAP is a tool to simplify your e-mail reading. With
|
||||
OfflimeIMAP, you can:
|
||||
|
@ -9,7 +9,7 @@
|
||||
# This is the debhelper compatibility version to use.
|
||||
export DH_COMPAT=3
|
||||
|
||||
PYTHON=python2.2
|
||||
PYTHON=python2.3
|
||||
PACKAGE=offlineimap
|
||||
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
>OfflineIMAP Manual</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"></HEAD
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
|
||||
><BODY
|
||||
CLASS="REFERENCE"
|
||||
BGCOLOR="#FFFFFF"
|
||||
@ -64,31 +64,24 @@ NAME="AEN18"
|
||||
><B
|
||||
CLASS="COMMAND"
|
||||
>offlineimap</B
|
||||
> [-1] [-P <TT
|
||||
> [-1] [-P <VAR
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>profiledir</I
|
||||
></TT
|
||||
>] [-a <TT
|
||||
>profiledir</VAR
|
||||
>] [-a <VAR
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>accountlist</I
|
||||
></TT
|
||||
>] [-c <TT
|
||||
>accountlist</VAR
|
||||
>] [-c <VAR
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>configfile</I
|
||||
></TT
|
||||
>] [-d <TT
|
||||
>configfile</VAR
|
||||
>] [-d <VAR
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>debugtype[,...]</I
|
||||
></TT
|
||||
>] [-o] [-u <TT
|
||||
>debugtype[,...]</VAR
|
||||
>] [-l <VAR
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>interface</I
|
||||
></TT
|
||||
>filename</VAR
|
||||
>] [-o] [-u <VAR
|
||||
CLASS="REPLACEABLE"
|
||||
>interface</VAR
|
||||
>]</P
|
||||
><P
|
||||
><B
|
||||
@ -99,7 +92,7 @@ CLASS="COMMAND"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN38"
|
||||
NAME="AEN40"
|
||||
></A
|
||||
><H2
|
||||
>Description</H2
|
||||
@ -196,7 +189,7 @@ CLASS="APPLICATION"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN56"
|
||||
NAME="AEN58"
|
||||
></A
|
||||
><H3
|
||||
>Method of Operation</H3
|
||||
@ -243,7 +236,7 @@ CLASS="APPLICATION"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN65"
|
||||
NAME="AEN67"
|
||||
></A
|
||||
><H2
|
||||
>Quick Start</H2
|
||||
@ -348,7 +341,7 @@ CLASS="APPLICATION"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN87"
|
||||
NAME="AEN89"
|
||||
></A
|
||||
><H2
|
||||
>Installation</H2
|
||||
@ -376,7 +369,7 @@ CLASS="APPLICATION"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN93"
|
||||
NAME="AEN95"
|
||||
></A
|
||||
><H3
|
||||
>Prerequisites</H3
|
||||
@ -440,7 +433,7 @@ CLASS="APPLICATION"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN107"
|
||||
NAME="AEN109"
|
||||
></A
|
||||
><H3
|
||||
>System-Wide Installation, Debian</H3
|
||||
@ -486,7 +479,7 @@ CLASS="COMMAND"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN119"
|
||||
NAME="AEN121"
|
||||
></A
|
||||
><H3
|
||||
>System-Wide Installation, Other</H3
|
||||
@ -529,7 +522,7 @@ CLASS="COMMAND"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN129"
|
||||
NAME="AEN131"
|
||||
></A
|
||||
><H3
|
||||
>Single-Account Installation</H3
|
||||
@ -614,7 +607,7 @@ CLASS="FILENAME"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN150"
|
||||
NAME="AEN152"
|
||||
></A
|
||||
><H2
|
||||
>Options</H2
|
||||
@ -650,11 +643,9 @@ CLASS="PROPERTY"
|
||||
</P
|
||||
></DD
|
||||
><DT
|
||||
>-P <TT
|
||||
>-P <VAR
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>profiledir</I
|
||||
></TT
|
||||
>profiledir</VAR
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
@ -662,11 +653,9 @@ CLASS="REPLACEABLE"
|
||||
CLASS="APPLICATION"
|
||||
>OfflineIMAP</SPAN
|
||||
> into profile mode. The program
|
||||
will create <TT
|
||||
will create <VAR
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>profiledir</I
|
||||
></TT
|
||||
>profiledir</VAR
|
||||
>
|
||||
(it must not already exist). As it runs, Python profiling
|
||||
information
|
||||
@ -674,22 +663,20 @@ CLASS="REPLACEABLE"
|
||||
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 <TT
|
||||
huge amounts of data. You must use the <VAR
|
||||
CLASS="OPTION"
|
||||
>-1</TT
|
||||
>-1</VAR
|
||||
> option when
|
||||
you use <TT
|
||||
you use <VAR
|
||||
CLASS="OPTION"
|
||||
>-P</TT
|
||||
>-P</VAR
|
||||
>.
|
||||
</P
|
||||
></DD
|
||||
><DT
|
||||
>-a <TT
|
||||
>-a <VAR
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>accountlist</I
|
||||
></TT
|
||||
>accountlist</VAR
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
@ -707,11 +694,9 @@ CLASS="PROPERTY"
|
||||
</P
|
||||
></DD
|
||||
><DT
|
||||
>-c <TT
|
||||
>-c <VAR
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>configfile</I
|
||||
></TT
|
||||
>configfile</VAR
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
@ -723,25 +708,23 @@ CLASS="FILENAME"
|
||||
</P
|
||||
></DD
|
||||
><DT
|
||||
>-d <TT
|
||||
>-d <VAR
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>debugtype[,...]</I
|
||||
></TT
|
||||
>debugtype[,...]</VAR
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
>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
|
||||
<TT
|
||||
<VAR
|
||||
CLASS="OPTION"
|
||||
>-1</TT
|
||||
>-1</VAR
|
||||
> to make the results more sensible.</P
|
||||
><P
|
||||
><TT
|
||||
><VAR
|
||||
CLASS="OPTION"
|
||||
>-d</TT
|
||||
>-d</VAR
|
||||
> requires one or more debugtypes,
|
||||
separated by commas. These define what exactly will be
|
||||
debugged, and include three options: <SPAN
|
||||
@ -774,6 +757,20 @@ CLASS="PROPERTY"
|
||||
</P
|
||||
></DD
|
||||
><DT
|
||||
>-l
|
||||
<VAR
|
||||
CLASS="REPLACEABLE"
|
||||
>filename</VAR
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
> 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.</P
|
||||
></DD
|
||||
><DT
|
||||
>-o</DT
|
||||
><DD
|
||||
><P
|
||||
@ -791,11 +788,9 @@ CLASS="PROPERTY"
|
||||
>Show summary of options.</P
|
||||
></DD
|
||||
><DT
|
||||
>-u <TT
|
||||
>-u <VAR
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>interface</I
|
||||
></TT
|
||||
>interface</VAR
|
||||
></DT
|
||||
><DD
|
||||
><P
|
||||
@ -810,7 +805,7 @@ CLASS="REPLACEABLE"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN212"
|
||||
NAME="AEN219"
|
||||
></A
|
||||
><H2
|
||||
>User Interfaces</H2
|
||||
@ -826,9 +821,9 @@ CLASS="APPLICATION"
|
||||
CLASS="PROPERTY"
|
||||
>ui</SPAN
|
||||
> option in the configuration file specifies
|
||||
user interface preferences. The <TT
|
||||
user interface preferences. The <VAR
|
||||
CLASS="OPTION"
|
||||
>-u</TT
|
||||
>-u</VAR
|
||||
> command-line
|
||||
option can override the configuration file setting. The available
|
||||
values for the configuration file or command-line are described
|
||||
@ -836,7 +831,7 @@ CLASS="OPTION"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN218"
|
||||
NAME="AEN225"
|
||||
></A
|
||||
><H3
|
||||
>Tk.Blinkenlights</H3
|
||||
@ -992,7 +987,7 @@ CLASS="FIRSTTERM"
|
||||
>, in part, as:
|
||||
</P
|
||||
><A
|
||||
NAME="AEN281"
|
||||
NAME="AEN288"
|
||||
></A
|
||||
><BLOCKQUOTE
|
||||
CLASS="BLOCKQUOTE"
|
||||
@ -1029,7 +1024,7 @@ CLASS="EMPHASIS"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN287"
|
||||
NAME="AEN294"
|
||||
></A
|
||||
><H3
|
||||
>Curses.Blinkenlights</H3
|
||||
@ -1047,7 +1042,7 @@ NAME="AEN287"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN291"
|
||||
NAME="AEN298"
|
||||
></A
|
||||
><H3
|
||||
>Tk.VerboseUI</H3
|
||||
@ -1064,7 +1059,7 @@ NAME="AEN291"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN294"
|
||||
NAME="AEN301"
|
||||
></A
|
||||
><H3
|
||||
>TTY.TTYUI</H3
|
||||
@ -1077,7 +1072,7 @@ NAME="AEN294"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN297"
|
||||
NAME="AEN304"
|
||||
></A
|
||||
><H3
|
||||
>Noninteractive.Basic</H3
|
||||
@ -1097,7 +1092,7 @@ CLASS="APPLICATION"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN301"
|
||||
NAME="AEN308"
|
||||
></A
|
||||
><H3
|
||||
>Noninteractive.Quiet</H3
|
||||
@ -1114,7 +1109,7 @@ NAME="AEN301"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN304"
|
||||
NAME="AEN311"
|
||||
></A
|
||||
><H2
|
||||
>Examples</H2
|
||||
@ -1126,7 +1121,7 @@ NAME="AEN304"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN307"
|
||||
NAME="AEN314"
|
||||
></A
|
||||
><H3
|
||||
>Multiple Accounts with Mutt</H3
|
||||
@ -1199,7 +1194,7 @@ spoolfile=+Personal/INBOX</PRE
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN326"
|
||||
NAME="AEN333"
|
||||
></A
|
||||
><H3
|
||||
>UW-IMAPD and References</H3
|
||||
@ -1258,7 +1253,7 @@ holdconnectionopen = no</PRE
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN334"
|
||||
NAME="AEN341"
|
||||
></A
|
||||
><H3
|
||||
>pythonfile Configuration File Option</H3
|
||||
@ -1324,7 +1319,7 @@ CLASS="PROPERTY"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN347"
|
||||
NAME="AEN354"
|
||||
></A
|
||||
><H2
|
||||
>Errors</H2
|
||||
@ -1335,7 +1330,7 @@ NAME="AEN347"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN350"
|
||||
NAME="AEN357"
|
||||
></A
|
||||
><H3
|
||||
>UID validity problem for folder</H3
|
||||
@ -1382,17 +1377,13 @@ CLASS="FILENAME"
|
||||
><PRE
|
||||
CLASS="PROGRAMLISTING"
|
||||
>rm -r ~/Folders/INBOX
|
||||
rm -r ~/.offlineimap/Account-<TT
|
||||
rm -r ~/.offlineimap/Account-<VAR
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>AccountName</I
|
||||
></TT
|
||||
>AccountName</VAR
|
||||
>
|
||||
rm -r ~/.offlineimap/Repository-<TT
|
||||
rm -r ~/.offlineimap/Repository-<VAR
|
||||
CLASS="REPLACEABLE"
|
||||
><I
|
||||
>RepositoryName</I
|
||||
></TT
|
||||
>RepositoryName</VAR
|
||||
></PRE
|
||||
><P
|
||||
> (Of course, replace AccountName and RepositoryName
|
||||
@ -1452,7 +1443,7 @@ TARGET="_top"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN375"
|
||||
NAME="AEN382"
|
||||
></A
|
||||
><H2
|
||||
>Other Frequently Asked Questions</H2
|
||||
@ -1721,7 +1712,7 @@ CLASS="PROPERTY"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN471"
|
||||
NAME="AEN478"
|
||||
></A
|
||||
><H2
|
||||
>Conforming To</H2
|
||||
@ -1760,14 +1751,14 @@ TARGET="_top"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN484"
|
||||
NAME="AEN491"
|
||||
></A
|
||||
><H2
|
||||
>Notes</H2
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN486"
|
||||
NAME="AEN493"
|
||||
></A
|
||||
><H3
|
||||
>Deleting Local Folders</H3
|
||||
@ -1799,7 +1790,7 @@ CLASS="APPLICATION"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN493"
|
||||
NAME="AEN500"
|
||||
></A
|
||||
><H3
|
||||
>Multiple Instances</H3
|
||||
@ -1828,7 +1819,7 @@ CLASS="PROPERTY"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN500"
|
||||
NAME="AEN507"
|
||||
></A
|
||||
><H3
|
||||
>Copying Messages Between Folders</H3
|
||||
@ -1858,7 +1849,7 @@ CLASS="APPLICATION"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN506"
|
||||
NAME="AEN513"
|
||||
></A
|
||||
><H3
|
||||
>Use with Evolution</H3
|
||||
@ -1871,9 +1862,9 @@ CLASS="APPLICATION"
|
||||
CLASS="APPLICATION"
|
||||
>OfflineIMAP</SPAN
|
||||
> account to have
|
||||
<TT
|
||||
<VAR
|
||||
CLASS="OPTION"
|
||||
>sep = /</TT
|
||||
>sep = /</VAR
|
||||
> in its configuration. Then, configure
|
||||
Evolution with the
|
||||
"Maildir-format mail directories" server type. For the path, you will need to
|
||||
@ -1894,7 +1885,7 @@ CLASS="APPLICATION"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN514"
|
||||
NAME="AEN521"
|
||||
></A
|
||||
><H3
|
||||
>Use with KMail</H3
|
||||
@ -1928,7 +1919,7 @@ CLASS="APPLICATION"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN522"
|
||||
NAME="AEN529"
|
||||
></A
|
||||
><H3
|
||||
>Mailing List</H3
|
||||
@ -1947,7 +1938,7 @@ TARGET="_top"
|
||||
><DIV
|
||||
CLASS="REFSECT2"
|
||||
><A
|
||||
NAME="AEN526"
|
||||
NAME="AEN533"
|
||||
></A
|
||||
><H3
|
||||
>Bugs</H3
|
||||
@ -1973,12 +1964,12 @@ TARGET="_top"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN532"
|
||||
NAME="AEN539"
|
||||
></A
|
||||
><H2
|
||||
>Copyright</H2
|
||||
><P
|
||||
>OfflineIMAP, and this manual, are Copyright © 2002, 2003 John Goerzen.</P
|
||||
>OfflineIMAP, and this manual, are Copyright © 2002, 2003 John Goerzen.</P
|
||||
><P
|
||||
> 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
|
||||
@ -2011,7 +2002,7 @@ CLASS="APPLICATION"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN541"
|
||||
NAME="AEN548"
|
||||
></A
|
||||
><H2
|
||||
>Author</H2
|
||||
@ -2020,12 +2011,12 @@ NAME="AEN541"
|
||||
CLASS="APPLICATION"
|
||||
>OfflineIMAP</SPAN
|
||||
>, its libraries, documentation, and all included files, except where
|
||||
noted, was written by John Goerzen <TT
|
||||
noted, was written by John Goerzen <CODE
|
||||
CLASS="EMAIL"
|
||||
><<A
|
||||
HREF="mailto:jgoerzen@complete.org"
|
||||
>jgoerzen@complete.org</A
|
||||
>></TT
|
||||
>></CODE
|
||||
> and
|
||||
copyright is held as stated in the COPYRIGHT section.
|
||||
</P
|
||||
@ -2063,7 +2054,7 @@ TARGET="_top"
|
||||
><DIV
|
||||
CLASS="REFSECT1"
|
||||
><A
|
||||
NAME="AEN553"
|
||||
NAME="AEN560"
|
||||
></A
|
||||
><H2
|
||||
>See Also</H2
|
||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -7,7 +7,7 @@ NAME
|
||||
|
||||
SYNOPSIS
|
||||
offlineimap [ -1 ] [ -P profiledir ] [ -a accountlist ] [ -c configfile
|
||||
] [ -d debugtype[,...] ] [ -o ] [ -u interface ]
|
||||
] [ -d debugtype[,...] ] [ -l filename ] [ -o ] [ -u interface ]
|
||||
|
||||
|
||||
offlineimap -h | --help
|
||||
@ -237,6 +237,12 @@ OPTIONS
|
||||
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.
|
||||
|
||||
@ -245,52 +251,52 @@ OPTIONS
|
||||
--help Show summary of options.
|
||||
|
||||
-u interface
|
||||
Specifies an alternative user interface module to use. This
|
||||
overrides the defailt specified in the configuration file. The
|
||||
Specifies an alternative user interface module to use. This
|
||||
overrides the defailt 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
|
||||
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-
|
||||
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
|
||||
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,
|
||||
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
|
||||
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
|
||||
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
|
||||
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-
|
||||
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
|
||||
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
|
||||
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
|
||||
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-
|
||||
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).
|
||||
|
||||
@ -300,7 +306,7 @@ USER INTERFACES
|
||||
|
||||
Blue is the color of a message synchronization controller thread.
|
||||
|
||||
Orange indicates that an actual message is being copied. (We use
|
||||
Orange indicates that an actual message is being copied. (We use
|
||||
fuschia for fake messages.)
|
||||
|
||||
Red (meaning 2)
|
||||
@ -313,68 +319,68 @@ USER INTERFACES
|
||||
indicates that message flags are being removed.
|
||||
|
||||
Red / Black Flashing
|
||||
corresponds to the countdown timer that runs between synchro-
|
||||
corresponds to the countdown timer that runs between synchro-
|
||||
nizations.
|
||||
|
||||
The name of this interfaces derives from a bit of computer history.
|
||||
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
|
||||
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-
|
||||
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
|
||||
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 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
|
||||
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
|
||||
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
|
||||
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-
|
||||
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-
|
||||
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-
|
||||
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-
|
||||
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;
|
||||
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;
|
||||
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.
|
||||
|
||||
@ -383,15 +389,15 @@ EXAMPLES
|
||||
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-
|
||||
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
|
||||
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
|
||||
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].
|
||||
|
||||
@ -412,10 +418,10 @@ EXAMPLES
|
||||
|
||||
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"
|
||||
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
|
||||
(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]
|
||||
@ -446,8 +452,8 @@ EXAMPLES
|
||||
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
|
||||
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:
|
||||
@ -475,75 +481,75 @@ EXAMPLES
|
||||
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-
|
||||
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,
|
||||
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.
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
(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
|
||||
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
|
||||
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
|
||||
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
|
||||
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-
|
||||
find a detailed discussion <URL:http://lists.com-
|
||||
plete.org/offlineimap@complete.org/2003/04/msg00012.html.gz> of the
|
||||
problem there.
|
||||
|
||||
OTHER FREQUENTLY ASKED QUESTIONS
|
||||
There are some other FAQs that might not fit into another section of
|
||||
There are some other FAQs that might not fit into another section of
|
||||
the document, so they are discussed here.
|
||||
|
||||
What platforms does OfflineIMAP run on?
|
||||
It should run on most platforms supported by Python, which are
|
||||
It should run on most platforms supported by Python, which are
|
||||
quite a few.
|
||||
|
||||
I'm using Mutt. Other IMAP sync programs require me to use "set
|
||||
I'm using Mutt. Other IMAP sync programs require me to use "set
|
||||
maildir_trash=yes". Do I need to do that with OfflineIMAP?
|
||||
No. OfflineIMAP is smart enough to figure out message deletion
|
||||
without this extra crutch. You'll get the best results if you
|
||||
No. OfflineIMAP is smart enough to figure out message deletion
|
||||
without this extra crutch. You'll get the best results if you
|
||||
don't use this setting, in fact.
|
||||
|
||||
How do I specify the names of my folders?
|
||||
You do not need to. OfflineIMAP is smart enough to automati-
|
||||
You do not need to. OfflineIMAP is smart enough to automati-
|
||||
cally figure out what folders are present on the IMAP server and
|
||||
synchronize them. You can use the folderfilter and foldertrans
|
||||
synchronize them. You can use the folderfilter and foldertrans
|
||||
configuration file options to request certain folders and rename
|
||||
them as they come in if you like.
|
||||
|
||||
@ -551,68 +557,68 @@ OTHER FREQUENTLY ASKED QUESTIONS
|
||||
Use the folderfilter option in the configuration file.
|
||||
|
||||
How can I add or delete a folder?
|
||||
OfflineIMAP does not currently provide this feature, but if you
|
||||
create a new folder on the IMAP server, it will be created
|
||||
OfflineIMAP does not currently provide this feature, but if you
|
||||
create a new folder on the IMAP server, it will be created
|
||||
locally automatically.
|
||||
|
||||
Are there any other warnings that I should be aware of?
|
||||
Yes; see the Notes section below.
|
||||
|
||||
What is the mailbox name recorder (mbnames) for?
|
||||
Some mail readers, such as Mutt, are not capable of automati-
|
||||
cally determining the names of your mailboxes. OfflineIMAP can
|
||||
help these programs by writing the names of the folders ni a
|
||||
Some mail readers, such as Mutt, are not capable of automati-
|
||||
cally determining the names of your mailboxes. OfflineIMAP can
|
||||
help these programs by writing the names of the folders ni a
|
||||
format you specify. See the example offlineimap.conf for
|
||||
details.
|
||||
|
||||
Can I synchronize multiple accounts with OfflineIMAP?
|
||||
Sure. Just name them all in the accounts line in the general
|
||||
Sure. 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.
|
||||
|
||||
Does OfflineIMAP support POP?
|
||||
No. POP is not robust enough to do a completely reliable multi-
|
||||
machine synchronization like OfflineIMAP can do. OfflineIMAP
|
||||
machine synchronization like OfflineIMAP can do. OfflineIMAP
|
||||
will not support it.
|
||||
|
||||
Does OfflineIMAP support mailbox formats other than Maildir?
|
||||
Not at present. There is no technical reason not to; just no
|
||||
demand yet. Maildir is a superior format anyway. However,
|
||||
OfflineIMAP can sync between two IMAP servers, and some IMAP
|
||||
Not at present. There is no technical reason not to; just no
|
||||
demand yet. Maildir is a superior format anyway. However,
|
||||
OfflineIMAP can sync between two IMAP servers, and some IMAP
|
||||
servers support other formats. You could install an IMAP server
|
||||
on your local machine and have OfflineIMAP sync to that.
|
||||
|
||||
[technical] Why are your Maildir message filenames so huge?
|
||||
OfflineIMAP has two relevant principles: 1) never modifying your
|
||||
messages in any way and 2) ensuring 100% reliable synchroniza-
|
||||
tions. In order to do a reliable sync, OfflineIMAP must have a
|
||||
way to uniquely identify each e-mail. Three pieces of informa-
|
||||
tion 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
|
||||
messages in any way and 2) ensuring 100% reliable synchroniza-
|
||||
tions. In order to do a reliable sync, OfflineIMAP must have a
|
||||
way to uniquely identify each e-mail. Three pieces of informa-
|
||||
tion 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
|
||||
So, OfflineIMAP must store both a UID folder ID. The folder ID
|
||||
is necessary so OfflineIMAP can detect a message moved to a dif-
|
||||
ferent folder. OfflineIMAP stores the UID (U= number) and an
|
||||
ferent folder. OfflineIMAP stores the UID (U= number) and an
|
||||
md5sum of the foldername (FMD5= number) to facilitate this.
|
||||
|
||||
What is the speed of OfflineIMAP's sync?
|
||||
OfflineIMAP versions 2.0 and above contain a multithreaded sys-
|
||||
tem. A good way to experiment is by setting maxsyncaccounts to
|
||||
OfflineIMAP versions 2.0 and above contain a multithreaded sys-
|
||||
tem. 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 simultane-
|
||||
ously. That will let it process multiple folders and messages
|
||||
at once. In most cases, this will increase performance of the
|
||||
This lets OfflineIMAP open up multiple connections simultane-
|
||||
ously. 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.
|
||||
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;
|
||||
bog down. There are many variables in the optimal setting;
|
||||
experimentation may help.
|
||||
|
||||
An informal benchmark yields these results for my setup:
|
||||
@ -635,7 +641,7 @@ CONFORMING TO
|
||||
|
||||
o CRAM-MD5 as specified in RFC2195
|
||||
|
||||
o Maildir as specified in the Maildir manpage
|
||||
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>.
|
||||
|
||||
@ -643,72 +649,73 @@ CONFORMING TO
|
||||
|
||||
NOTES
|
||||
DELETING LOCAL FOLDERS
|
||||
OfflineIMAP does a two-way synchronization. That is, if you make a
|
||||
change to the mail on the server, it will be propogated to your local
|
||||
OfflineIMAP does a two-way synchronization. That is, if you make a
|
||||
change to the mail on the server, it will be propogated 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
|
||||
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
|
||||
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
|
||||
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-
|
||||
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
|
||||
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.
|
||||
|
||||
USE WITH EVOLUTION
|
||||
OfflineIMAP can work with Evolution. To do so, first configure your
|
||||
OfflineIMAP account to have sep = / in its configuration. Then, con-
|
||||
figure Evolution with the "Maildir-format mail directories" server
|
||||
OfflineIMAP can work with Evolution. To do so, first configure your
|
||||
OfflineIMAP account to have sep = / in its configuration. Then, con-
|
||||
figure 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!
|
||||
|
||||
USE WITH KMAIL
|
||||
At this time, I believe that OfflineIMAP with Maildirs is not compati-
|
||||
ble with KMail. KMail cannot work in any mode other than to move all
|
||||
messages out of all folders immediately, which (besides being annoying
|
||||
At this time, I believe that OfflineIMAP with Maildirs is not compati-
|
||||
ble 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
|
||||
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.
|
||||
|
||||
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.
|
||||
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 sent via e-mail to the OfflineIMAP bug-track-
|
||||
ing system (BTS) at offlineimap@bugs.complete.org or submitted online
|
||||
ing system (BTS) at offlineimap@bugs.complete.org or submitted online
|
||||
using the web interface <URL:http://bugs.complete.org/>.
|
||||
|
||||
The Web site also lists all current bugs, where you can check their
|
||||
The Web site also lists all current bugs, where you can check their
|
||||
status or contribute to fixing them.
|
||||
|
||||
COPYRIGHT
|
||||
OfflineIMAP, and this manual, are Copyright 2002, 2003 John Goerzen.
|
||||
OfflineIMAP, and this manual, are Copyright (C) 2002, 2003 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
|
||||
@ -716,9 +723,9 @@ COPYRIGHT
|
||||
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.
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Gen-
|
||||
eral 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.,
|
||||
@ -748,4 +755,4 @@ SEE ALSO
|
||||
|
||||
|
||||
|
||||
John Goerzen 22 April 2003 OFFLINEIMAP(1)
|
||||
John Goerzen 02 June 2003 OFFLINEIMAP(1)
|
||||
|
@ -3,13 +3,13 @@
|
||||
.\" <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" "22 April 2003" "John Goerzen" "OfflineIMAP Manual"
|
||||
.TH "OFFLINEIMAP" "1" "02 June 2003" "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-o\fR ] [ \fB-u \fIinterface\fB\fR ]
|
||||
\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
|
||||
@ -287,6 +287,13 @@ from the debugging output before sending it to anyone else. The
|
||||
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
|
||||
@ -827,7 +834,7 @@ The Web site also lists all current bugs, where you can check their
|
||||
status or contribute to fixing them.
|
||||
.SH "COPYRIGHT"
|
||||
.PP
|
||||
OfflineIMAP, and this manual, are Copyright © 2002, 2003 John Goerzen.
|
||||
OfflineIMAP, and this manual, are Copyright (C) 2002, 2003 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
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python2.2
|
||||
#!/usr/bin/env python2.3
|
||||
# Startup from single-user installation
|
||||
# Copyright (C) 2002, 2003 John Goerzen
|
||||
# <jgoerzen@complete.org>
|
||||
|
@ -10,7 +10,7 @@
|
||||
<refentryinfo>
|
||||
<address><email>jgoerzen@complete.org</email></address>
|
||||
<author><firstname>John</firstname><surname>Goerzen</surname></author>
|
||||
<date> $Date: 2003-04-22 10:47:25 -0500 (Tue, 22 Apr 2003) $ </date>
|
||||
<date> $Date: 2003-06-02 09:06:18 -0500 (Mon, 02 Jun 2003) $ </date>
|
||||
</refentryinfo>
|
||||
|
||||
<refmeta>
|
||||
@ -33,6 +33,7 @@
|
||||
<arg>-a <replaceable>accountlist</replaceable></arg>
|
||||
<arg>-c <replaceable>configfile</replaceable></arg>
|
||||
<arg>-d <replaceable>debugtype[,...]</replaceable></arg>
|
||||
<arg>-l <replaceable>filename</replaceable></arg>
|
||||
<arg>-o</arg>
|
||||
<arg>-u <replaceable>interface</replaceable></arg>
|
||||
</cmdsynopsis>
|
||||
@ -371,6 +372,16 @@ cd offlineimap-x.y.z</ProgramListing>
|
||||
will debug the threading model.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term>-l
|
||||
<replaceable>filename</replaceable></term>
|
||||
<listitem><para>
|
||||
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.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term>-o</term>
|
||||
<listitem><para>Run only once, ignoring all
|
||||
<property>autorefresh</property> settings in the configuration
|
||||
|
@ -1129,7 +1129,10 @@ class IMAP4_SSL(IMAP4):
|
||||
self.port = port
|
||||
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
self.sock.connect((host, port))
|
||||
self.sslobj = socket.ssl(self.sock._sock, self.keyfile, self.certfile)
|
||||
if sys.version_info[0] <= 2 and sys.version_info[1] <= 2:
|
||||
self.sslobj = socket.ssl(self.sock, self.keyfile, self.certfile)
|
||||
else:
|
||||
self.sslobj = socket.ssl(self.sock._sock, self.keyfile, self.certfile)
|
||||
self.sslobj = sslwrapper(self.sslobj)
|
||||
|
||||
|
||||
|
@ -229,32 +229,48 @@ class IMAPServer:
|
||||
until the Event object as passed is true. This method is expected
|
||||
to be invoked in a separate thread, which should be join()'d after
|
||||
the event is set."""
|
||||
ui = UIBase.getglobalui()
|
||||
ui.debug('imap', 'keepalive thread started')
|
||||
while 1:
|
||||
ui.debug('imap', 'keepalive: top of loop')
|
||||
event.wait(timeout)
|
||||
ui.debug('imap', 'keepalive: after wait')
|
||||
if event.isSet():
|
||||
ui.debug('imap', 'keepalive: event is set; exiting')
|
||||
return
|
||||
ui.debug('imap', 'keepalive: acquiring connectionlock')
|
||||
self.connectionlock.acquire()
|
||||
numconnections = len(self.assignedconnections) + \
|
||||
len(self.availableconnections)
|
||||
self.connectionlock.release()
|
||||
ui.debug('imap', 'keepalive: connectionlock released')
|
||||
threads = []
|
||||
imapobjs = []
|
||||
|
||||
for i in range(numconnections):
|
||||
ui.debug('imap', 'keepalive: processing connection %d of %d' % (i, numconnections))
|
||||
imapobj = self.acquireconnection()
|
||||
ui.debug('imap', 'keepalive: connection %d acquired' % i)
|
||||
imapobjs.append(imapobj)
|
||||
thr = threadutil.ExitNotifyThread(target = imapobj.noop)
|
||||
thr.setDaemon(1)
|
||||
thr.start()
|
||||
threads.append(thr)
|
||||
ui.debug('imap', 'keepalive: thread started')
|
||||
|
||||
ui.debug('imap', 'keepalive: joining threads')
|
||||
|
||||
for thr in threads:
|
||||
# Make sure all the commands have completed.
|
||||
thr.join()
|
||||
|
||||
ui.debug('imap', 'keepalive: releasing connections')
|
||||
|
||||
for imapobj in imapobjs:
|
||||
self.releaseconnection(imapobj)
|
||||
|
||||
ui.debug('imap', 'keepalive: bottom of loop')
|
||||
|
||||
class ConfigedIMAPServer(IMAPServer):
|
||||
"""This class is designed for easier initialization given a ConfigParser
|
||||
object and an account name. The passwordhash is used if
|
||||
|
@ -82,6 +82,9 @@ def startup(versionno):
|
||||
if debugtype == 'thread':
|
||||
threading._VERBOSE = 1
|
||||
|
||||
if '-l' in options:
|
||||
ui.setlogfd(open(options['-l'], 'wt'))
|
||||
|
||||
if '-o' in options:
|
||||
# FIXME: maybe need a better
|
||||
for section in accounts.getaccountlist(config):
|
||||
|
@ -488,7 +488,7 @@ class Blinkenlights(BlinkenBase, UIBase):
|
||||
return s.af[accountname]
|
||||
|
||||
|
||||
def _msg(s, msg, color = None):
|
||||
def _display(s, msg, color = None):
|
||||
if "\n" in msg:
|
||||
for thisline in msg.split("\n"):
|
||||
s._msg(thisline)
|
||||
|
@ -30,7 +30,7 @@ class TTYUI(UIBase):
|
||||
def isusable(s):
|
||||
return sys.stdout.isatty() and sys.stdin.isatty()
|
||||
|
||||
def _msg(s, msg):
|
||||
def _display(s, msg):
|
||||
s.outputlock.acquire()
|
||||
try:
|
||||
if (currentThread().getName() == 'MainThread'):
|
||||
|
@ -222,7 +222,7 @@ class VerboseUI(UIBase):
|
||||
finally:
|
||||
s.tflock.release()
|
||||
|
||||
def _msg(s, msg):
|
||||
def _display(s, msg):
|
||||
s.gettf().setmessage(msg)
|
||||
|
||||
def threadExited(s, thread):
|
||||
@ -504,7 +504,7 @@ class Blinkenlights(BlinkenBase, VerboseUI):
|
||||
lo, hi = s.text.vbar.get()
|
||||
s.text.vbar.set(1.0 - (hi - lo), 1.0)
|
||||
|
||||
def _msg(s, msg):
|
||||
def _display(s, msg):
|
||||
if "\n" in msg:
|
||||
for thisline in msg.split("\n"):
|
||||
s._msg(thisline)
|
||||
|
@ -21,7 +21,8 @@ import re, time, sys, traceback, threading, thread
|
||||
from StringIO import StringIO
|
||||
|
||||
debugtypes = {'imap': 'IMAP protocol debugging',
|
||||
'maildir': 'Maildir repository debugging'}
|
||||
'maildir': 'Maildir repository debugging',
|
||||
'thread': 'Threading debugging'}
|
||||
|
||||
globalui = None
|
||||
def setglobalui(newui):
|
||||
@ -39,10 +40,27 @@ class UIBase:
|
||||
s.debugmessages = {}
|
||||
s.debugmsglen = 50
|
||||
s.threadaccounts = {}
|
||||
s.logfile = None
|
||||
|
||||
################################################## UTILS
|
||||
def _msg(s, msg):
|
||||
"""Generic tool called when no other works."""
|
||||
s._log(msg)
|
||||
s._display(msg)
|
||||
|
||||
def _log(s, msg):
|
||||
"""Log it to disk. Returns true if it wrote something; false
|
||||
otherwise."""
|
||||
if s.logfile:
|
||||
s.logfile.write("%s: %s\n" % (threading.currentThread().getName(),
|
||||
msg))
|
||||
return s.logfile
|
||||
|
||||
def setlogfd(s, logfd):
|
||||
s.logfile = logfd
|
||||
|
||||
def _display(s, msg):
|
||||
"""Display a message."""
|
||||
raise NotImplementedError
|
||||
|
||||
def warn(s, msg, minor = 0):
|
||||
@ -82,8 +100,9 @@ class UIBase:
|
||||
while len(s.debugmessages[thisthread]) > s.debugmsglen:
|
||||
s.debugmessages[thisthread] = s.debugmessages[thisthread][1:]
|
||||
|
||||
if debugtype in s.debuglist:
|
||||
s._msg("DEBUG[%s]: %s" % (debugtype, msg))
|
||||
if not s._log("DEBUG[%s]: %s"):
|
||||
if debugtype in s.debuglist:
|
||||
s._display("DEBUG[%s]: %s" % (debugtype, msg))
|
||||
|
||||
def add_debug(s, debugtype):
|
||||
global debugtypes
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python2.2
|
||||
#!/usr/bin/env python2.3
|
||||
|
||||
# $Id: setup.py,v 1.1 2002/06/21 18:10:49 jgoerzen Exp $
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user