Use aliases for filtering.
Many e-mail providers permit the use of '+' aliases. With a '+' alias, you can have a '+' and extra characters after the username and before the domain name.
Gmail allows this. So does protonmail. Some others do not.
For example, suppose that your e-mail address is badmoonrisin@proton.me. If you were giving your address to texasbeer.com, you could give them badmoonrisin+texasbeer@proton.me. Don't give that alias to anyone else. If you start getting spammed at it, then you know that texasbeer.com gave away your address to third parties.
If all of your incoming e-mail was to aliases, then you could automagically filter out e-mail coming to your regular account as spam. Of course, if ProtonMail sends you something, they would use the non-alias e-mail address so you should handle them first.
The scheme that I use is to use the 2400 hour time and a few characters in the e-mail addresses. So if I was placing an order with NewEgg right now, for example, I might use example+0451ne@proton.me when providing an e-mail address to NewEgg.
One problem is that you cannot enter the alias to send out an e-mail. If you compose an e-mail to me, for example, you could not enter it as badmoonrisin+0455e76@proton.me. There is a way around it -- send yourself an e-mail to badmoonrisin+0455e76@proton.me and then reply to it but change the to address to my address. I would then see the return address as badmoonrisin+0455e76@proton.me rather than badmoonrisin@proton.me.
You could even allow only e-mail coming to an alias with the use of their sieve filtering.
For example, you could have incoming filters like this to allow newegg and me to send you e-mail and not anyone else:
The eric76 filter:
if anyof
(
envelope :all :is "To" "badmoonrisin+0455e76@proton.me", # incoming e-mail
envelope :all :is "From" "badmoonrisin+0455e76@proton.me" # outgong e-mail
)
{
addflag "\\Flagged"; # star the e-mail
filterinto "texagers"; # sve in the texagers folder
filterinto "eric76"; # add the eric76 label
stop; #no more filtering on this message
}
# the New Egg filter
if anyof
(
envelope :all :is "To" "badmoonrisin+0451ne@proton.me", # incoming e-mail
envelope :all :is "From" "badmoonrisin+0451ne@proton.me" # outgong e-mail
)
{
addflag "\\Flagged"; # star the e-mail
filterinto "vendors"; # sve in the vendors folder
filterinto "New Egg"; # add the NewEgg label
stop; #no more filtering on this message
}
To handle protonmail e-mail (note that the space between the : and the domain below is there to keep it from being displayed as

omain):
if anyof
(
address : domain :contains ["From", "To", "Cc", "Bcc"]
["protonmail.zendesk.com", "news.protonmail.com", "notify.proton.me", "news.proton.me"],
address :all :contains ["From", "To", "Cc", "Bcc"]
["contact@protonmail.com", "usersfeedback@protonmail.com"]
)
{
addflag "\\Flagged"; # star the e-mail
fileinto "_Admin"; # store in the _Admin folder
fileinto "protonmail"; "# apply the protonmail label
stop;
}
And then in the final filter, you can delete the e-mail, put it in the spam folder, or even return it as undeliverable (note that the stops in the preceding filters are necessary to keep them from being handled again by this filter):
if header :contains "Delivered-To" "badmoonrisin@proton.me"
(
reject "Don't send e-mail to badmoonrisin@proton.me."
}
One problem of course is that not all web site developers are smart enough to recognize the '+' as a valid character. This can be kind of aggravating.
Some services use a '-' alias instead of a '+' alias. There are two advantages to this:
1) Few would see a '-' alias as being an alias and instead see it as part of your normal e-mail address. With a '+' alias they might strip off the alias portion or change it.
2) Web site developers generally aren't so ignorant as to reject e-mail with hyphens in the username as being invalid.
The obvious question is how many letters can you put in an alias? The maximum length of an e-mail address is 255 characters or so. However, some sights restrict the username portion to 64 characters.
A couple of years ago, I sent a "Merry Christmas to an old fried of mine with an alias. Assume his address was example@gmail.com (not his username, but he has a gmail address), then the e-mail went to:
example+3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909@gmail.com
He was kind of surprised to see the first 225 digits of pi in his e-mail address.
The filters above should work. I simplified a bit just to remove some clutter. In particular, instead of
envelope :all :is "To" "badmoonrisin+0455e76@proton.me"
I would actually use:
envelope :all :comparator "i;unicode-casemap" :is "To" "badmoonrisin+0455e76@proton.me"
Either should work, but the latter would also handle e-mail with unicode used in the headers.
Also, other than the protonmail filter, I did those from memory and didn't actually check for errors.