58d34df29f
In case of an exception in XOAUTH2 code refresh (HTTP Error 400: Bad Request), following exception occurs: ERROR: While attempting to sync account 'xxx' __init__() missing 3 required positional arguments: 'msg', 'hdrs', and 'fp' Traceback: File ".../offlineimap3/offlineimap/accounts.py", line 298, in syncrunner self.__sync() File ".../offlineimap3/offlineimap/accounts.py", line 374, in __sync remoterepos.getfolders() File ".../offlineimap3/offlineimap/repository/IMAP.py", line 648, in getfolders imapobj = self.imapserver.acquireconnection() File ".../offlineimap3/offlineimap/imapserver.py", line 591, in acquireconnection self.__authn_helper(imapobj) File ".../offlineimap3/offlineimap/imapserver.py", line 448, in __authn_helper if func(imapobj): File ".../offlineimap3/offlineimap/imapserver.py", line 382, in __authn_xoauth2 imapobj.authenticate('XOAUTH2', self.__xoauth2handler) File ".../offlineimap3/venv/lib/python3.7/site-packages/imaplib2.py", line 682, in authenticate typ, dat = self._simple_command('AUTHENTICATE', mechanism.upper()) File ".../offlineimap3/venv/lib/python3.7/site-packages/imaplib2.py", line 1675, in _simple_command return self._command_complete(self._command(name, *args), kw) File ".../offlineimap3/venv/lib/python3.7/site-packages/imaplib2.py", line 1395, in _command literal = literator(data, rqb) File ".../offlineimap3/venv/lib/python3.7/site-packages/imaplib2.py", line 2238, in process ret = self.mech(self.decode(data)) File ".../offlineimap3/offlineimap/imapserver.py", line 257, in __xoauth2handler raise type(e)(msg, exc_info()[2]) The exception 'e' is of type HTTPError, which does not have the same kind of constructor as normal Python exceptions. Instead, print the constructed message and just raise the existing exception. With that change, the same condition triggers another problem further on: ERROR: While attempting to sync account 'xxx' tuple index out of range Traceback: File ".../offlineimap3/offlineimap/accounts.py", line 298, in syncrunner self.__sync() File ".../offlineimap3/offlineimap/accounts.py", line 374, in __sync remoterepos.getfolders() File ".../offlineimap3/offlineimap/repository/IMAP.py", line 648, in getfolders imapobj = self.imapserver.acquireconnection() File ".../offlineimap3/offlineimap/imapserver.py", line 664, in acquireconnection elif isinstance(e, socket.error) and e.args[0] == errno.ECONNREFUSED: because e.args is empty. |
||
---|---|---|
.github | ||
bin | ||
contrib | ||
docs | ||
offlineimap | ||
scripts | ||
test | ||
tests | ||
.coveragerc | ||
.gitignore | ||
.travis.yml | ||
Changelog.maint.md | ||
Changelog.md | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.rst | ||
COPYING | ||
MAINTAINERS.rst | ||
Makefile | ||
MANIFEST.in | ||
offlineimap.conf | ||
offlineimap.conf.minimal | ||
offlineimap.py | ||
README.md | ||
requirements.txt | ||
setup.cfg | ||
setup.py | ||
snapcraft.yaml | ||
TODO.rst |
Upstream status (master
branch):
Upstream status (next
branch):
Links:
- Official github code repository: offlineimap
- Website: website
- Wiki: wiki
- Blog: blog
OfflineIMAP
"Get the emails where you need them."
[Official offlineimap][offlineimap3].
Description
OfflineIMAP is software that downloads your email mailbox(es) as local Maildirs. OfflineIMAP will synchronize both sides via IMAP.
Why should I use OfflineIMAP?
IMAP's main downside is that you have to trust your email provider to not lose your email. While certainly unlikely, it's not impossible. With OfflineIMAP, you can download your Mailboxes and make you own backups of your Maildir.
This allows reading your email offline without the need for your mail reader (MUA) to support IMAP operations. Need an attachment from a message without internet connection? No problem, the message is still there.
Project status and future
OfflineIMAP, using Python 3, is based on OfflineIMAP for Python 2. Currently we are updating the source code. These changes should not affect the user (documentation, configuration files,... are the same) but some links or packages could refer to the Python 2 version. In that case, please open an issue.
License
GNU General Public License v2.
Downloads
You should first check if your distribution already packages OfflineIMAP for you. Downloads releases as tarball or zipball.
If you are running Linux Os, you can install offlineimap with:
- openSUSE
zypper in offlineimap
- Arch Linux
pacman -S offlineimap
- fedora
dnf install offlineimap
Feedbacks and contributions
The user discussions, development, announcements and all the exciting stuff take place on the mailing list. While not mandatory to send emails, you can subscribe here.
Bugs, issues and contributions can be requested to both the mailing list or the [official Github project][offlineimap3]. Provide the following information:
- system/distribution (with version)
- offlineimap version (
offlineimap -V
) - Python version
- server name or domain
- CLI options
- Configuration file (offlineimaprc)
- pythonfile (if any)
- Logs, error
- Steps to reproduce the error
The community
- OfflineIMAP's main site is the [project page at Github][offlineimap3].
- There is the OfflineIMAP community's website.
- And finally, the wiki.
Requirements & dependencies
- Python v3+
- rfc6555 (required)
- imaplib2 >= 3.5
- gssapi (optional), for Kerberos authentication
- portalocker (optional), if you need to run offlineimap in Cygwin for Windows
Documentation
All current and updated documentation is on the community's website.
Read documentation locally
You might want to read the documentation locally. Get the sources of the website. For the other documentation, run the appropriate make target:
$ ./scripts/get-repository.sh website
$ cd docs
$ make html # Requires rst2html
$ make man # Requires a2x (http://asciidoc.org)
$ make api # Requires sphinx