ProtonMail allows users to define Sieve filters for filtering e-mail messages. It has proven to be an killer feature when paired with message expiration.

For example, the following filter applies a label to e-mails from the Buildroot mailing list. Messages that I’m included in are flagged, while all other messages are archived and expire after three days. Also, I’m typically only interested in new patches so I mark all other messages as seen.

if anyof (address :domain ["to", "cc"] "",
          address :is ["to", "cc"] "[email protected]",
          address :is ["to", "cc"] "[email protected]")
  fileinto "buildroot";
  if address :domain ["from", "to", "cc"] ""
    addflag "\\Flagged";
  } else {
    if not header :matches "subject" ["*[Buildroot] [PATCH]*", 
                                      "*[Buildroot] [PATCH 1*"]
      addflag "\\Seen";
    fileinto "Archive";
    expire "day" "3";

The only drawback of the expiration feature is that it is not possible to revoke an expiration once it has been applied.

Managing Protonmail keys

Note that every alias has it’s own corresponding key pair and each reset will generate a new set of keys. That can grow into a lot of keys to manage so try to only create aliases when you’ll actually use them.

It is important to download and back-up your public and private key pairs, which can be found under the settings. I have stored them in a local password manager.


Although I found the e-mail filtering and expiration features to be more appealing, ProtonMail is primarily focused on security. Unfortunately, the security features may also become onerous. For example, it appears that ProtonMail encrypts all mail using a single password. If that password is lost then it will be impossible to decrypt your mail. They also require a proprietary local proxy on your host to decrypt mail from their servers. Although these may be desirable features for people concerned with security I found them to be more of an inconvience or potentially extremely problematic.

Migadu provides sieve filtering through a Dovecot ManageSieve server, which can be configured using a Thunderbird add-on. They also support Yubikey 2FA and wildcard aliases.

Unfortunately, they do not natively support mail expiration. Additionally, ProtonMail made writing Sieve filters easy and provided numerous extensions. Most importantly, Sieve servers only allow a single filter to be activated at a time, but ProtonMail provided a nice interface for writing numerous filters.

Migadu supports the following extensions (as of 8/1/2020):

fileinto reject envelope encoded-character vacation subaddress
comparator-i;ascii-numeric relational regex imap4flags copy include variables
body enotify environment mailbox date index ihave duplicate mime foreverypart
extracttext imapsieve vnd.dovecot.imapsieve

See Dovecot Sieve plugin for more information.