Weekly Journal 56 - imapfilter, sieve


I discovered that my email host, Migadu, has support for sieve.


sieve is a language for writing email filters. The main reason I get excited about sieve is that many IMAP servers support sieve filtering on the server. This means my email gets filtered into separate folders before any of my email clients see the messages. This means I get a consistent view of my mailbox regardless of which device I happen to be on.

Another advantage of sieve is my phone only receives notifications for email that lands in my inbox. I don’t really want a notification for the various mailing lists messages I get. That ends up being a lot of noise and distraction for messages that are not urgent. I prefer to sort them on arrival, and then I can check them at my leisure.

I use a program called sieve-connect to work with the rules file as Migadu doesn’t provide shell access.


Prior to discovering Migadu’s sieve support, I was using imapfilter to sort my email. imapfilter uses Lua as a configuration language, so you can build really sophisticated and complex rule sets if you need to. The only thing I don’t like about imapfilter is the need to run it on the client side.

imapfilter will still have a place in my email processing toolchain. sieve processes mail when it arrives, but isn’t capable of manipulating messages after they’ve arrived. One of the scripts I’ve built for imapfilter automatically deletes messages in select folders. I find this incredibly useful for automatically cleaning out old marketing messages after the offer has expired.

I am keeping the rules around deleting old messages, and I’m working on setting it up on one of my own systems to run daily as a cron job or similar.

What’s Next?

Looks like snow removal is going to be a big part of my near future. I’ll be glad when these snow storms finally clear out.