Link Guard Thunderbird v0.14.0 Source on GitHub

Host lists

Host lists let you share approvals and blocks between computers or people: an allowlist approves hosts, a blocklist blocks them. Lists are imported in Settings from a JSON file or an HTTPS URL, shown for review, and start disabled.

Lists are treated as untrusted input. A blocklist can only remove access, never grant it; an allowlist cannot unlock links with a warning; and every list is validated strictly before you see it.

Format

{
  "format": "link-guard-hosts",
  "version": 1,
  "kind": "block",
  "name": "My blocklist",
  "category": "other",
  "hosts": ["phishing.example.org", "*.example.net"]
}
Field Required Value
format yes always "link-guard-hosts"
version yes always 1
kind no "allow" (default) or "block"
name yes 1 to 60 characters; no control characters, no < or >, no bidirectional control characters
category yes "news", "social", "companies" or "other" – a label for your overview only
hosts yes 1 to 5,000 unique entries (see below)

No other fields are allowed; a list with an unknown field is rejected.

Entries

Limits

Limit Value
File size 512 KiB (524,288 bytes, UTF-8)
Entries per list 5,000
Imported lists 20

Examples

The repository contains ready-made examples: allowlist and blocklist.

How lists take effect

Allowlist Blocklist
Effect when enabled approves its exact hosts blocks its hosts and *. domains
Overrides your approvals – yes
Unlocks links with a warning no – they need an exact approval –
Can be overridden by your exact block, your whole-domain block, any enabled blocklist nothing – change or disable the list
Updates itself never optionally, about once a day

While an enabled blocklist blocks a host, approving that host permanently is refused; disable the list or edit its entries first. In a message, such a host shows a note and Open settings instead of the usual actions.

Remote sources

A list can be loaded from an HTTPS URL. The fetch is deliberately strict:

Requirement Detail
Protocol https:// only
URL no user name or password, no port, no ?query, no #fragment; must point to a file, not to a directory ending in /; the host must be a domain name, not an IP address
CORS the server must allow cross-origin requests, for example with Access-Control-Allow-Origin: *
Redirects not followed – the URL must answer directly
Content type application/json or text/plain
Size at most 512 KiB for host lists and 64 KiB for warning lists; larger responses are aborted
Encoding valid UTF-8
Time aborted after 10 seconds

Requests are sent without cookies or other credentials, without a referrer, and bypass the cache. They contain no information about your mail.

Hosting a list

Any static host that sends a CORS header works. Two simple options:

Avoid URLs that redirect, for example from http:// to https:// or to a CDN; they are rejected.

Automatic updates

Remote blocklists can keep themselves up to date. Each has the option Update automatically about once a day (replaces local edits), which is on by default when you import it. Allowlists and warning lists never update themselves, and disabled lists are never fetched.

When an update is due, Link Guard fetches the list with the same restrictions as a manual import. Checks happen when Thunderbird starts and whenever a message is displayed, at most about once a day per list, and about an hour after a failed attempt.

An update replaces only the entries of a list that is still enabled and still a blocklist from the same URL. It never enables a list and never approves anything. It is held for your review instead of applied if it:

The list card in Settings shows the outcome:

Message Meaning
Last automatic check: <date> the update was applied or nothing changed
Automatic update failed on <date>. The previous list stays active. the source could not be fetched or was invalid
The source now declares a different list type, so the list was not changed. Review it manually. the source turned from a blocklist into an allowlist
The automatic update was not applied because it is large or would block something you approved. The previous list stays active; use "Review remote update". one of the review conditions above applied

In every case except a successful update, the stored list stays exactly as it was.

Trust and privacy