This fork exists to provide a Sieve build with CRAM-MD5 authentication for
Thunderbird and Windows distribution from ecxod/sieve.
Version 0.8.21 is the latest stable release for both distributed packages:
- Windows:
install_sieve_0.8.21.exe - Thunderbird:
sieve-0.8.21-cram-md5.xpi
- CRAM-MD5 is part of automatic SASL mechanism selection and the manual authentication mechanism list. The implementation includes the HMAC-MD5 calculation required by RFC 2195 and tests against the RFC 2195 reference exchange.
- Starting with
0.6.1.2, the editor no longer checks syntax automatically after every change. The server validates a script when it is saved, and a dedicated Syntax check button allows an explicit check without saving. This is the fork's first deliberate editor-behaviour difference from the upstream project and prevents multiple open editor tabs from continuously starting server-side syntax checks while typing or pasting. - Version
0.6.1.3keeps the syntax error panel hidden when an editor opens. It becomes visible only when the manual syntax check reports an actual error. - Version
0.6.1.4identifies the Windows application as theecxod/sieveCRAM-MD5 fork in a small persistent footer. It also removes the donation buttons and the project's donation links and metadata. - The Windows application offers System, Light, Dark, Dark Light, and AMOLED under Settings → Appearance. The dark variants use clearer card and button edges, while AMOLED uses a black background. The selected theme is persisted and is applied to the application, all open tabs, and CodeMirror syntax highlighting.
- Server cards on Home can be reduced to their server name by clicking the server-name tab. This state is stored per server; a collapsed server does not load its script list until it is expanded.
- Version
0.6.1.5keeps the server name visible when a server card is collapsed and moves the global appearance setting to a fixed Settings tab on the right side of the main tab bar. Server capabilities can now also be opened while disconnected: the app connects temporarily, reads the capabilities, and disconnects again. SASL mechanisms learned during the connection handshake remain visible if a later capability response omits them, andi-defaultis identified as the server's default response language. A connected server offers only Disconnect, while a disconnected server offers only Connect; duplicate connection attempts are blocked. The delete button is disabled for the active script, and its delete handler and backend refuse the operation as an additional safeguard. Textual account settings and script names are trimmed before use and persistence; passwords and script contents remain unchanged. - The Windows application has no built-in Sentry project. Its global Settings tab accepts an optional user-owned Sentry DSN for error reporting. An empty DSN keeps tracking disabled, which is the default, and the SDK is configured not to send default personally identifiable information or performance traces.
- Version
0.6.1.6makes a collapsed server's name an additional expand control and explicitly handles the fixed global Settings tab so its appearance and Sentry options reliably open when clicked. - Version
0.6.1.7removes the separate account-collapse button: the server-name tab now expands and collapses the card. Connecting or disconnecting selects the server's script tab, and New script is visible only while connected. - Version
0.6.1.8fixes the global Settings tab so its appearance and Sentry controls are rendered instead of an empty page. Initialization errors are shown visibly instead of leaving the settings view blank. - Version
0.6.1.9gives the Thunderbird fork its own extension ID,sieve-cram-md5@ecxod.github.io, and identifies the extension as Sieve CRAM-MD5 byecxod. Its homepage, update source, and issue tracker all point toecxod/sieve; Thunderbird can therefore no longer merge upstream catalogue metadata or upstream releases into this fork. - Version
0.6.1.10enables error reporting for the Thunderbird extension with the fork'ssentry.zp1.netproject, because the Windows-only settings band is not part of the XPI. Background connection errors, UI initialization errors, and unhandled exceptions are reported without deliberately attaching account IDs; common password and credential fields are redacted. A failed UI/IPC connection attempt now always renders the final connection state instead of leaving the server card on Connecting. - Version
0.6.1.11exposes privileged Thunderbird Experiment errors instead of replacing them with An unexpected error occurred. It also reports asynchronous socket-transport setup failures, includes the attempted host and port in connection diagnostics, ignores the expected missing-receiver race when an accounts tab closes, and emits one XPI-originated Sentry startup verification event per version. - Version
0.6.1.12awaits Thunderbird's asynchronous menu APIs and skips menu locations which do not exist in the installed Thunderbird version. This prevents several generic startup errors caused by rejected Experiment API promises. Expected request cancellation while closing the last Sieve tab is no longer reported as an error, and Sentry titles now identify the component and operation which failed. - Version
0.6.1.13keeps socket setup and socket writes in the connection promise chain. Privileged API failures can therefore no longer escape as an unhandled rejection while the UI waits forever for a server greeting. It also loads the modernServices.sys.mjsmodule on current Thunderbird and retains the legacy module fallback for older supported versions. - Version
0.6.1.14adds the individual socket setup stage to errors before they reach the UI and Sentry. Its attempted port-schema correction was incomplete and is superseded by0.6.1.15. - Version
0.6.1.15corrects the socket schema to matchSieveUrl, which supplies the port as a string, and explicitly normalizes socket creation tostring,string,integerfor host, port, and log level. - Version
0.6.1.16removes the optional diagnostic log level from the privileged socket creation boundary. Socket creation now validates only the required host and port strings and uses level zero internally. - Version
0.6.1.17returns socket-construction failures as structured data instead of throwing them across Thunderbird's Experiment boundary, which preserves the original privileged Gecko/XPCOM error for the UI and Sentry. It also delays event-target lookup until the network transport is created. - Version
0.6.1.18registers the socket transport as a new, versioned Thunderbird Experiment API with new schema and implementation filenames. This prevents a cached pre-0.6.1.17 API definition from handling the call. A generation probe before socket creation makes any remaining API loading failure distinguishable from a network-transport failure. - Version
0.6.1.19removes all Gecko module imports from top-level socket Experiment initialization.Servicesis loaded lazily only after the v3 generation probe succeeds, and socket errors use the built-inErrorclass instead of importingExtensionError. This prevents a version-specific module import from disabling every method in the Experiment API. - Version
0.6.1.20upgrades STARTTLS through Gecko's currentnsITLSSocketControl.asyncStartTLS()API while retaining the legacynsISSLSocketControl.StartTLS()fallback. TLS upgrade failures are returned as structured diagnostics instead of being hidden by the Experiment bridge. The TLS fix ships as socket Experiment generation v4 so Thunderbird cannot reuse the pre-fix v3 implementation from its startup cache. - Version
0.6.1.21restores server management inside the Thunderbird XPI without reintroducing the desktop application's top tab bar. The accounts page has a persistent Add Server action for independent ManageSieve connections, and each server's Settings pane contains Delete Server. Deleting removes only the extension configuration (or hides a server derived from Thunderbird); it never deletes the Thunderbird mail account or any server-side Sieve scripts. Passwords for independently added servers are requested when connecting and are not persisted by the extension. - Version
0.6.1.22wires the Thunderbird accounts page to its concrete account-list controller. This activates both the Add Server handler and the confirmed Delete Server action;0.6.1.21rendered the controls but still instantiated the abstract controller, so deletion failed at runtime. - Version
0.6.1.23makes Thunderbird's IMAP and POP accounts authoritative: they are discovered automatically whenever the server list is rendered and can no longer be hidden or deleted independently inside Sieve. Any suppression saved by0.6.1.21or0.6.1.22is removed during migration. The delete section is shown only for manually created standalone ManageSieve servers. The manual fallback is now a large, explicitly translated Create Server button instead of an unlabelled compact control. - Version
0.7.0enables Thunderbird's standard Options button and adds an inline extension options page with I am a developer. Developer mode is disabled by default; the per-server Debugging button is rendered only while the checkbox is enabled. The preference is stored locally and does not alter server configuration. - Version
0.7.1removes the hard-coded Thunderbird Sentry project DSN and adds an optional DSN field to the standard Options page. The field is empty by default, so no error report is transmitted until the user enters and saves a valid HTTPS DSN onsentry.zp1.net. Clearing and saving the field disables reporting again. The synthetic per-version startup report is removed; only actual errors are reported after explicit configuration. - Version
0.7.2is the first stable release using the same version number for the Windows installer and Thunderbird XPI. The extension adds one Thunderbird → Sieve tab per discovered mail account. It reads that account's Thunderbird message filters and displays each source rule beside a conservative Sieve translation. Unsupported, disabled, or semantically different rules are guarded withfalseand carry review warnings. Existing server scripts are compared by generated import ID and matching rules are highlighted in yellow. A generated block can be copied, or inserted directly into a selected existing Sieve script. Direct saving adds missingrequirecapabilities, checks the complete script on the server, refuses stale overwrites, and leaves script activation unchanged. Managed boundary markers allow an unchanged imported rule to be updated safely. The source rule can be opened in Thunderbird's native filter editor; deletion is offered only after its imported block is found and requires a second confirmation click. The accounts page also shows the add-on name beside Create Server and the same fork/version footer as the Windows application. - Version
0.7.3adds a Make pretty action to the source-code editor. It formats Sieve blocks with tabs and line breaks, preserves strings, comments, and multiline text, and applies the result as one undoable editor change. It also compares an editor with the script state last loaded from or saved to the server when the tab is closed. Changed scripts require an explicit save or discard decision; cancelling or a failed save leaves the editor open. - Version
0.8.0extends Make pretty with real nested indentation for string lists and test arguments. Editor settings control tabs or spaces, indentation width, compact or multiline lists and tests, and whether opening block braces start on the same or the next line. It also adds a global settings backup to the Windows application. The backup exports and restores all server, login, editor, appearance, and optional Sentry settings. Remembered passwords can be included for a portable login backup; the UI warns that they are readable in the JSON file, and the importer encrypts them for the destination operating-system user before replacing the validated settings. - Version
0.8.6adds a Spam tab to the Thunderbird extension and Windows application. It browses and searches the account's spam folder, shows raw headers and rule parameters, restores selected messages safely toINBOX, and can append matching allow or block rules to a selected Sieve script. Restoring a message appends the cleaned message before deleting its spam source or duplicate, and rule saving refuses duplicate or stale changes. Make pretty can now insert optional blank lines after the leadingrequiresection and completeif/elsif/elsechains. The Windows Settings tab also shows the installed and latest GitHub release and can download and launch the exact release installer after validating its size and SHA-256 digest. - Version
0.8.7adds an opt-in Make pretty setting which sorts consecutive, independent top-levelifchains alphabetically by their one unambiguous quotedfileintodestination. Leading comments and completeelsif/elsechains move with the corresponding rule; ambiguous, nested, or malformed rules and intervening non-ifstatements remain in place. The setting is available and persisted in both the Windows application and the Thunderbird extension. Compact list and condition formatting can also ignore existing comma line breaks on request. A saved personal script can now be applied manually to a confirmed snapshot of non-deleted Sent messages when the IMAP server offersFILTER=SIEVE; the action verifies UIDVALIDITY, excludes messages arriving after confirmation, and never performsEXPUNGE. - Version
0.8.8adds an Inbox tab to the Thunderbird extension and Windows application. It lists and searches Inbox messages, opens a rule editor with copyable raw headers, and can lint, format, and safely append the rule to a selected Sieve script. Literalfileintotargets are checked against the account's IMAP folders before saving. Make pretty can now combine safe groups of equivalent siblingifrules into oneanyofrule and can add:createplus the requiredmailboxcapability tofileintoactions. Both transformations are opt-in and preserve comments, strings, and multiline text. The Windows updater now reports its current phase, byte count, and percentage while downloading and starting a verified installer. - Version
0.8.9displays Inbox dates asyyyy.mm.dd, hh:mm:ssand orders messages by their real timestamp with the newest first. The Inbox adds a guarded Run Sieve now action which applies the active personal script to exactly the newest message after rechecking its identity and UIDVALIDITY; moved or discarded originals may be marked deleted, but the action never performsEXPUNGE. Account cards on Home are now sorted alphabetically by their visible name, and Electron waits for each card render so asynchronous completion can no longer randomize the order. - Version
0.8.10checks the ManageSieve connection before the Inbox rule editor loads the Add to Sieve script selector. If the account is offline, the application connects it automatically, verifies that the connection is active, updates the account indicator, and only then retrieves the scripts. - Version
0.8.11applies Run Sieve now to the explicitly selected Inbox message instead of assuming the newest message. It rechecks the message and UIDVALIDITY and still never issuesEXPUNGE. The Inbox rule editor shows possible existing sender, domain, recipient, and subject rules with nearby source context in a separate read-only field. Successful syntax checks turn their button green and fade back gradually. The Windows appearance dialog adds Dark Light and black AMOLED themes with clearer card and button borders. A Debian/Devuan package recipe is included without systemd or maintainer scripts. - Version
0.8.12creates missing literalfileintodestinations before Run Sieve now and displays the server's returned action report. The Inbox adds a Spam action which marks and moves the exact selected message to Junk and queues authenticated Rspamd training. The shortened selection heading and a per-message context menu make the table more compact. The rule modal now uses the same CodeMirror Sieve source editor as the full editor, including syntax highlighting, line numbers, bracket matching, and theme synchronization. - Version
0.8.13corrects the Inbox rule modal to use the full editor's graphical Script editor instead of its Source editor. Generated and edited rules are parsed into the existing graphical Sieve blocks, with the connected server's capabilities and the application theme passed through. - Version
0.8.14opens the Inbox rule modal immediately with visible loading and error feedback. It removes the graphical editor's generatedrequirecommands before validating or appending the rule snippet, so the resulting complete server script remains valid and can be saved. - Version
0.8.15fixes in-place Windows upgrades while Sieve is running. The installer asks the user to save open changes, closes the Electron process via the Windows Restart Manager with a targetedtaskkillfallback, verifies thatsieve.exeandchrome_100_percent.pakare replaceable, and reports a retryable error instead of leaving a partial installation. - Version
0.8.16fixes the empty Inbox rule modal. Message headers and the generated rule source are rendered before ManageSieve is connected, similar rules show an explicit result, and the complete editor now exposes the synchronized graphical Script and Source tabs. Required capabilities are enabled in the graphical parser, while a parser or connection error leaves the source visible with an actionable message. - Version
0.8.17prevents similar-rule inspection from remaining at its loading message. The generated graphical rule is rendered before connecting, the redundant account-wide script listing was removed, the current loading phase is shown, and stalled server operations end with a visible timeout. - Version
0.8.18fills the Inbox rule editor's target-script selector before reading individual script bodies and removes the non-canceling overall timer which could leave later source requests waiting behind abandoned work. The active script is inspected first, closing the modal stops further inspection requests, and a failed individual inspection no longer empties the selector. The Windows application also adds a visible Close action beside Settings; it and the native window close control both check open editors, disconnect ManageSieve sessions, and terminate the Electron process. - Version
0.8.20fixes Thunderbird 121+ Inbox listing, ManageSieve connection recovery, IMAP host/path handling, and targeted execution of the selected Inbox message with UIDPLUS EXPUNGE. Refresh now synchronizes Thunderbird's Inbox database with the IMAP server. Similar existingifrules are shown separately and can be loaded into the graphical/source editor; saving replaces only the exact unchanged source rule in its original Sieve script. The loaded rule's first literalfileintodestination and originating script are reflected in the modal controls. - Version
0.8.21gives the Electron Inbox refresh action an explicit IMAP synchronization and performs the same UIDPLUS-targeted EXPUNGE as the Thunderbird add-on after a successful selected-message Sieve run. The Thunderbird Add-ons Manager's release information now opens the release's README, which includes a dedicated Thunderbird add-on section. Thunderbird's unified mail toolbar also receives a Sieve button which opens or focuses the account and script overview. Inbox and Spam tables now paginate 10, 20, 50, or 100 messages after searching the complete loaded folder. The Inbox context menu uses Thunderbird's native display, reply, and forward actions; Electron uses dedicated display and compose dialogs and opens completed drafts in the default email program.
These differences are maintained alongside the fork packaging and distribution metadata, updater links, and the Thunderbird settings display fix.
Unused upstream infrastructure has been removed from the fork: Azure pipelines,
the development-only tools collection, obsolete editor and service
configuration, and stale upstream planning and governance documents. The
gulp directory remains because it contains the active build, packaging, and
test tasks for the Windows application, Thunderbird extension, and shared code.
The obsolete src/TODO.md file has also been removed.
Versions through 0.6.1.8 used the upstream extension ID. Thunderbird cannot
change an installed extension's ID during an automatic update. Remove the old
Sieve extension and install 0.8.0 once; subsequent fork releases update
normally under the new ID. Do not keep both extensions installed at the same
time. Extension preferences are stored per ID, so custom Sieve connection
settings may need to be entered again after this one-time migration.
The installable package is
releases/sieve-0.8.21-cram-md5.xpi.
It supports Thunderbird 121 through 154. The upper compatibility limit is required because the extension uses MailExtension Experiments and must be verified again for each new Thunderbird major version.
SHA-256: 97980fd2df4f731379fc7beb045bd33e42178f0ed534e5f6243c6d424467e33e
Thunderbird displays Have full, unrestricted access to Thunderbird, and
your computer because this extension includes Experiment APIs. The
privileged socket Experiment is required for the raw ManageSieve TCP
connection and STARTTLS upgrade, which the standard MailExtension APIs do not
provide. The packaged implementation does not access local files, launch
processes, or invoke a shell. Its ordinary manifest permissions cover account
and message access needed by the Spam tab, including explicit message restore,
move, import, update, and deletion operations. It also manages its tabs and
local settings and can reach https://sentry.zp1.net/ only if the user
explicitly configures a DSN.
The installable Windows package is
releases/install_sieve_0.8.21.exe.
SHA-256: 4d0691872e4a0836abb8f0168e906a4ac9a77cdf66c1483045732413d361c956
The existing Electron application can also be packaged for Debian-compatible Linux systems, including Devuan, without systemd or maintainer scripts:
npm run package-linux-debThe resulting build/sieve-<version>-linux-amd64.deb installs the application
under /opt/sieve-cram-md5, the launcher as /usr/bin/sieve-cram-md5, and a
desktop-menu entry with the application icon.