Skip to content

Releases: OfflineIMAP/offlineimap3

OfflineIMAP v8.0.2

11 Apr 13:07

Choose a tag to compare


layout: page
title: Changelog of mainline

  • The following excerpt is only usefull when rendered in the website.
    {:toc}

OfflineIMAP v8.0.2 (2026-04-11)

Notes

This release focuses on connection reliability, crash prevention, and packaging improvements. Several long-standing issues with STARTTLS hangs, stale pooled connections, and incorrect ui.error calls have been fixed. The build system has been modernized (setup.py removed; pyproject.toml is now authoritative) and Fedora 44 SSL certificate paths are supported.

Bug Fixes

  • Fix imaplib2 hangs on STARTTLS: Servers like Protonmail Bridge that do not respond to CAPABILITY immediately after TLS handshake caused 60-second hangs. Bypass the redundant capability query during STARTTLS and skip the post-login CAPABILITY refresh when STARTTLS was used. (Fixes the STARTTLS reliability issue reported in #222) [kix]

  • Do not shutdown the socket in start_tls: Restore the original _get_capabilities method in a finally block so the connection is not left in a broken state after STARTTLS errors. [kix]

  • Check socket health before returning pooled connections: Stale or dead pooled IMAP connections now go through a select()-based socket check and a NOOP health probe before being handed out. Dead connections are transparently replaced. [kix]

  • Fix 'str' object has no attribute '__suppress_context__' crash: All ui.error() call sites now pass a proper exception object as the first argument instead of a plain string, preventing an AttributeError on Python 3.13. (Fixes #233) [serge-sans-paille]

  • Graceful handling of remote folder retrieval errors: If retrieving the remote folder list fails, the account is skipped instead of crashing the entire sync run. [kix]

  • Robust quick-sync remote folder check: If remotefolder.quickchanged() raises an error, the folder is now assumed changed and a full sync is performed instead of crashing. [kix]

  • Abort remaining auth methods on dead socket: When an authentication method fails and the underlying socket is dead, the remaining methods are skipped immediately instead of producing additional confusing socket errors. [kix]

Changes

  • Fedora 44 SSL CA certificate path: Added the new /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem path for Fedora 44+, while keeping the old path for Fedora ≤ 43. (Fixes #237) [Franklin Bynum]

  • Fix Sphinx intersphinx_mapping syntax in docs/doc-src/conf.py. [Volker Eckert]

  • Move urllib3 from core dependencies to testinternet optional group: urllib3 is only needed for the test/contrib internet helper, not at runtime. [Stephen Huan]

  • Add PySocks as an optional dependency for proxy support. [Stephen Huan]

  • Fix keyring[keyring] dependency to keyring for consistency. [Stephen Huan]

  • Remove deprecated classifiers and adopt PEP 639 license format: License field now uses SPDX expression GPL-2.0-or-later; deprecated GPLv2-only classifier removed. [Stephen Huan]

  • Remove setup.py: The project now uses pyproject.toml exclusively for build configuration. [kix]

  • Version bump to 8.0.2 and .gitignore updated for PyPI build artifacts. [kix]

Authors

  • Rodolfo García Peñas (kix) (17)
  • Stephen Huan (4)
  • Franklin Bynum (1)
  • Volker Eckert (1)
  • serge-sans-paille (1)

OfflineIMAP v8.0.1 (2025-10-28)

Notes

This release includes multiple improvements, bug fixes, and compatibility updates for Python 3.12 and modern systems.

Features

  • Run OfflineIMAP without server connection: The application no longer crashes if the network is temporarily down or the server is unreachable. [kix]

  • Packaging and dependency improvements: requirements.txt split into multiple files, setup.py and pyproject.toml aligned, and improved module startup functions. Easier installation and use with or without optional modules. [kix]

  • Apple Silicon CA certificates support via Homebrew and enhanced CA search paths for Python 3.4+. [Schspa Shi, Keith Bowes]

  • Optional keyring support: OfflineIMAP can be installed without keyring dependencies, with compatibility for the system keyring. [Hugo Osvaldo Barrera, Kirill A. Korinsky]

  • Python 3.12 compatibility: Configuration files with any extension are allowed, and obsolete modules (imp) are avoided. [Hugo Osvaldo Barrera, serge-sans-paille]

Changes

  • Regex and ConfigParser fixes: Raw strings are used in configuration examples to prevent warnings and ensure compatibility. [Derek Schrock, Lilydjwg]

  • Fixed "module importlib has no attribute 'machinery'" by importing the required module. [Tugdual Saunier]

  • Improved foldername_to_imapname(): Escapes and quotes folder names correctly and prevents creating existing folders. [Robo Shimmer]

  • IMAP UTF-7 decoding fixes and filtering for folder names containing spaces. [Lilydjwg, Hubert Pineault, Alessio Pascolini]

  • Message ID and date header error handling: Broken message IDs and invalid date headers no longer cause synchronization failures. [kix, Adam Dinwoodie, Robo Shimmer]

  • Installation examples updated for FreeBSD and Debian; optional packages like distro handled correctly. [kix, Derek Schrock, Chrysle, Alex Gaynor, Adam Dinwoodie]

  • Minor IMAP.py improvements: Password handling and escaping special characters in folder names. [Chris Coleman, Robo Shimmer]

Authors

  • Rodolfo García Peñas (kix) (38)
  • Robo Shimmer (10)
  • Keith Bowes (5)
  • lilydjwg (5)
  • Chris Coleman (4)
  • Adam Dinwoodie (2)
  • Derek Schrock (2)
  • Hugo Osvaldo Barrera (2)
  • Kirill A. Korinsky (2)
  • 0pointerexception (1)
  • alessio-pascolini (1)
  • Alex Gaynor (1)
  • chrysle (1)
  • Hubert Pineault (1)
  • Hugo van Kemenade (1)
  • Luciano Rocha (1)
  • Magarnicle (1)
  • Nicolas Sebrecht (1)
  • peterb-dev (1)
  • Schspa Shi (1)
  • serge-sans-paille (1)
  • Sudip Mukherjee (1)
  • Tugdual Saunier (1)

OfflineIMAP v8.0.0 (2021-10-18)

Notes

Migration to Python 3 and related patches.
New OfflineIMAP3!! Thanks to the contributors!!

This release was tested by:

  • Rodolfo García Peñas (kix)

Authors

  • Rodolfo García Peñas (kix) (353)
  • Joseph Ishac (22)
  • Thomas De Schampheleire (6)
  • Sudip Mukherjee (4)
  • Nicolas Sebrecht (3)
  • Phil Mocek (2)
  • Amit Ramon (1)
  • Ashish Panigrahi (1)
  • Ben Yanke (1)
  • Guido Günther (1)
  • Jaroslav Lichtblau (1)
  • Konstantinos Natsakis (1)
  • mh (1)
  • peeweep (1)
  • Pi-Yueh Chuang (1)
  • Xianwen Chen (1)

Features

  • New source for Python 3

OfflineIMAP v7.3.0 (2019-08-19)

Notes

Here comes a new release.

The upstream imaplib2 project is discontinued. That's why I've decided to take
over the maintenance of imaplib2 for offlineimap.

For the use of offlineimap I've applied the pending PRs from imaplib2. I have
applied another change sent to offlineimap (see OfflineIMAP/offlineimap#623).

However, there are 3 important limitations:

  • I intend to maintain imaplib2 for offlineimap only. Everything will take place
    in the offlineimap project. I'll neither package imaplib2 nor maintain any
    "official" repository dedicated to imaplib2. If you want imaplib2 but not
    offlineimap, you should extract the file offlineimap/bundled_imaplib2.py from
    the offlineimap repository. Please, send your patches for imaplib2.py to the
    offlineimap project directly.

  • Starting from imaplib2 v2.100 (tagged: imaplib2-v2.100) I'm taking the patches
    in the lazy mode. This means that I won't make deep checks/tests of the
    changes. Hence, the quality and the stability might become a bit more
    fluctuating. For more stability, you might like to only consider the imaplib2
    versions released with the stable versions of offlineimap. Don't expect
    changelogs dedicated to imaplib2. They will be part of the offlineimap
    changelogs.

  • All of this only applies to the py2 version of imaplib2. Sadly, offlineimap
    has few chances to be ported on py3 so I don't aim to maintain the py3 version
    of imaplib2.

In this release, offlineimap is learning Happy Eyeballs.

This release was tested by:

  • Nicolas Sebrecht

Authors

  • Nicolas Sebrecht (4)
  • Ben Cotterell (1)
  • Dario Maiocchi (1)
  • Ilias Tsitsimpis (1)
  • Julien Cristau (1)
  • Olivier Mehani (1)

Features

  • Implement Happy Eyeballs. [Olivier Mehani]
  • imaplib2 v2.101. [Nicolas Sebrecht]
  • imaplib2 v2.100. [Nicolas Sebrecht]

Changes

  • Update readme to give an hint about Linux distros. [Dario Maiocchi]
  • travis: remove python3.6. [Nicolas Sebrecht]
  • README: add required dependency to rfc6555. [Nicolas Sebrecht]

imaplib2

  • Do not use TIMEOUT_MAX for Condition.wait(). [Ilias Tsitsimpis]
  • Use SSLContext if available so we send SNI. [Julien Cristau]
  • Don't expect trailing space on command completion. [Ben Cotterell]

OfflineIMAP v7.2.4 (2019-06-08)

Notes

This release introduces mkdir -p alike folder creation and fixes cygwin support
in Windows.

This release was tested by:

  • Nicolas Sebrecht

Authors

  • Nicolas Sebrecht (4)
  • kimim (2)
  • Jelmer Vernooij (1)
  • Kyle Altendorf (1)

Features

  • mkdir -p alike folder creation. [Kyle Altendorf]

Fixes

  • Use portable locker to support cygwin in Windows. [kimim]
  • contrib/release.py: don't break if sphinx-build is missing. [Nicolas Sebrecht]

Changes

  • Update FSF postal address. [Jelmer Vernooij]
  • repository/IMAP: update copyright header date. [Nicolas Sebrecht]
  • PULL_REQUEST_TEMPLATE: add space between brackets to enable the edition in the gui. [Nicolas Sebrecht]

OfflineIMAP v7.2.3 (2019-02-17)

Notes

A tiny release for one minor bug fix.

This release was tested by:

...

Read more