I've started consolidating my domains' mail and calendaring services under Google Apps. Besides being free for the standard edition, Google provides many of the same services I was using at my previous host, LuxSci, plus group calendaring, docs, etc. However, the support of labels in Gmail is what has really intrigued me.
I've been an IMAP user for years. I'm extremely organized with my email, using a large number of filters on MacOS X's Mail.app to filter email into the right folder for organization. Unfortunately, when I got my iPhone last summer, I began to realize this strategy had its problems. Namely, if Mail.app is downloading and filtering email to folders other than the Inbox, I would miss them on my iPhone, due to its failure to synchronize the entire IMAP folder structure. To handle this, I would disable mail checking from my Mac when I was away from it, allowing all mail to flow to my inbox where I could check it on my iPhone. Unfortunately, it means the hundreds of emails I receive daily from mailing lists were causing me to check email incessantly, often to be dissapointed to only find mailing list messages which could wait to be reviewed later. There had to be a better way.
My goal was to have mailing list email automatically filtered to the appropriate folder, skipping the inbox and the related notification(s) while allowing friends and family mail to hit my inbox where I was guaranteed to see it in a timely manner. This would require strong filtering on the server, which GMail provides (sort of... more on this in a moment). I also want to ensure that seen friends and family mail is filtered into the appropriate mailbox as well, requiring a filter that runs occassionally to move read mail to its organized spot in my mail hierarchy. Unfortunately, this is not supported by GMail.
What's a geek to do? While researching the use of labels for GMail I realized that I could have inbound email skip the inbox for mailing lists (yay!) and I could label friends and family mail with the appropriate label, i.e. [Gmail]/Friends, while retaining the default Inbox label as well. Mail.app treats Gmail labels as IMAP folders, therefore, mail labeled with Inbox and [Gmail]/Friends will appear in both my Inbox and my friends folder at the same time! More importantly, if I read the mail in either folder, it is automatically marked as read in both folders with a slight lag-time between IMAP folder synchronizations. But the best part is that if I delete the mail from Inbox, it only removes the Inbox label, effectively "archiving" the mail in my friends folder. Suh-weet! So how does this work in practice?
Let's say an email from a friend arrives and is placed in the inbox and friends folder. If I am using my iPhone, I receive a notification and read the email. I can delete the email from the inbox, removing the label and ensuring that it is archived in the Friends mailbox. If I am using Mail.app, I'll probably first notice the email in my Friends folder and read it there. In either case, it is marked as read and won't show in the unread count in either folder. This is almost ideal, except that when I am using Mail.app the email shows up in both mailboxes, a less than stellar behavior, but one I can deal with. Also, if I read the email in my Friends folder, a copy of the read email still remains in the Inbox where I have to manually delete it. I may handle this with a filter in Mail.app to clean up such occurrences in the future, but for now it doesn't seem to be a big issue since the vast majority of my email is from mailing lists.
The biggest problem I have so far is with Gmail's filtering. It is teh suck. I need a few abilities that it doesn't support:
- Filter ordering and a "stop processing rules" function on filter actions. I need mailing list filters to run first and then friends, family and other filters. Too many people are friends and regular mailing list posters and I don't want to have mailing list mail show up in my inbox, the appropriate mailing list and my friends mailbox. For now, all friends filters must also contain a filter which doesn't match mail sent to mailing lists.
- Filtering based on contact groups. Instead of writing a filter to use many different email addresses, all of which get pushed to the same folder, I should be able to filter based on the group a contact belongs to instead. This will make filter management a LOT easier.