Skip to content
Philippe Lieser edited this page Apr 2, 2023 · 17 revisions

At the moment one can chose between two resolvers, the JavaScript DNS library and libunbound.

If the Get DNS servers from OS configuration option is enabled, the resolvers will first try to use the DNS servers configured in the OS. If this does not work, the configured DNS name servers in the add-on options are used as fallback.

More than one DNS server can be specified by separating them with a ";".

JavaScript DNS library

Note that this resolver can only connect via TCP to the DNS servers, not UDP. So if you use this resolver, make sure your configured DNS servers accept queries over TCP. DNS servers who accept TCP connections are for example the Google Public DNS servers 8.8.8.8 and 8.8.4.4.

The resolver will wait the time specified in DNS connection timeout to try to connect to the DNS server. If establishing the connection fails, the DNS server is marked as being down, and the next DNS Server is tried. At the start of Thunderbird, or the changing of the DNS servers in the option, all DNS servers are marked as alive.

A SOCKS v5 or SOCKS v5 Proxy can be configured to be used for the connection to the DNS servers. The Proxy is only used for the JavaScript DNS library and not for the libunbound resolver.

This resolver does not support DNSSEC. Use the libunbound resolver instead.

Advanced options

dns.jsdns.autoResetServerAlive (Boolean)

If set to true, all DNS servers are set to alive again after a no DNS Server alive error occurs.

extensions.dkim_verifier.dns.timeout_read_write (Integer)

Removed in 4.0.0. It will now have the same value as DNS connect timeout

Timeout for sending and receiving data to the DNS server. To enable it, the preference must first be created.

libunbound

For this resolver to work, you need the libunbound library, and set the correct path to it. See bellow for a few sample configurations for different operation systems.

libunbound supports DNSSEC. Under the advanced options, you can specify how a DKIM key that was not signed by DNSSEC should be treated. You can also mark stored DKIM keys subsequently as being secure.

Important: libunbound accepts only IP4 or IP6 addresses (without port) for the DNS name servers.

[Windows] Use a pre-build libunbound library

For Windows, builds of the libunbound library are provided at https://github.com/lieser/libunbound-builds.

  1. Download the latest release from https://github.com/lieser/libunbound-builds/releases.
    • Make sure you download the same version (32-bit/64-bit) as your Thunderbird installations has. If you are unsure which version of Thunderbird you have, check under Help > About Thunderbird.
  2. Open the zip file and copy the included libunbound-8.dll file to the extensions folder in your Thunderbird profile.
    • You can also chose a different location.
  3. Open the DKIM_Verifier's Options > General > DNS.
  4. Select Resolver libunbound.
  5. Set the path to extensions/libunbound-8.dll.
    • Make sure you adapt this and the following step if you have chosen a different location in step 2.
  6. Enable Path relative to profile directory.

[Linux] Install the libunbound library with the package manager

  1. Install the libunbound2 package.
  2. Open the DKIM_Verifier's Options > General > DNS
  3. Select Resolver libunbound
  4. Set path to libunbound.so.2.
  5. Disable Path relative to profile directory.

Tested under Ubuntu.

[OSX] Install from Source

  1. Download and install libunbound from https://www.unbound.net/download.html
  2. Open the DKIM_Verifier's Options > General > DNS
  3. Select Resolver libunbound
  4. If you have also installed the unbound server daemon and want to use it for caching:
  5. Disable Get DNS server from OS configuration
  6. Set DNS server to 127.0.0.1:53
  7. Disable Path relative to profile directory
  8. Set path to [your-prefix-here]/lib/libunbound.2.dylib
  9. Restart Thunderbird

Advanced options

dns.dnssec.trustAnchor (String)

Trust anchor to use for DNSSEC. Multiple trust anchors can be specified by seperating them with ;.

Multiple trust anchors supported since version 1.7.0

extensions.dkim_verifier.dns.libunbound.conf (String)

In 4.x this must still be set via Thunderbird's config editor

Path to a unbound.conf file to be loaded through ub_ctx_config.

extensions.dkim_verifier.dns.libunbound.debuglevel (Integer)

In 4.x this must still be set via Thunderbird's config editor

A debug level to be set through ub_ctx_debuglevel.