| OfflineIMAP | |
|---|---|
![]() | |
OfflineIMAP with TTYUI interface | |
| Original author | John Goerzen |
| Developer | Nicolas Sebrecht et al. |
| Initial release | 2002; 24 years ago (2002) |
| Stable release | 7.3.4 (August 3, 2021; 4 years ago (2021-08-03)) [±][1] |
| Written in | Python |
| Operating system | Unix-like,Windows |
| Available in | English |
| Type | Emailsynchronization |
| License | GNU GPLv2+ |
| Website | www |
| Repository | |
OfflineIMAP isIMAPsynchronizationutility software, capable of synchronizing mail on IMAP server with localMaildir folder[2] or another server.
The synchronization is performed bidirectionally between two endpoints ("Remote" and "Local" repositories).[3]
OfflineIMAP accesses mail servers only viaInternet Message Access Protocol. (It does not supportPost Office Protocol, another popular way to get mail from a server.)[4] It works faster (though it is sensitive to connection's latency) and supports more advanced features than mostmail clients.[5] A special mode for better handling the non-standard implementation of IMAP inGmail may optionally be enabled in aconfiguration file.[6]
When configured to store mail locally, OfflineIMAP uses theMaildir format.[3]Unix mail boxes support may be added in the future, though currently it is not implemented.[6]
Several synchronization accounts, each consisting of Remote and Local repositories, may be defined in configuration file. Each repository is then configured separately, allowing to specify credentials and access method.[3]
OfflineIMAP is capable of filtering the folders of Remote repository, so that only partial synchronization would occur if needed. To use this capability one has to define themask that would be matched against the list of folders with each synchronization. This is achieved by usingPython'slambda capability; for example, to synchronize only "INBOX", "Sent Mail" and "Received" folders one should specify the following rule:[5]
folderfilter=lambdafoldername:foldernamein["INBOX","Sent Mail","Received"]
Remaining folders' names may be altered (translated) using similar construct:[3]
nametrans=lambdafoldername:re.sub("^Sent$","root/Sent",re.sub("^(\[G.*ail\]|INBOX)","root",foldername))
This technique may also be used to synchronize the content of an IMAP server to the folder of another server.[5]
Each account has to use separate directory; otherwise the synchronization process may suffer from unexpected behavior or even data loss.[5]
OfflineIMAP provides severalcommand-line interfaces, including interactive colorcurses-based,non-interactiveconsole logging, and several yet less verbose modes.[3]Tk-basedgraphical user interface is also available.[5]