Skip to content
Thomas Schmid edited this page Mar 29, 2022 · 13 revisions

The WebExtension runs inside Thunderbird. It is limited due to the WebExtension policies, but also very small as it is uses Thunderbird as runtime.

How to start

The menu items to open the editor is directly adjacent to the builtin message filters.

Menu Bar

image

Burger Menu (68)

image image

Burger Menu (78+)

image image

How to install a side loaded WebExtension

You can install the addon directly from this repository e.g. to test a nightly build.

Download the desired build from azure or in case it is a release from the releases section.

If you are a Firefox user, you need to right click on the "Thunderbird WebExtension" link and select "Save Link As" otherwise Firefox tries to install the WebExtension into your browser and ends with an error message.

In Thunderbird you need to open the add-on manager. Either via the burger menu or via the main menu bar (Tools -> Add-ons). Then just drag the downloaded xpi file into the add-on Manager. You can also select the gear icon in the add-on manager and select "Install add-on from file" as illustrated below.

image

Change Language

The WebExtension will use Thunderbird's default language.

In case the language is not supported by the webextension it will fallback to English.

Thunderbird's default language can be changed in the "Options" select there "Advanced" and locate the "Language" dropdown. Setting languages is only possible on official Thunderbird releases, nighties support only en-US.

image

Logging & Debugging

Enable debugging for the account to be analyzed. You to this by opening the settings tab and clicking on debug. debugging

Request, Responses as well as the Raw Dump, contain confidential data like your credentials. Be sure to obfuscate them before uploading the log.

The logs can be found in the error console. Before Thunderbird 68 the logging for WebExtensions was completely screwed up or broken. But they fixed it, now WebExtension will log into the error console like the legacy addons used to do.

image

Secure connection

The WebExtension always uses a secure and encrypted connection and there is no option to turn this off. This is a hard required by Mozilla's addon policies which state "Add-ons must use encryption when transporting data remotely".

If you need to connect to an non secured server use the standalone application this does not have this limitation.

Unrestricted Permissions

Thunderbird's help/support page writes the following:

"The extension is using an older technology and has full access to Thunderbird’s internal APIs and does not need to request individual permissions. Up to Thunderbird 68 almost every add-on had this unrestricted access without specifically asking for it. Add-ons request this permission, as long as the new permission based API system does not yet offer the functionality they need."

This means in short, Thunderbird's permission system is inherited from Firefox and is basically a square cow fitted into a round hole. It is too single minded, that it will ever have a chance to fly with a mail client.

The long version is, currently Thunderbird WebExtension API does not offer any API for TCP Sockets, and it is unlikely to change in the future. So the only chance for the WebExtension is to stick with the internal API. And the internal APIs is exactly what the legacy add-on used for the last one and a half decade. So technically nothing changed from the permission side.

Settings

WebExtensions are technically and politically limited compared to classic addons. Thus they will never be able to reach feature parity with the app or the legacy addon.

For example WebExtension do not provide any kind of a usable and reliable preference system. There are workaround but all are hacky. And it easily happens that you loose all the settings upon an extension update.

Thus the hostname and username is read from the mail account. This happens exactly once when the addon is loaded/started. The port is hard coded to the default one specified in the RFC. TLS is set to forced, because Mozilla's addon policies require WebExtension to communicate only over encrypted channels, otherwise they will fail when being reviewed.

If you need to configure a custom port, just use the standalone application. It has full feature parity with the legacy add-on and allows you to freely configure the settings.