Sieve management in Thunderbird

Sieve management in Thunderbird requires to know (or be willing to learn) about the Sieve syntax in order to create your rules.

It's up to you really, but know that this is the harder way, and that easy mail filter management can be achieved from within our Sogo Groupware. It's also the recommended method (see documentation here).

Using sieve plugin in Thunderbird

Installation

The plugin should be found when search for 'Sieve' in Thunderbird extension search bar. It should lead you here.

Simply install the extension and you are now ready to go.

Configuration

Below is the workflow step by step to access and create your first Sieve filter. You can create multiple profiles, but keep in mind that only one at a time can be activated.

  • After the extension has been installed, you can access your Sieve scripts via Menu > Tools > Sieve Message Filters.

  • A new tab opens, with the list of your email accounts configured in Thunderbird. For each of those, you have an option to connect to the Sieve server.
    If you look at the Settings for one of those, you will see the current settings to connect to the Sieve server of your email account. For Nomagic it should like this:

  • Now back to the main tab, click on Connect

If it's your first script, you must fight should follow the guides which will ask you to name your new script.

  • In our case a script has been found on the mail server. You can Edit that script to see your current rules and modify them or add new ones.

Management

You are now where the magic happens. You have all the flexibility of Sieve at your fingertips.

I personally use the raw script view to set up my filters, which looks like this:

But you can also test / use the Script tab, which is useful to refer to also when you are looking for a specific Sieve keyword:

To be able to use the different actions, you need to import them first at the top of the file using require. You can do that as needs come, or put a quite general line like this:

require ["imap4flags","envelope","subaddress","fileinto","variables","vacation","reject","copy","mailbox"];

Example

In this example we are setting up a 'flag' rule, marking any email coming from management@nomagic.uk as important, based on the Thunderbird and/or Sogo flag colour numbers.

  • We identify flag Important as $label 1 from Thunderbird's preferences

  • We make sure at least the imap4flag action is activated, and we set up our filter.

Sieve plugin automatically checks for syntax error, which makes it very handy when you add / modify rules

It is strongly advised to keep a commented label of each of your rules, as shown on the screenshot, with the format:

# rule:[rules-description]
#
# Mail filters (server-side)
#
require ["imap4flags","envelope"];

if address :is :all "from" "management@nomagic.uk" {
	addflag "$label1";
}

That's it, all emails from NOMAGIC's management will be marked with the important flag as they arrive in your mailbox!

Filters are tested in the order that they appear in the file. If you want to avoid getting through all of them as you don't plan on having 2 filters applied to the same email, declare your filters in a series of if { .. } elsif { .. } elsif { .. }. That way the Sieve server will stop on the first match.

Example

if address :is :all "from" "management@nomagic.uk" {
	addflag "$label1";
}
# rule:[aide]
elsif envelope :detail "to" "aide"
{
	fileinto "INBOX.dev.aide";
}
# rule:[postfix]
elsif anyof (address :is "to" "postfix-users@postfix.org", address :is "cc" "postfix-users@postfix.org")
{
	fileinto "INBOX.postfix";
}

Vacation management

Vacation is plain Sieve syntax, using the right requirements you can set up vacation via your Sieve script.

I would suggest several ways to do that though.

  • Manual activation / deactivation
require ["fileinto","envelope","subaddress","vacation", "reject"];

# rule:[vacation]
if false # change to true and Save to activate the auto-reply.
{
	vacation :days 1 :addresses "tux@nomagic.uk" :subject "out of office: auto reply" text:
I am currently away from keyboard for some days.
I will reply when I get back.

  Cheers,

Tux
.
;
}
  • Automatic activation / deactivation of the auto-reply
require ["fileinto", "imap4flags", "mailbox", "copy", "body", "date", "vacation", "relational"];

# Vacation, update the date whenever needed
if allof ( not exists ["list-help", "list-unsubscribe", "list-subscribe", "list-owner", "list-post", "list-archive", "list-id", "Mailing-List"], not header :comparator "i;ascii-casemap" :is "Precedence" ["list", "bulk", "junk"], not header :comparator "i;ascii-casemap" :matches "To" "Multiple recipients of*", currentdate :value "ge" "date" "2021-11-10", currentdate :value "le" "date" "2021-11-17" ) {
  vacation :days 2 :addresses ["testing@nomagic.uk", "tux@nomagic.uk"] text:
Hello,
I am currently away from keyboard for some days.
I will reply when I get back.

  Cheers,

Tux
.
;
}

days 2 here means that, for a single email address sending us several emails over the days, an auto-reply email should be sent only every 2 days.

Troubleshooting

The Sieve Thunderbird extension comes with automatic syntax check, and will prevent you from saving until your file is 'clean'. Thus, troubleshooting is made fairly easy.

Additional resources