Cleanup the previously added information. Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
		
			
				
	
	
		
			522 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			522 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
.. -*- 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
 | 
						||
.. _ssl.wrap_socket: http://docs.python.org/library/ssl.html#ssl.wrap_socket
 | 
						||
 | 
						||
 | 
						||
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.
 | 
						||
 | 
						||
See the Performance section in the MANUAL for some tips.
 | 
						||
 | 
						||
What platforms does OfflineIMAP support?
 | 
						||
----------------------------------------
 | 
						||
 | 
						||
It should run on most platforms supported by Python, with one exception: we do not support Windows, but some have made it work there.
 | 
						||
 | 
						||
The following has been reported by OfflineIMAP users. We do not test
 | 
						||
OfflineIMAP on Windows, so we 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. We are not planning
 | 
						||
to write an mbox-backend, though if someone sent me well-written mbox
 | 
						||
support and pledged to support it, it would be committed 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 folders UIDVALIDITY value in combination with a
 | 
						||
unique ID (UID) to refer to a specific message.  This is guaranteed to
 | 
						||
be unique to a particular message forever.  No other message in the same
 | 
						||
folder will ever get the same UID as long as UIDVALIDITY remains
 | 
						||
unchanged.  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 because of
 | 
						||
the changed UIDVALIDITY value and skip the folder.  This is GOOD,
 | 
						||
because it prevents data loss.
 | 
						||
 | 
						||
In the IMAP<->Maildir case, 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 automatically delete a folder?
 | 
						||
---------------------------------------
 | 
						||
 | 
						||
OfflineIMAP does not currently provide this feature. You will have to delete folders manually. See next entry too.
 | 
						||
 | 
						||
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.
 | 
						||
In the future, we will lock each account individually rather than having one global lock.
 | 
						||
 | 
						||
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.
 | 
						||
 | 
						||
But if you try to sync between two IMAP servers, where both are unable to
 | 
						||
provide you with UID of the new message, then this will lead to infinite loop.
 | 
						||
`OfflineIMAP`_ will upload the message to one server and delete on second. On
 | 
						||
next run it will upload the message to second server and delete on first, etc.
 | 
						||
 | 
						||
Does OfflineIMAP support POP?
 | 
						||
-----------------------------
 | 
						||
 | 
						||
No.
 | 
						||
 | 
						||
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
 | 
						||
 | 
						||
Can I force OfflineIMAP to sync a folder right now?
 | 
						||
---------------------------------------------------
 | 
						||
 | 
						||
Yes, 
 | 
						||
  1) if you use the `Blinkenlights` UI.  That UI shows the active accounts
 | 
						||
as follows::
 | 
						||
 | 
						||
   4: [active]      *Control: .
 | 
						||
   3: [  4:36]      personal:
 | 
						||
   2: [  3:37]          work: .
 | 
						||
   1: [  6:28]           uni:
 | 
						||
 | 
						||
   Simply press the appropriate digit (`3` for `personal`, etc.) to
 | 
						||
   resync that account immediately.  This will be ignored if a resync is
 | 
						||
   already in progress for that account.
 | 
						||
 | 
						||
  2) while in sleep mode, you can also send a SIGUSR1. See the `Signals
 | 
						||
    on UNIX`_ section in the MANUAL for details.
 | 
						||
 | 
						||
I get a "Mailbox already exists" error
 | 
						||
--------------------------------------
 | 
						||
**Q:** When synchronizing, I receive errors such as::
 | 
						||
 | 
						||
     Folder 'sent'[main-remote] could not be created. Server responded:
 | 
						||
     ('NO', ['Mailbox already exists.'])
 | 
						||
 | 
						||
**A:** IMAP folders are usually case sensitive. But some IMAP servers seem
 | 
						||
  to treat "special" folders as case insensitive (e.g. the initial
 | 
						||
  INBOX. part, or folders such as "Sent" or "Trash"). If you happen to
 | 
						||
  have a folder "sent" on one side of things and a folder called "Sent"
 | 
						||
  on the other side, offlineimap will try to create those folders on
 | 
						||
  both sides. If you server happens to treat those folders as
 | 
						||
  case-insensitive you can then see this warning.
 | 
						||
 | 
						||
  You can solve this by excluding the "sent" folder by filtering it from
 | 
						||
  the repository settings::
 | 
						||
 | 
						||
     folderfilter= lambda f: f not in ['sent']
 | 
						||
 | 
						||
 | 
						||
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.
 | 
						||
 | 
						||
Also you can configure OfflineImap to only synchronize "subscribed" folders.
 | 
						||
 | 
						||
How do I prevent certain folders from being synced?
 | 
						||
---------------------------------------------------
 | 
						||
 | 
						||
Use the folderfilter option. See the MANUAL for details and examples.
 | 
						||
 | 
						||
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.
 | 
						||
 | 
						||
Does OfflineIMAP verify SSL certificates?
 | 
						||
-----------------------------------------
 | 
						||
 | 
						||
You can verify an imapserver's certificate by specifying the CA
 | 
						||
certificate on a per-repository basis by setting the `sslcacertfile`
 | 
						||
option in the config file. (See the example offlineimap.conf for
 | 
						||
details.) If you do not specify any CA certificate, you will be presented with the server's certificate fingerprint and add that to the configuration file, to make sure it remains unchanged.
 | 
						||
No verification happens if connecting via STARTTLS.
 | 
						||
 | 
						||
How do I generate an `sslcacertfile` file?
 | 
						||
------------------------------------------
 | 
						||
 | 
						||
The `sslcacertfile` file must contain an SSL certificate (or a concatenated
 | 
						||
certificates chain) in PEM format.  (See the documentation of
 | 
						||
`ssl.wrap_socket`_'s `certfile` parameter for the gory details.)  You can use either openssl or gnutls to create a certificate file in the required format.
 | 
						||
 | 
						||
#. via openssl::
 | 
						||
    openssl s_client -CApath /etc/ssl/certs -connect ${hostname}:imaps -showcerts \
 | 
						||
       | perl -ne 'print if /BEGIN/../END/; print STDERR if /return/' > $sslcacertfile
 | 
						||
    ^D
 | 
						||
 | 
						||
#. via gnutls::
 | 
						||
    gnutls-cli --print-cert -p imaps ${host} </dev/null | sed -n \
 | 
						||
    |     '/^-----BEGIN CERT/,/^-----END CERT/p' > $sslcacertfile
 | 
						||
 | 
						||
The path `/etc/ssl/certs` is not standardized; your system may store
 | 
						||
SSL certificates elsewhere.  (On some systems it may be in
 | 
						||
`/usr/local/share/certs/`.)
 | 
						||
 | 
						||
Before using the resulting file, ensure that openssl verified the certificate
 | 
						||
successfully. In case of problems, you can test the certificate using a command such as (credits to Daniel Shahaf for this) to verify the certificate::
 | 
						||
 | 
						||
    % openssl s_client -CAfile $sslcacertfile -connect ${hostname}:imaps 2>&1 </dev/null
 | 
						||
 | 
						||
If the server uses STARTTLS, pass the -starttls option and the 'imap' port.
 | 
						||
 | 
						||
Also, you can test using gnutls::
 | 
						||
  gnutls-cli --x509cafile certs/mail.mydomain.eu.cert -p 993 mail.mydomain.eu
 | 
						||
 | 
						||
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.
 | 
						||
 | 
						||
 | 
						||
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
 | 
						||
=======================
 | 
						||
 | 
						||
I'm using git to install OfflineIMAP and found these branches called "master", "maint", "next", "pu" and "gh-pages". What are they?
 | 
						||
-----------------------------------------------------------------------------------------------------------------------------------
 | 
						||
 | 
						||
To be brief:
 | 
						||
 | 
						||
* **gh-pages**: branch used to maintain the home page at github.
 | 
						||
* **master**: classical mainline branch.
 | 
						||
* **next**: this is the branch for recent merged patches. Used for testing OfflineIMAP.
 | 
						||
* **pu** ("proposed updates"): patches not ready for inclusion. This should **never** be checkouted!
 | 
						||
* **maint**: our long-living maintenance branch. We maintain this branch
 | 
						||
  (security and bugfixes) for users who don't want or can't upgrade to the
 | 
						||
  latest release.
 | 
						||
 | 
						||
For more information about the branching model and workflow, see the HACKING page.
 | 
						||
 | 
						||
 | 
						||
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 message UID and a folder ID. The
 | 
						||
folder ID is necessary so OfflineIMAP can detect a message being 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
 | 
						||
 | 
						||
 | 
						||
Contributing
 | 
						||
============
 | 
						||
 | 
						||
How to test OfflineIMAP?
 | 
						||
------------------------
 | 
						||
 | 
						||
We don't have a testing tool, for now. As a IMAP client, we need an available
 | 
						||
IMAP server for that purpose. But it doesn't mean you can do anything.
 | 
						||
 | 
						||
Recent patches are merged in the next branch before beeing in the mainline. Once
 | 
						||
you have your own copy of the official repository, track this next branch::
 | 
						||
 | 
						||
  git checkout -t origin/next
 | 
						||
 | 
						||
Update this branch in a regular basis with::
 | 
						||
 | 
						||
  git checkout next
 | 
						||
  git pull
 | 
						||
 | 
						||
Notice you're not supposed to install OfflineIMAP each time. You may simply
 | 
						||
run it like this::
 | 
						||
 | 
						||
  ./offlineimap.py
 | 
						||
 | 
						||
The choice is up to you. :-)
 | 
						||
 | 
						||
How to submit a patch?
 | 
						||
----------------------
 | 
						||
 | 
						||
If you want to send regular patches, you should first subscribe to the `mailing
 | 
						||
list`_. This is not a pre-requisite, though.
 | 
						||
 | 
						||
Next, you'll find documentation in the docs/ directory, especially the HACKING
 | 
						||
page.
 | 
						||
 | 
						||
You'll need to get a clone from the official `OfflineIMAP`_ repository and
 | 
						||
configure Git. Then, read the SubmittingPatches.rst page in your local
 | 
						||
repository or at
 | 
						||
https://github.com/nicolas33/offlineimap/blob/master/SubmittingPatches.rst#readme
 | 
						||
.
 | 
						||
 | 
						||
To send a patch, we recommend using 'git send-email'.
 | 
						||
 | 
						||
 | 
						||
Where from should my patches be based on?
 | 
						||
-----------------------------------------
 | 
						||
 | 
						||
Depends. If you're not sure, it should start off of the master
 | 
						||
branch. master is the branch where new patches should be based on by
 | 
						||
default.
 | 
						||
 | 
						||
Obvious materials for next release (e.g. new features) start off of
 | 
						||
current next.  Also, next is the natural branch to write patches on top
 | 
						||
of commits not already in master.
 | 
						||
 | 
						||
A fix for a very old bug or security issue may start off of maint. This isn't
 | 
						||
needed since such fix are backported by the maintainer, though.
 | 
						||
 | 
						||
Finally, a work on very active or current development can start from a topic
 | 
						||
next. This clearly means you **need** this topic as a base for what is intended.
 | 
						||
 |