Betterbird Blog

What’s going on in the project

Finally no encoding issues with the re-issued certificate. See our previous post for details.

As outlined in our previous post, a self-signed certificate cannot be used to build Windows SmartScreen reputation. So we obtained a code-signing certificate from Certum, a recognised provider.

We re-issued Betterbird 140.7.1-bb18 signed with the certificate, but as you can see, even in the 3rd millennium, processing of non-ASCII data is still not working everywhere. The umlaut in our CEO's name "Jörg" is shown as replacement character �. However, if a system locale with UTF-8 support is selected enter image description here

the SmartScreen displays the correct information: enter image description here

We'll take the issue up with the certificate provider.


Update: Looks like Certificate Authorities are a pretty bureaucratic bunch. We had to revoke the certificate and go through the entire process again. As a result with ended up with a certificate without umlaut and encoding issue.

Why is Windows SmartScreen blocking so many installations? According to AI, SmartScreen uses various signals:

File reputation (the big one)

SmartScreen maintains a reputation score for that exact file hash:

  • How many people have downloaded it
  • How many have run it
  • Whether users aborted or overrode warnings
  • Whether it’s been reported as malicious

A brand-new binary has zero reputation, so it gets flagged even if it’s harmless.

Publisher reputation (certificate reputation)

This is where code signing comes in — but with a catch.

  • A standard code-signing certificate starts with no reputation
  • Reputation is built over time as many users run binaries signed with that cert
  • Until then, SmartScreen still shows “Windows protected your PC”

So signing helps, but it does not give instant trust, unless an (expensive) Extended Validation) code-signing certificate is used. Using a self-signed certificate as "Trusted Root" may even have a worse rating as consequence.

We finally bought a code-signing certificate from the reputable source Certum, since they have a special deal for open source developers. Their CA is present on every Windows installation, see here in the Certificate Manager: Certificate Manager with Certum

So expect a further announcement when our binaries are signed with the new certificate. Over time, the reputation in SmartScreen will also improve.

This article was partly created with the help of AI, however, manual adjustments were made where needed.

As you may know, the is a Betterbird subreddit at https://www.reddit.com/r/Betterbird/. Reddit offers to deliver content via RSS feeds by simply appending .rss to the end of a URL. So we're subscribed to two feeds:

  • https://www.reddit.com/r/Betterbird/.rss
  • https://www.reddit.com/r/Betterbird/comments/.rss

not because we love it so much, but to monitor support queries coming in via the channel.

A while ago we noticed that those Reddit feeds were in error, see picture above. So we went to debug this. Reddit was in fact replying to the request to fetch the feed with a 403 error "Forbidden". First we compared the behaviour with Thunderbird on a different profile, which actually worked. Goodness gracious, Betterbird wasn't better than Thunderbird? We couldn't rest until the issue was solved.

Carefully analysing the code changes in the Feeds code, we didn't see anything that would explain the different behaviour. So we went in with Mozilla's very helpful error console and looked at the requests. Here they are:

GET /r/Betterbird/comments/.rss HTTP/2
Host: www.reddit.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Thunderbird/140.6.0
Accept: application/atom+xml,application/rss+xml;q=0.9,application/feed+json;q=0.9,application/rdf+xml;q=0.8,application/xml;q=0.7,text/xml;q=0.7,application/json;q=0.7,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br, zstd
If-Modified-Since: Sat, 01 Jan 2000 00:00:00 GMT
DNT: 1
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

On our test with Thunderbird, we noticed that it sent:

GET /r/Betterbird/comments/.rss HTTP/2
Host: www.reddit.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:140.0) Gecko/20100101 Thunderbird/140.5.0
Accept: application/atom+xml,application/rss+xml;q=0.9,application/rdf+xml;q=0.8,application/xml;q=0.7,text/xml;q=0.7,*/*;q=0.1
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br, zstd
If-Modified-Since: Sat, 01 Jan 2000 00:00:00 GMT
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

Spot the difference? Yes, Betterbird also accepts application/feed+json and application/json since it supports JSON feeds, but more importantly the DNT: 1 header. That's the "do not track" header which gets sent when preference privacy.donottrackheader.enabled is enabled. And lo and behold, that preference was set in the profile that showed the error, but was not set in the profile used for testing with Thunderbird.

More information on Mozilla's "Do Not Track" an be found here.

So what's the take-away? Well, If something doesn't work, try it on a new profile first. You many have set a preference years ago and forgotten about it, and suddenly this preference becomes the determining factor of a new malfunction. But why suddenly a new malfunction? This is what AI had to say:

Reddit applies heuristic request filtering to unauthenticated RSS feed access. Depending on request headers, such as the presence of the DNT (Do Not Track) header, otherwise valid feed requests may be classified as automated traffic and rejected with HTTP 403. This appears to be part of Reddit’s general effort to limit uncontrolled scraping by non-browser clients, while still allowing access from regular browsers and well-known search engine crawlers.

We already talked about ghost menus in this article. Here is some more information.

For some users these ghost menus (occasionally) happen, when this Windows performance option is selected: enter image description here

This setting determines the internal value of preference ui.prefersReducedMotion, for those interested in code, this can be found here. The problem in Betterbird was that we exposed the preference, and set its value to 0 with the effect that the system behaved as if the Windows performance option were set. Since Betterbird 140.6.0 the preference is no longer set and its internal value depends on the Windows option again.

To get rid of the ghost menus there are three options:

  • Switch off the Windows performance option
  • Set preference ui.prefersReducedMotion to a value of 1
  • Set preference widget.windows.mica.popups to a value of 0.

The root cause of the issue is that the newly introduced translucent mica menus aren't stable enough in the Mozilla platform code at version 140. Users who wish to have animation should switch off those menus. In later versions of the Mozilla platform code, the problem appears to be fixed.

Mozilla Profiles

- Posted in Support by

(Disclaimer: Parts of this article are copied from our support page.)

Profiles are by far the most misunderstood features of all Mozilla-based software, like Firefox, Thunderbird and Betterbird. A profile contains the configuration data for these programs; for Firefox, for example, booksmarks, browsing history, cookies, website passwords, add-ons, etc.; for Thunderbird and Betterbird, all mail data, account configuration and other conficuration data, passwords, calendar and chat data, add-ons, etc.

Thunderbird and Betterbird store the profiles in the following locations:

  • Windows: C:\Users\<user>\AppData\Roaming\Thunderbird\
  • Linux: ~/.thunderbird/. Flatpak installations use so-called sandboxing and the profile is stored under ~/.var/app/eu.betterbird.Betterbird/.thunderbird. Please refer to the Flatpak documentation for details, there you can also find how to allow a Flatpak installation access to ~/.thunderbird/.
  • Mac: /Users/<user>/Library/Thunderbird/

To manage profiles, you can use the Profile Manager, which is launched when starting Betterbird with the -p option. This is different for the various operating systems:

  • Windows: "C:\Program Files\Betterbird\betterbird.exe" -p, or simply use Windows+R:
    Windows Run
  • Linux: /path/to/the/executable/betterbird -p
  • Mac: /Applications/Betterbird.app/Contents/MacOS/betterbird -p

Another option is to view all profiles via Help > Troubleshooting Information. Click on the about:profiles link which will take you to a tab where you can select a different default profile or create a new profile. In Troubleshooting Information you also find a button to open the profile folder in your configured file explorer: enter image description here

The next thing you need to understand that Firefox/Thunderbird 68 introduced the principle of "Profile per installation", that means if you install the software into a different location, it will no recognise a previously used profile, but you can still select it in the profile manager. Also, if you run a higher version of the software, a lower version will then refuse to open the same profile. This error is shown: older version error This can be overridden by using the command line option -allow-downgrade which is best combined with -purgecaches, resulting in a total of: betterbird -p -purgecaches -allow-downgrade. Alternatively you can delete compatibility.ini from your profile. If you intend to used the Developer Toolbox, you must delete chrome_debugger_profile/compatibility.ini.

Warning: Higher versions of Thunderbird/Betterbird make irreversible upgrades to the profile which may cause malfunction when opening the profile with a lower version. For example, Thunderbird 146 migrates password storage from logins.json to logins.db, so when downgrading you need to re-enter all your passwords (or restore the previous logins.json file).

Further tips

The "profile registry" is contained in the file profiles.ini in the directory given in the start of the article. This directory also stores a file installs.ini which is used to enforce the "Profile per installation" principle. Deleting installs.ini and compatibility.ini with allow you to select any profile in the Profile Manager without additional command line switches.

Reading profiles.ini: You can open the file in a text editor. Take great care editing the file, since on single mistake will make all profiles inoperational. We're just mentioning it, so users can inspect the file and become aware of profiles stored with a relative or absolute path. The former looks like this:

[Profile2]
Name=Testing
IsRelative=1
Path=Profiles/0l426a83.Testing

The latter looks like this:

[Profile3]
Name=Testing2
IsRelative=0
Path=D:\Mail-storage\h8fmflf2.Testing2

In conjunction with deleting installs.ini it is also possible to delete all [Install....] sections from profiles.ini.

Portable "Installations"

Portable installations don't take part in the overall profile management. Their profile is stored next to the executable (core folder), and the executable is launched with the -profile switch to use the portable profile. Do not intent to use portable profiles with an installed executable, or "registered" profiles with the portable executable. Do not launch the portable executable with the -p switch.

Import of data from the local PST files of a Microsoft Outlook profile was not working well in Thunderbird before 2011, when famous Russian developer Mike Kaganski*) re-implemented it in bug 207156. His work was committed here with this changeset. That was in 2011 in Thunderbird 6. Back then, our project leader was working with Mike, mostly doing testing. Mike did a few more tweaks, for example here and here, so the feature was stable that year in Thunderbird 11.

With the advent of JS Mime, a new implementation of MIME processing written in JavaScript, Outlook import broke again in Thunderbird 38 due to threading issues. The fix was made in this bug ready for Thunderbird 60 by our project leader.

(The text below has been corrected on 8th November 2025, the initial information was incorrect.)


It's been working since then, but the advent of Outlook 2013/2016/2019, Office 365 and the modern Outlook app have changed the situation. Here is what is still working to this very day:

Outlook version IMAP account with OST and optional PST files POP account with PST only
Up to 2010 ✅ Can import via full MAPI ✅ Can import via full MAPI
2013, 2016, 2019, O365 (classic desktop) ✅ Can import via full MAPI; attached PSTs also visible if part of the profile ❌ Cannot import, PST not exposed to external MAPI clients
Modern Outlook app ❌ Cannot import, no MAPI ❌ Cannot import, no MAPI

To import a PST with Outlook 2013/2016/2019 or Outlook 365 installed, add it to an IMAP profile (with OST file) as an additional data file.

This screenshot was taken after a successful import from Outlook 2010: enter image description here It is possible that modern versions of Betterbird/Thunderbird have additional bugs, so if there is an issue, we recommend using an older version, for example Thunderbird 12 (we didn't test it). Older versions also give a more informative summary panel that the new kids on the block who took over Thunderbird axed in version 128 (bug 1851608): enter image description here

If you're using Outlook 2013/2016/2019 or Outlook 365 on a POP account or the modern app, you will see this: enter image description here


*) Mike is famous for cracking bug 393302, the dreaded MAPI x64 bug, that no one had been able to solve and that prevented Thunderbird from shipping 64-bit binaries. That was back in 2019, and the fix was backported to Thunderbird 60.

Do you know which folders are shown in Thunderbird's "Recent" folder list? Well, in the context menu in version 140 that's been renamed to "Recent Destinations", so that could be a hint. The change was made in this bug.

This list appears in the context menu, but also in the Filter Rules Editor. Yes, the list contains folders into which messages have been moved recently, but only manually, not by filter. This is implemented via a folder property MRMTime, where MRM stands for "Most Recently Moved to Manually".

One user asked us why folders that were recently "used" or opened weren't in the "Recent" list, as it would make things a lot easier when defining new filters. We thought that was a valid arguments, and given that the "Quick Folder Move" add-on has used MRU for ages, we changed the behaviour in BB 140.3.1 to make the "Recent" list hold the most recently used folders.

But every change breaks someone's workflow. The first report we had was from someone who used the "Recent" list to move misclassified SPAM back to the Inbox. They only wanted to see their familiar move targets. The next report came from someone who really only wanted to see recent manual move destinations, instead of a very busy list that now records lots of folders.

To that add the fact that some don't think that the alphabetic order in that list is great, so they filed this bug.

BTW, the Thunderbird folks also considered making that change, but dropped the idea stating: ... by selecting a folder, it becomes "used". That means the "recent" context menu for a message entry will always include at least one entry (the current folder), and every folder being opened will be added. Since we have a limit of 25 folders in that menu, the folders used for actually moving or copying messages might no longer be listed.

FINAL VERDICT: We reverted the change but we're still using MRU folders in the Filter Editor. Try it here in English and German.

Busy Monday

- Posted in General by

Some Mondays are quiet, others are busy. Yesterday we had a very busy day fixing these bugs:

  1. Edit headers not working for local folders with maildir storage.
  2. Developer Toolbox not working in localised builds due to a repack error.
  3. Custom icon not working on about box and some other panels.
  4. Disappearing new lines in plain text edit. We picked up the report from a newsgroup. This was a bug in the upstream Mozilla editor.
  5. Account colours not respecting the preference for "full row colour" due an error in rebasing our patch to the 140 codebase.

We provided "latest build" versions of the current version 140.3.0, so affected users can use a fixed version straight away.

In the context of testing Edit headers, we discovered and upstream Thunderbird bug which led to the second edit on the same IMAP message not being reflected correctly in the message list and header pane. A regression in the Thunderbird 140 codebase, it was working in 115 and 128. The add-on Header Tools Improved is also affected. That bug we didn't manage to fix yet. (Update 28 Sept. 2025: Fixed!)

Betterbird’s most surprising feature

- Posted in Support by

We get a quite a few support requests regarding the keyboard accessibility of the splitters in the compose window.

Finally, we wrote this support section about it.